mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2024-12-18 20:47:54 +00:00
misc/incident-gatherer: add classify_tahoe.py: a foolscap incident-gatherer classification plugin
This commit is contained in:
parent
8a6d1e5da6
commit
f3d730428f
67
misc/incident-gatherer/classify_tahoe.py
Normal file
67
misc/incident-gatherer/classify_tahoe.py
Normal file
@ -0,0 +1,67 @@
|
||||
|
||||
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
|
Loading…
Reference in New Issue
Block a user