mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-23 14:52:26 +00:00
68 lines
2.4 KiB
Python
68 lines
2.4 KiB
Python
|
|
||
|
import re
|
||
|
|
||
|
umidmap = {
|
||
|
'lp1vaQ': 'download-not-enough-shares',
|
||
|
'3uuBUQ': 'download-connection-lost-in-get-buckets',
|
||
|
'LkD9Pw': 'user-incident-button',
|
||
|
}
|
||
|
|
||
|
def classify_incident(trigger):
|
||
|
m = trigger.get('message', '')
|
||
|
f = trigger.get('format', '')
|
||
|
|
||
|
umid_value = umidmap.get(trigger.get('umid',''), None)
|
||
|
if umid_value:
|
||
|
return umid_value
|
||
|
|
||
|
if re.search(r"^they had shares .* that we didn't know about$", m):
|
||
|
# Publish._got_write_answer
|
||
|
return "mutable-publish-surprise-shares"
|
||
|
|
||
|
if m.startswith("error during query"):
|
||
|
# there are a couple of different places that can generate this
|
||
|
# message (the result of cut-and-paste error-handling), so it isn't
|
||
|
# clear which is which
|
||
|
|
||
|
if re.search(r'mutable/servermap\.py.*_do_query', m):
|
||
|
# servermap.ServermapUpdater._query_failed()
|
||
|
where = "mapupdate"
|
||
|
elif re.search(r'mutable/retrieve\.py.*_got_results_one_share', m):
|
||
|
where = "retrieve"
|
||
|
else:
|
||
|
where = "unknown"
|
||
|
|
||
|
if ("Calling Stale Broker" in m and "DeadReferenceError" in m):
|
||
|
# a storage server went offline while we were talking to it (or
|
||
|
# because the client was shut off in the middle of an operation)
|
||
|
what = "lost-server"
|
||
|
elif "IOError" in m:
|
||
|
what = "ioerror"
|
||
|
elif ("UncoordinatedWriteError" in m and
|
||
|
"someone wrote to the data since we read the servermap" in m):
|
||
|
what = "uncoordinated-write-error"
|
||
|
elif "ConnectionLost" in m:
|
||
|
what = "lost-server"
|
||
|
else:
|
||
|
what = "unknown"
|
||
|
|
||
|
return "mutable-" + where + "-query-" + what
|
||
|
|
||
|
if (f.startswith("ran out of peers:") and
|
||
|
"have" in trigger and "need" in trigger):
|
||
|
return "mutable-retrieve-failure"
|
||
|
if m.startswith("invalid privkey from "):
|
||
|
# TODO: a UCW causes this, after the prefix has changed. Compare the
|
||
|
# prefix before trying to validate the privkey, to avoid the
|
||
|
# duplicate error.
|
||
|
return "mutable-mapupdate-bad-privkey"
|
||
|
|
||
|
if trigger.get('facility', '') == "tahoe.introducer":
|
||
|
if (trigger.get('isError', False)
|
||
|
and "ConnectionDone" in str(trigger.get('failure',''))):
|
||
|
return "introducer-lost-connection"
|
||
|
if "Initial Introducer connection failed" in m:
|
||
|
return "introducer-connection-failed"
|
||
|
|
||
|
return None
|