Oliver Kieselbach
7fa50d09c1
perf(maintenance): one projected 35d Sessions scan shared by all rolling sweeps
...
The cross-tenant StartedAt-only date-range query is a full-table drain in
Table Storage; time attribution, device journeys, verdict calibration and the
calibration radar's tenant discovery each ran their own — four identical reads
per 2h tick. RunAllAsync / RunManualAsync now load the window once through
GetMaintenanceWindowSessionsAsync (MaintenanceSweepSessionProjection: the union
of the sweeps' columns, drops FailureSnapshotJson/geo/OS/diagnostics) and the
sweeps slice it by StartedAt. MaintenanceSweepProjectionEquivalenceTests pins
that every consumed field survives the projection.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
2026-08-23 12:19:41 +02:00
..
2026-08-02 16:32:13 +02:00
2026-08-21 14:13:46 +02:00
2026-06-05 14:56:41 +02:00
2026-08-22 21:00:53 +02:00
2026-07-29 13:53:12 +02:00
2026-07-23 08:37:42 +02:00
2026-08-18 10:21:26 +02:00
2026-06-05 14:56:41 +02:00
2026-07-31 18:59:21 +02:00
2026-08-22 21:09:12 +02:00
2026-08-23 11:22:17 +02:00
2026-07-31 18:59:21 +02:00
2026-05-26 14:40:28 +02:00
2026-08-21 13:57:16 +02:00
2026-07-31 19:52:23 +02:00
2026-08-20 01:24:59 +02:00
2026-08-20 01:24:59 +02:00
2026-08-14 16:07:39 +02:00
2026-08-03 14:30:05 +02:00
2026-04-25 12:26:34 +02:00
2026-05-18 23:06:51 +02:00
2026-06-09 22:43:39 +02:00
2026-05-12 17:00:00 +02:00
2026-07-28 21:42:56 +02:00
2026-02-28 17:33:46 +01:00
2026-02-28 17:33:46 +01:00
2026-02-28 13:12:09 +01:00
2026-08-20 22:30:10 +02:00
2026-05-04 18:36:37 +02:00
2026-07-31 13:04:47 +02:00
2026-03-31 03:07:52 +02:00
2026-08-23 00:50:10 +02:00
2026-08-23 02:30:40 +02:00
2026-08-23 00:50:10 +02:00
2026-08-23 11:06:37 +02:00
2026-05-28 12:31:32 +02:00
2026-08-21 13:40:47 +02:00
2026-08-23 11:06:37 +02:00
2026-08-21 00:44:29 +02:00
2026-08-13 23:17:48 +02:00
2026-08-21 14:13:46 +02:00
2026-04-08 16:57:50 +02:00
2026-07-11 10:59:31 +02:00
2026-08-10 13:41:14 +02:00
2026-03-27 11:14:38 +01:00
2026-06-26 13:11:14 +02:00
2026-05-08 18:32:22 +02:00
2026-04-05 13:36:02 +02:00
2026-07-31 18:59:21 +02:00
2026-08-23 00:50:10 +02:00
2026-08-17 21:33:37 +02:00
2026-08-03 10:20:27 +02:00
2026-07-03 16:06:39 +02:00
2026-07-03 13:49:32 +02:00
2026-07-23 08:37:42 +02:00
2026-08-23 11:06:37 +02:00
2026-08-23 12:19:41 +02:00
2026-08-13 13:39:03 +02:00
2026-05-08 16:16:12 +02:00
2026-08-23 12:19:41 +02:00
2026-08-23 12:19:41 +02:00
2026-07-31 18:59:21 +02:00
2026-07-27 09:10:52 +02:00
2026-07-18 16:38:15 +02:00
2026-08-23 12:19:41 +02:00
2026-08-23 12:19:41 +02:00
2026-07-31 13:04:47 +02:00
2026-07-31 13:04:47 +02:00
2026-07-20 11:29:53 +02:00
2026-04-02 21:25:27 +02:00
2026-08-23 11:39:06 +02:00
2026-08-20 22:30:10 +02:00
2026-08-02 17:33:59 +02:00
2026-07-31 13:04:47 +02:00
2026-07-07 11:26:29 +02:00
2026-04-24 13:39:47 +02:00
2026-08-21 00:44:29 +02:00
2026-08-23 11:06:37 +02:00
2026-08-05 17:24:28 +02:00
2026-02-28 13:12:09 +01:00
2026-08-23 11:06:37 +02:00
2026-08-11 14:38:33 +02:00
2026-08-13 23:17:48 +02:00
2026-07-29 02:39:56 +02:00
2026-07-26 16:24:45 +02:00
2026-03-17 13:46:43 +01:00
2026-08-13 23:17:48 +02:00
2026-05-26 15:19:07 +02:00
2026-07-28 11:44:46 +02:00
2026-07-27 08:14:13 +02:00
2026-07-27 10:52:39 +02:00
2026-05-12 23:44:20 +02:00
2026-08-23 12:19:41 +02:00
2026-08-21 13:40:47 +02:00
2026-05-26 14:40:28 +02:00
2026-08-21 14:13:46 +02:00
2026-04-14 23:42:10 +02:00
2026-08-23 11:06:37 +02:00
2026-08-21 19:41:56 +02:00
2026-08-23 11:22:17 +02:00
2026-07-31 14:30:57 +02:00
2026-08-13 17:51:59 +02:00
2026-08-22 23:26:32 +02:00
2026-08-22 21:00:53 +02:00
2026-08-03 14:30:05 +02:00
2026-08-22 21:00:53 +02:00
2026-08-13 13:39:03 +02:00
2026-05-08 18:32:22 +02:00
2026-07-11 12:10:56 +02:00