perf(monitors): a monitor's latest results by a LATERAL probe, not row_number over its history (#5208)
_last_n_results (Status, the monitors list, host monitors), host_status (hosts overview, list_hosts) and the report's down-monitor list each ranked every result a monitor ever recorded to keep the newest few. Each monitor now gets ORDER BY checked_at DESC LIMIT n in a LATERAL subquery, which walks ix_monitor_results_monitor_checked backwards and stops. Also fixes the latest-table test, which read between two begin() blocks and so autobegan a transaction the second block then refused. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+7
-22
@@ -102,28 +102,13 @@ async def build_report_data(app) -> dict:
|
||||
]
|
||||
|
||||
# ── Monitors currently down (latest result is_up = false) ─────────────
|
||||
latest_subq = (
|
||||
select(MonitorResult.monitor_id, func.max(MonitorResult.checked_at).label("max_at"))
|
||||
.group_by(MonitorResult.monitor_id)
|
||||
.subquery()
|
||||
)
|
||||
down_result = await db.execute(
|
||||
select(Monitor.name)
|
||||
.join(MonitorResult, MonitorResult.monitor_id == Monitor.id)
|
||||
.join(
|
||||
latest_subq,
|
||||
and_(
|
||||
MonitorResult.monitor_id == latest_subq.c.monitor_id,
|
||||
MonitorResult.checked_at == latest_subq.c.max_at,
|
||||
),
|
||||
)
|
||||
.where(
|
||||
Monitor.enabled.is_(True),
|
||||
MonitorResult.is_up.is_(False),
|
||||
)
|
||||
.order_by(Monitor.name)
|
||||
)
|
||||
hosts_down = [row.name for row in down_result]
|
||||
from steward.core.status import _last_n_results
|
||||
enabled = (await db.execute(
|
||||
select(Monitor.id, Monitor.name).where(Monitor.enabled.is_(True))
|
||||
)).all()
|
||||
latest = await _last_n_results(db, [m.id for m in enabled], n=1)
|
||||
hosts_down = sorted(name for mid, name in enabled
|
||||
if latest.get(mid) and not latest[mid][-1].is_up)
|
||||
|
||||
return {
|
||||
"generated_at": now,
|
||||
|
||||
Reference in New Issue
Block a user