Yuriy Khachaturian
23c51074a2
fix(node): keep hub settings on an empty node snapshot; address review
...
The empty-snapshot guard skipped only the link rebuild and orphan sweep,
but Phase A had already adopted the node's `{"clients":[]}` blob into
`inbounds.settings`. Reconcile builds each push from that blob, so the hub
kept re-pushing an empty client list and a reset/restarted node never got
its clients back — the guard fired forever. Phase A now refuses to blank the
settings of an inbound the hub still populates, so the hub stays
authoritative and reconcile re-pushes the real clients (recovery). A
node-side removal of the last client is therefore hub-authoritative by
design; the partial-snapshot path still prunes an inbound that reports other
clients.
- test: assert the inbound's settings survive an empty snapshot (fails
without the Phase A fix).
- drop TestSetRemoteTraffic_EmptySnapshotSurvivesReap (no branch the core
test doesn't already cover) and the duplicate orphanMark helper
(readOrphanMark already exists); trim the comment blocks to the 2-line
CLAUDE.md limit.
- fix a pre-existing -race/-shuffle flake: TestGetAmneziaWGLogs owned no DB
and relied on the ambient global one, which a sibling's dbtest cleanup
closes under shuffle, panicking on nil in amneziawgLogActivity. It now
owns a throwaway DB.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com >
2026-10-05 16:54:44 +03:00
..
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-09-14 21:18:31 +03:00
2026-10-02 23:56:52 +02:00
2026-10-03 01:35:13 +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-09-27 03:04:50 +02:00
2026-07-17 00:33:06 +02:00
2026-08-18 12:46:00 +02:00
2026-09-26 22:59:23 +02:00
2026-09-26 22:59:23 +02:00
2026-09-26 22:59:23 +02:00
2026-07-05 21:17:25 +02:00
2026-08-24 02:41:15 +02:00
2026-09-27 18:18:50 +02:00
2026-09-27 03:04:50 +02:00
2026-08-24 02:41:15 +02:00
2026-09-10 16:24:48 +02:00
2026-09-10 16:24:48 +02:00
2026-09-10 16:24:48 +02:00
2026-09-10 21:07:49 +02:00
2026-07-08 20:53:42 +02:00
2026-09-28 01:59:33 +02:00
2026-09-04 01:01:20 +02:00
2026-07-11 22:48:51 +02:00
2026-08-24 02:41:15 +02:00
2026-09-26 22:59:23 +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-09-09 00:17:54 +02:00
2026-09-15 15:39:40 +03:00
2026-09-07 01:51:18 +02:00
2026-09-27 03:04:50 +02:00
2026-06-10 15:19:22 +02:00
2026-08-23 21:57:03 +02:00
2026-08-18 13:55:04 +02:00
2026-09-27 03:04:50 +02:00
2026-08-14 19:50:06 +02:00
2026-09-27 03:04:50 +02:00
2026-07-02 09:17:47 +02:00
2026-09-27 02:48:40 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-09-26 20:30:22 +02:00
2026-08-20 04:09:57 +02:00
2026-08-24 02:41:15 +02:00
2026-10-03 00:26:46 +02:00
2026-08-24 13:27:40 +02:00
2026-08-20 04:09:57 +02:00
2026-10-03 02:56:02 +02:00
2026-10-03 02:56:02 +02:00
2026-07-17 00:33:06 +02:00
2026-08-23 23:17:56 +02:00
2026-07-28 22:38:44 +02:00
2026-09-27 13:33:29 +02:00
2026-09-07 14:24:14 +02:00
2026-10-03 01:22:28 +02:00
2026-10-03 01:39:07 +02:00
2026-09-27 02:48:40 +02:00
2026-09-27 02:48:40 +02:00
2026-09-26 22:59:23 +02:00
2026-09-28 13:23:48 +02:00
2026-09-15 18:00:54 +03:00
2026-08-15 16:50:20 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-10-05 16:54:44 +03:00
2026-08-01 15:19:08 +02:00
2026-08-23 21:57:03 +02:00
2026-08-18 13:08:44 +02:00
2026-09-28 01:59:53 +02:00
2026-09-28 13:02:50 +02:00
2026-08-24 02:41:15 +02:00
2026-08-15 16:50:20 +02:00
2026-09-07 14:24:14 +02:00
2026-09-10 22:32:42 +02:00
2026-08-15 16:50:20 +02:00
2026-08-15 16:50:20 +02:00
2026-09-09 00:30:02 +02:00
2026-09-26 22:59:23 +02:00
2026-07-05 20:28:26 +02:00
2026-09-27 18:18:50 +02:00
2026-09-27 18:18:50 +02:00
2026-09-27 02:48:40 +02:00
2026-09-14 12:08:38 +02:00
2026-09-14 12:08:38 +02:00
2026-07-05 20:28:26 +02:00
2026-08-18 15:24:59 +02:00
2026-09-26 21:59:29 +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-09-13 12:44:55 +02:00
2026-09-13 12:44:55 +02:00
2026-09-27 03:04:50 +02:00
2026-09-13 12:44:55 +02:00
2026-09-16 11:56:20 +02:00
2026-09-16 11:56:20 +02:00
2026-08-18 15:24:59 +02:00
2026-09-15 13:31:07 +03:00
2026-10-05 16:54:44 +03:00
2026-10-03 02:56:02 +02:00
2026-09-12 11:06:47 +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-09-02 20:39:03 +02:00
2026-08-14 19:42:09 +02:00
2026-09-26 22:59:23 +02:00
2026-09-27 03:04:50 +02:00
2026-09-26 22:00:40 +02:00
2026-07-23 15:34:42 +02:00
2026-10-03 02:56:02 +02:00
2026-09-12 11:12:13 +02:00
2026-10-03 02:56:02 +02:00
2026-09-12 11:12:13 +02:00
2026-08-18 11:48:40 +02:00
2026-09-27 03:04:50 +02:00
2026-09-28 02:23:50 +02:00
2026-09-08 18:08:24 +02:00
2026-09-15 15:29:32 +03:00
2026-09-27 12:26:37 +02:00
2026-08-01 15:19:08 +02:00
2026-07-17 00:33:06 +02:00
2026-10-02 13:54:39 +02:00
2026-07-28 13:14:06 +02:00
2026-09-27 03:04:50 +02:00
2026-08-15 23:09:16 +02:00
2026-09-28 13:23:48 +02:00
2026-09-08 15:36:57 +02:00
2026-09-27 18:28:07 +02:00
2026-07-21 15:57:55 +02:00
2026-09-27 03:04:50 +02:00
2026-09-26 20:30:25 +02:00
2026-09-28 13:23:48 +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-09-28 02:56:53 +02:00
2026-06-22 20:20:55 +02:00
2026-08-24 13:27:40 +02:00
2026-10-03 00:26:46 +02:00
2026-09-13 22:44:50 +02:00
2026-10-03 00:26:46 +02:00
2026-08-23 23:17:56 +02:00
2026-10-05 16:54:44 +03:00
2026-07-03 01:12:32 +02:00
2026-10-03 00:26:46 +02:00
2026-10-03 00:26:46 +02:00
2026-09-28 02:23:50 +02:00
2026-07-08 20:31:00 +02:00
2026-09-27 18:28:07 +02:00
2026-09-28 13:23:48 +02:00
2026-09-28 01:59:33 +02:00
2026-09-12 11:14:53 +02:00
2026-06-27 11:22:45 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-09-08 18:08:24 +02:00
2026-09-28 02:56:53 +02:00
2026-09-15 16:28:31 +02:00
2026-07-28 23:27:09 +02:00
2026-10-03 02:56:02 +02:00
2026-10-03 02:56:02 +02:00
2026-10-03 02:56:02 +02:00
2026-09-28 13:23:48 +02:00
2026-09-08 15:36:57 +02:00
2026-09-12 11:14:53 +02:00
2026-09-12 11:14:53 +02:00
2026-10-03 02:56:02 +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-09-28 02:56:53 +02:00
2026-09-28 13:02:50 +02:00
2026-09-15 20:07:18 +02:00
2026-09-10 16:24:48 +02:00
2026-07-08 22:12:28 +02:00
2026-08-23 23:17:56 +02:00
2026-07-07 15:05:23 +02:00
2026-09-27 03:04:50 +02:00
2026-09-26 22:59:23 +02:00
2026-07-23 15:35:11 +02:00
2026-07-23 15:35:11 +02:00
2026-10-05 16:54:44 +03:00
2026-09-15 20:39:32 +02:00
2026-06-20 01:09:53 +02:00
2026-08-23 23:17:56 +02:00
2026-09-03 18:06:35 +02:00
2026-08-23 23:17:56 +02:00
2026-09-07 14:24:14 +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-23 23:17:56 +02:00
2026-09-08 14:12:13 +02:00
2026-09-18 13:25:24 +03:00
2026-08-01 15:19:08 +02:00
2026-09-28 02:56:53 +02:00
2026-09-28 02:56:53 +02:00
2026-06-22 20:20:55 +02:00
2026-08-23 23:17:56 +02:00
2026-08-20 04:09:57 +02:00
2026-08-23 23:17:56 +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-09-15 19:27:38 +02:00
2026-09-15 19:27:38 +02:00
2026-09-28 02:56:53 +02:00
2026-09-26 21:59:29 +02:00
2026-07-23 15:34:42 +02:00
2026-09-15 22:39:59 +02:00
2026-09-26 21:59:29 +02:00
2026-09-15 16:58:21 +03:00
2026-09-27 16:09:54 +02:00
2026-10-03 02:56:02 +02:00
2026-09-13 14:48:28 +02:00
2026-09-13 14:48:28 +02:00
2026-07-17 00:33:06 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-09-27 03:04:50 +02:00
2026-07-06 09:24:18 +02:00
2026-09-27 03:04:50 +02:00
2026-10-03 13:20:00 +02:00
2026-10-03 01:21:25 +02:00
2026-06-24 21:22:42 +02:00
2026-06-20 00:37:35 +02:00
2026-10-03 13:20:00 +02:00
2026-07-14 13:01:40 +02:00
2026-09-13 14:04:53 +02:00
2026-09-13 12:44:55 +02:00
2026-09-16 12:30:44 +02:00
2026-09-27 03:04:50 +02:00
2026-09-16 12:30:44 +02:00
2026-09-10 17:05:54 +02:00
2026-09-27 03:04:50 +02:00
2026-07-28 22:12:52 +02:00
2026-09-08 17:14:01 +02:00
2026-09-13 11:51:56 +02:00
2026-09-15 21:13:29 +02:00
2026-09-27 01:06:17 +02:00
2026-06-17 14:11:35 +02:00
2026-07-12 00:30:47 +02:00
2026-08-23 22:34:20 +02:00
2026-09-27 03:04:50 +02:00
2026-09-02 20:21:27 +02:00
2026-06-10 15:19:22 +02:00
2026-09-10 16:24:48 +02:00
2026-07-17 00:33:06 +02:00
2026-09-15 19:04:55 +02:00
2026-07-02 16:12:46 +02:00
2026-09-15 19:04:55 +02:00
2026-06-10 15:19:22 +02:00
2026-09-26 20:30:22 +02:00
2026-10-03 02:56:02 +02:00
2026-10-03 02:56:02 +02:00
2026-10-03 02:56:02 +02:00
2026-08-24 13:27:40 +02:00
2026-08-24 13:27:40 +02:00
2026-07-02 16:12:46 +02:00
2026-09-27 16:09:54 +02:00
2026-09-10 14:50:48 +02:00
2026-09-26 22:02:22 +02:00
2026-09-26 22:02:22 +02:00
2026-07-27 14:37:57 +02:00
2026-09-26 22:04:08 +02:00
2026-07-02 16:12:46 +02:00
2026-09-15 15:39:40 +03:00
2026-10-03 01:23:25 +02:00
2026-07-29 21:00:29 +02:00
2026-09-03 18:06:15 +02:00
2026-09-27 03:04:50 +02:00
2026-07-23 15:34:42 +02:00
2026-09-15 20:39:32 +02:00
2026-07-17 00:33:06 +02:00
2026-09-15 16:00:05 +02:00
2026-07-23 15:34:42 +02:00
2026-07-23 15:34:42 +02:00
2026-09-14 21:18:31 +03:00
2026-09-14 21:18:31 +03:00
2026-07-21 15:51:46 +02:00
2026-09-15 16:00:05 +02:00
2026-06-15 00:43:49 +02:00
2026-09-10 22:32:42 +02:00
2026-06-23 17:38:16 +02:00
2026-10-03 02:56:02 +02:00