TheYellowBeanieGuy
71a2ef4ce7
fix(store): harden snapshot vs concurrent writer mutation; fix SIGINT dict aliasing ( #389 )
...
get_latest_data_deepcopy_snapshot deep-copies layers outside the data lock; a writer mutating a nested object in place races it and raises "dictionary changed size during iteration" (500 on /api/health, /api/live-data). Two changes: (1) _merge_sigint_snapshot now shallow-copies each entry so latest_data["sigint"] no longer aliases the SIGINT bridge dicts or the meshtastic_map_nodes layer (the concrete offender); (2) the snapshot retries a few times as defense-in-depth for any other in-place mutator. Plus regression tests.
2026-06-15 17:35:27 -06:00
..
2026-06-06 20:16:18 -06:00
2026-03-26 05:58:04 -06:00
2026-06-15 15:37:29 -06:00
2026-03-13 11:32:16 -06:00
2026-06-06 20:40:29 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-06-10 11:30:50 -06:00
2026-05-20 20:31:56 -06:00
2026-05-23 06:38:05 -06:00
2026-05-23 07:00:32 -06:00
2026-05-02 21:16:32 -06:00
2026-06-04 17:29:04 -06:00
2026-05-28 01:24:33 -06:00
2026-05-21 11:15:52 -06:00
2026-06-08 21:04:08 -06:00
2026-05-20 14:45:11 -06:00
2026-05-22 09:58:25 -06:00
2026-05-18 11:22:38 -06:00
2026-06-08 21:04:08 -06:00
2026-06-03 14:31:31 -06:00
2026-05-22 19:18:01 -06:00
2026-05-22 19:23:09 -06:00
2026-05-21 02:06:11 -06:00
2026-03-26 05:58:04 -06:00
2026-03-26 05:58:04 -06:00
2026-05-23 07:56:23 -06:00
2026-05-23 06:14:39 -06:00
2026-05-21 15:11:28 -06:00
2026-05-20 14:45:11 -06:00
2026-05-01 22:56:50 -06:00
2026-06-08 21:04:08 -06:00
2026-03-26 05:58:04 -06:00
2026-05-22 23:40:18 -06:00
2026-03-16 12:46:40 +09:00
2026-05-20 19:57:06 -06:00
2026-06-06 20:16:18 -06:00
2026-05-20 19:57:06 -06:00
2026-06-03 14:31:31 -06:00
2026-06-15 17:35:27 -06:00
2026-05-22 00:56:29 -06:00
2026-06-03 15:01:32 -06:00
2026-06-03 14:33:01 -06:00
2026-05-20 19:57:06 -06:00
2026-06-03 15:01:32 -06:00
2026-03-26 05:58:04 -06:00
2026-03-26 05:58:04 -06:00
2026-03-26 05:58:04 -06:00
2026-06-02 13:34:11 -06:00
2026-05-21 13:27:16 -06:00
2026-05-01 22:56:50 -06:00
2026-05-01 22:56:50 -06:00
2026-05-22 18:40:24 -06:00
2026-05-01 22:56:50 -06:00
2026-06-12 02:15:56 -06:00
2026-06-09 21:32:08 -06:00
2026-06-08 22:44:16 -06:00
2026-05-01 22:56:50 -06:00
2026-06-12 02:15:56 -06:00
2026-05-30 13:52:01 -06:00
2026-05-20 19:57:06 -06:00
2026-05-21 09:45:08 -06:00
2026-06-08 21:04:08 -06:00
2026-05-20 19:57:06 -06:00
2026-05-21 02:06:11 -06:00
2026-06-08 23:05:26 -06:00
2026-05-21 10:05:29 -06:00
2026-06-04 09:01:21 -06:00
2026-06-04 09:01:21 -06:00
2026-05-22 00:51:54 -06:00
2026-05-21 15:11:28 -06:00
2026-05-01 22:56:50 -06:00
2026-06-07 23:39:13 -06:00
2026-05-21 10:32:23 -06:00
2026-03-26 05:58:04 -06:00
2026-06-08 21:04:08 -06:00
2026-05-22 10:44:50 -06:00
2026-05-22 09:58:25 -06:00
2026-06-04 09:01:21 -06:00
2026-05-20 14:45:11 -06:00
2026-03-26 05:58:04 -06:00
2026-06-15 17:35:27 -06:00
2026-05-01 22:56:50 -06:00
2026-06-08 21:04:08 -06:00
2026-06-04 09:01:21 -06:00
2026-05-21 01:41:13 -06:00
2026-05-20 19:57:06 -06:00
2026-06-15 15:37:29 -06:00
2026-03-26 05:58:04 -06:00
2026-06-03 18:41:28 -06:00
2026-05-21 01:31:20 -06:00
2026-06-02 15:20:44 -06:00