refactor(state): trace snapshot write phases and strengthen refresh coverage

This commit is contained in:
lda committed 2026-10-12 00:41:20 +07:00 Verified
1 parent 1bf7eda889
commit fb9e2d198e
6 files changed
+296 -131

No files matched your search

+14
View File
@@ -106,6 +106,20 @@ existing debug events too; inspect them before enabling it broadly.
- Inventory source spans separate neighbor, DHCP lease, and hook-store reads
from merging. `db_*` spans cover snapshot replacement, fleet reads, and manual
identity changes, including transaction waits and result assembly where applicable.
Snapshot replacement retains `db_replace_agent_snapshot` as its total duration,
with four sequential child spans:
- `db_pool_acquire`: obtaining a pooled connection, including any connection
setup/checks; it is not exclusively queue wait.
- `db_write_transaction_begin`: executing `BEGIN IMMEDIATE`, including SQLite
writer-lock wait and worker scheduling, not a direct lock-wait measurement.
- `db_snapshot_write_rows`: existing-key lookup, normalization, parent/child
writes, and deletion of devices missing from the complete snapshot.
- `db_snapshot_commit`: transaction commit, including its SQLite/worker work;
this does not isolate filesystem flush time.
Pool and transaction-begin spans come from the shared write helper, so they
also appear under other write operations. No per-row spans or SQL values are
recorded. A failed write rolls back through SQLx and has no commit span;
fleet cache invalidation still happens only after a successful commit.
- Fleet spans cover list/load/grouping, refresh fan-out with per-agent outcomes,
and wake dispatch. Counts distinguish grouped, filtered, and returned rows;
wake events identify the chosen agent and whether the route was explicit,