WARN when we see 10 labeled-responses while waiting for a response to a line

This commit is contained in:
jesopo 2019-06-05 12:11:14 +01:00
parent 0d64f55215
commit 8a536c3ac5

View file

@ -9,6 +9,12 @@ CAP_TO_TAG = {
"draft/labeled-response-0.2": "draft/label" "draft/labeled-response-0.2": "draft/label"
} }
class WaitingForLabel(object):
def __init__(self, line, events):
self.line = line
self.events = events
self.labels_since = 0
class Module(ModuleManager.BaseModule): class Module(ModuleManager.BaseModule):
@utils.hook("new.server") @utils.hook("new.server")
def new_server(self, event): def new_server(self, event):
@ -31,8 +37,8 @@ class Module(ModuleManager.BaseModule):
label = str(uuid.uuid4()) label = str(uuid.uuid4())
event["line"].tags[tag_key] = label event["line"].tags[tag_key] = label
event["server"]._label_cache[label] = [event["line"], event["server"]._label_cache[label] = WaitingForLabel(event["line"],
event["events"]] event["events"])
@utils.hook("raw.received") @utils.hook("raw.received")
def raw_recv(self, event): def raw_recv(self, event):
@ -48,5 +54,11 @@ class Module(ModuleManager.BaseModule):
self._recv(event["server"], label, event["batch"].get_lines()) self._recv(event["server"], label, event["batch"].get_lines())
def _recv(self, server, label, lines): def _recv(self, server, label, lines):
cached_line, cached_events = server._label_cache.pop(label) cached = server._label_cache.pop(label)
cached_events.on("labeled-response").call(lines=lines) cached.events.on("labeled-response").call(lines=lines)
for label, other_cached in server._label_cache.items():
other_cached.labels_since += 1
if other_cached.labels_since == 10:
self.log.warn("%d labels seen while waiting for response to %s",
[other_cached.labels_since, label])