diff --git a/warden3/contrib/connectors/hp-labrea/labrea-idea.py b/warden3/contrib/connectors/hp-labrea/labrea-idea.py index 1d383c07773c817b6173a14e172da74da981c156..3bb95569cea42fc6d2e4638e0083c410fc05250a 100755 --- a/warden3/contrib/connectors/hp-labrea/labrea-idea.py +++ b/warden3/contrib/connectors/hp-labrea/labrea-idea.py @@ -103,16 +103,16 @@ class WindowContextMgr(object): def expire_queue(self, queue, time_key, window): aggr_events = [] while queue: - ctx = queue[0][1] - if ctx not in self.contexts: - # event went away while processing another queue, so just clean up + timestamp, ctx = queue[0] + if ctx not in self.contexts or timestamp < self.contexts[ctx][time_key]: + # event went away while processing another queue or obsolete record so just clean up heapq.heappop(queue) - elif self.contexts[ctx][time_key] < self.update_timestamp - window: + elif timestamp < self.update_timestamp - window: heapq.heappop(queue) closed = self.ctx_close(self.contexts[ctx]) if closed is not None: aggr_events.append(closed) - del self.contexts[ctx] + del self.contexts[ctx] else: break return aggr_events