n0ctal
326009e9d3
fix(traffic): clear cross-panel rows only for clients actually renewed ( #6263 )
...
autoRenewClients collects every expired client that carries a reset interval,
but three of them never reach a new window: one may be missing from its
inbound's settings, one may resolve to no whole interval, and one may still
land in the past once the reset cap truncates the catch-up. All three keep
their counters and their expiry on purpose.
clearGlobalTraffic was still called with the full candidate list, so those
three lost their cross-panel rows while their local counters stayed. The next
push recreates the rows, and the expiry branch of the depletion check cuts
these clients regardless, so nothing is served past its limit — but between the
delete and the next push the cross-panel view under-reports them, and since the
expiry never advances that repeats on every poll.
Pass only the clients whose counters this pass reset. clearGlobalTraffic
already early-returns on an empty list, so a poll that renews nobody stays a
no-op rather than deleting every row. The renewed count returned to the caller
now counts the same set, instead of reporting candidates as renewals.
Tests cover both directions: a capped catch-up keeps its rows, and an actually
renewed client still loses them, since stale pushed totals would otherwise
re-deplete the fresh window at once.
2026-08-22 23:12:33 +02:00
..
2026-07-17 00:33:06 +02:00
2026-08-22 23:11:06 +02:00
2026-08-14 20:10:39 +02:00
2026-08-15 15:31:49 +02:00
2026-08-20 19:37:40 +02:00
2026-07-17 00:33:06 +02:00
2026-08-15 16:50:20 +02:00
2026-06-27 12:08:20 +02:00
2026-07-05 02:06:58 +02:00
2026-07-17 00:33:06 +02:00
2026-08-18 12:46:00 +02:00
2026-08-18 12:46:00 +02:00
2026-07-05 21:17:25 +02:00
2026-07-17 00:33:06 +02:00
2026-06-27 15:42:22 +02:00
2026-07-17 00:33:06 +02:00
2026-07-08 20:53:42 +02:00
2026-08-20 04:09:57 +02:00
2026-07-25 00:51:48 +02:00
2026-07-11 22:48:51 +02:00
2026-08-20 04:09:57 +02:00
2026-07-11 22:48:57 +02:00
2026-07-07 15:05:22 +02:00
2026-07-05 20:28:26 +02:00
2026-08-01 15:19:08 +02:00
2026-06-24 13:02:42 +02:00
2026-06-10 15:19:22 +02:00
2026-08-18 13:55:04 +02:00
2026-08-18 13:55:04 +02:00
2026-06-11 12:04:02 +02:00
2026-08-14 19:50:06 +02:00
2026-08-15 16:50:20 +02:00
2026-07-02 09:17:47 +02:00
2026-08-14 19:50:06 +02:00
2026-08-21 14:17:05 +02:00
2026-08-21 14:17:05 +02:00
2026-08-20 04:09:57 +02:00
2026-08-20 04:09:57 +02:00
2026-08-20 04:09:57 +02:00
2026-08-20 04:09:57 +02:00
2026-07-17 00:33:06 +02:00
2026-08-01 15:19:08 +02:00
2026-07-28 22:38:44 +02:00
2026-07-28 22:38:44 +02:00
2026-07-30 02:49:32 +02:00
2026-08-18 12:46:00 +02:00
2026-08-18 13:08:44 +02:00
2026-08-15 16:50:20 +02:00
2026-07-07 12:00:43 +02:00
2026-06-10 15:19:22 +02:00
2026-08-01 15:19:08 +02:00
2026-08-01 15:19:08 +02:00
2026-06-10 15:19:22 +02:00
2026-08-18 13:08:44 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-07-05 20:28:26 +02:00
2026-07-24 22:21:18 +02:00
2026-07-24 22:21:18 +02:00
2026-08-15 16:50:20 +02:00
2026-07-23 15:34:42 +02:00
2026-07-05 20:28:26 +02:00
2026-08-18 15:24:59 +02:00
2026-06-27 15:42:22 +02:00
2026-07-28 14:43:55 +02:00
2026-08-15 17:12:59 +02:00
2026-08-14 19:42:09 +02:00
2026-07-30 03:14:22 +02:00
2026-07-08 23:35:20 +02:00
2026-07-23 18:52:42 +02:00
2026-08-18 15:24:59 +02:00
2026-08-18 12:46:00 +02:00
2026-08-22 23:12:33 +02:00
2026-08-18 11:53:11 +02:00
2026-08-14 19:42:09 +02:00
2026-08-14 19:42:09 +02:00
2026-06-10 15:19:22 +02:00
2026-08-02 12:32:45 +02:00
2026-07-23 15:34:42 +02:00
2026-07-02 16:24:18 +02:00
2026-08-20 04:09:57 +02:00
2026-08-18 11:48:40 +02:00
2026-08-15 23:09:16 +02:00
2026-08-14 19:42:09 +02:00
2026-07-08 22:12:28 +02:00
2026-08-01 15:19:08 +02:00
2026-07-17 00:33:06 +02:00
2026-07-28 13:14:06 +02:00
2026-06-24 13:02:42 +02:00
2026-08-15 23:09:16 +02:00
2026-08-22 23:11:42 +02:00
2026-06-27 13:50:06 +02:00
2026-07-21 15:57:55 +02:00
2026-08-14 20:10:39 +02:00
2026-08-15 23:09:16 +02:00
2026-07-07 01:13:24 +02:00
2026-07-07 01:13:24 +02:00
2026-08-01 15:19:08 +02:00
2026-07-06 17:55:57 +02:00
2026-07-17 00:33:06 +02:00
2026-08-01 15:19:08 +02:00
2026-06-22 20:20:55 +02:00
2026-07-02 13:37:06 +02:00
2026-08-14 20:01:35 +02:00
2026-08-16 14:02:50 +02:00
2026-08-18 15:24:59 +02:00
2026-07-03 01:12:32 +02:00
2026-06-11 12:04:02 +02:00
2026-06-11 12:04:02 +02:00
2026-07-08 20:31:00 +02:00
2026-08-20 04:09:57 +02:00
2026-06-12 12:03:22 +02:00
2026-06-27 11:22:45 +02:00
2026-08-15 21:48:24 +02:00
2026-07-05 20:18:59 +02:00
2026-08-14 19:42:09 +02:00
2026-07-27 14:21:56 +02:00
2026-07-28 23:27:09 +02:00
2026-08-22 23:12:33 +02:00
2026-07-09 01:18:30 +02:00
2026-06-12 12:03:22 +02:00
2026-08-22 23:11:42 +02:00
2026-07-17 00:33:06 +02:00
2026-06-26 00:10:30 +02:00
2026-07-25 16:08:09 +02:00
2026-07-07 01:13:24 +02:00
2026-08-15 21:48:24 +02:00
2026-07-08 22:12:28 +02:00
2026-07-02 09:36:07 +02:00
2026-07-07 15:05:23 +02:00
2026-08-20 04:09:57 +02:00
2026-07-23 15:35:11 +02:00
2026-07-23 15:35:11 +02:00
2026-06-20 01:09:53 +02:00
2026-08-18 11:50:09 +02:00
2026-07-11 23:17:57 +02:00
2026-08-15 16:03:42 +02:00
2026-08-15 21:31:31 +02:00
2026-06-16 12:19:33 +02:00
2026-08-15 17:40:35 +02:00
2026-08-01 15:19:08 +02:00
2026-06-22 20:20:55 +02:00
2026-08-01 15:19:08 +02:00
2026-08-20 04:09:57 +02:00
2026-08-14 20:01:35 +02:00
2026-08-14 20:01:35 +02:00
2026-08-15 16:48:50 +02:00
2026-07-08 22:12:28 +02:00
2026-07-23 15:35:11 +02:00
2026-08-15 16:48:50 +02:00
2026-07-23 15:34:42 +02:00
2026-08-14 19:41:24 +02:00
2026-08-14 19:41:24 +02:00
2026-06-27 15:42:22 +02:00
2026-08-18 11:48:40 +02:00
2026-08-18 13:47:59 +02:00
2026-08-18 13:47:59 +02:00
2026-07-17 00:33:06 +02:00
2026-07-08 22:10:54 +02:00
2026-07-12 20:14:22 +02:00
2026-07-12 20:14:22 +02:00
2026-07-06 09:24:18 +02:00
2026-06-24 21:22:42 +02:00
2026-06-20 00:37:35 +02:00
2026-08-18 15:24:59 +02:00
2026-07-14 13:01:40 +02:00
2026-08-14 20:03:54 +02:00
2026-08-15 21:31:31 +02:00
2026-08-14 20:03:54 +02:00
2026-08-15 21:31:31 +02:00
2026-08-18 16:02:11 +02:00
2026-08-15 16:40:22 +02:00
2026-07-28 22:12:52 +02:00
2026-08-22 23:11:06 +02:00
2026-06-17 14:11:35 +02:00
2026-07-12 00:30:47 +02:00
2026-06-10 15:19:22 +02:00
2026-07-05 20:28:26 +02:00
2026-07-17 00:33:06 +02:00
2026-07-02 16:12:46 +02:00
2026-08-14 19:42:09 +02:00
2026-06-10 15:19:22 +02:00
2026-06-17 15:55:47 +02:00
2026-06-10 15:19:22 +02:00
2026-07-02 16:12:46 +02:00
2026-07-27 14:37:57 +02:00
2026-07-21 15:57:34 +02:00
2026-07-02 16:12:46 +02:00
2026-07-29 21:00:29 +02:00
2026-07-23 15:34:42 +02:00
2026-07-23 15:34:42 +02:00
2026-07-17 00:33:06 +02:00
2026-07-23 15:34:42 +02:00
2026-07-23 15:34:42 +02:00
2026-07-17 00:33:06 +02:00
2026-07-17 00:33:06 +02:00
2026-07-21 15:51:46 +02:00
2026-07-29 21:00:29 +02:00
2026-06-15 00:43:49 +02:00
2026-06-28 00:44:38 +02:00
2026-06-23 17:38:16 +02:00
2026-08-15 23:09:16 +02:00