Skip to content

Commit 95f890c

Browse files
authored
fix how delayed events are sent/resolved (#78)
* fix how delayed events are sent/resolved * bump version
1 parent d57a393 commit 95f890c

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

pyproject.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ ignore_missing_imports = true
44

55
[tool.poetry]
66
name = "pyth-observer"
7-
version = "0.2.13"
7+
version = "0.2.14"
88
description = "Alerts and stuff"
99
authors = []
1010
readme = "README.md"

pyth_observer/dispatch.py

+14-11
Original file line numberDiff line numberDiff line change
@@ -89,11 +89,10 @@ async def run(self, states: List[State]):
8989
"failures": 1,
9090
"last_window_failures": None,
9191
"sent": False,
92-
"event_type": event_type,
9392
}
9493
else:
9594
alert["failures"] += 1
96-
self.delayed_events[alert_identifier] = event
95+
self.delayed_events[f"{event_type}-{alert_identifier}"] = event
9796
continue # Skip sending immediately for ZendutyEvent or TelegramEvent
9897

9998
sent_events.append(event.send())
@@ -188,10 +187,7 @@ async def process_zenduty_events(self, current_time):
188187
):
189188
logger.debug(f"Resolving Zenduty alert {identifier}")
190189
resolved = True
191-
if (
192-
info["sent"]
193-
and info.get("event_type", "ZendutyEvent") == "ZendutyEvent"
194-
):
190+
if info["sent"]:
195191
response = await send_zenduty_alert(
196192
identifier, identifier, resolved=True
197193
)
@@ -212,16 +208,23 @@ async def process_zenduty_events(self, current_time):
212208
logger.debug(f"Raising Zenduty alert {identifier}")
213209
self.open_alerts[identifier]["sent"] = True
214210
self.open_alerts[identifier]["last_alert"] = current_time.isoformat()
215-
event = self.delayed_events.get(identifier)
216-
if event:
217-
to_alert.append(event.send())
211+
for event_type in ["ZendutyEvent", "TelegramEvent"]:
212+
key = f"{event_type}-{identifier}"
213+
event = self.delayed_events.get(key)
214+
if event:
215+
to_alert.append(event.send())
218216

217+
# Send the alerts that were delayed due to thresholds
219218
await asyncio.gather(*to_alert)
219+
220+
# Remove alerts that have been resolved
220221
for identifier in to_remove:
221222
if self.open_alerts.get(identifier):
222223
del self.open_alerts[identifier]
223-
if self.delayed_events.get(identifier):
224-
del self.delayed_events[identifier]
224+
for event_type in ["ZendutyEvent", "TelegramEvent"]:
225+
key = f"{event_type}-{identifier}"
226+
if self.delayed_events.get(key):
227+
del self.delayed_events[key]
225228

226229
with open(self.open_alerts_file, "w") as file:
227230
json.dump(self.open_alerts, file)

0 commit comments

Comments
 (0)