collect: fix last_broadcast tracking and diff condition
Always compute the payload (diff or full snapshot) regardless of last_broadcast state, and store the broadcast payload — not the raw snapshot — as last_broadcast so subsequent diffs are based on what was actually sent. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+2
-2
@@ -89,12 +89,12 @@ def run(args: argparse.Namespace) -> None:
|
|||||||
apply_procedural(snapshot)
|
apply_procedural(snapshot)
|
||||||
store["records"].append(snapshot)
|
store["records"].append(snapshot)
|
||||||
save_store(out, store, args.max_records)
|
save_store(out, store, args.max_records)
|
||||||
if args.diff and last_broadcast:
|
if args.diff:
|
||||||
payload = jay_diff_full(last_broadcast, snapshot, combine_upd_add=True)
|
payload = jay_diff_full(last_broadcast, snapshot, combine_upd_add=True)
|
||||||
else:
|
else:
|
||||||
payload = snapshot
|
payload = snapshot
|
||||||
|
last_broadcast = payload
|
||||||
network.broadcast(payload, push_clients, push_lock)
|
network.broadcast(payload, push_clients, push_lock)
|
||||||
last_broadcast = snapshot
|
|
||||||
log.info("Record #%d saved at %s", len(store["records"]), snapshot["ts"])
|
log.info("Record #%d saved at %s", len(store["records"]), snapshot["ts"])
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
raise
|
raise
|
||||||
|
|||||||
Reference in New Issue
Block a user