Observation
During the 2026-05-19 BizzyBoat deployment Phase 1 (Starlink-only at the operator station), the operator-side udp_bridge stats publication stalled for the entire ~1h17m of the Starlink-only phase (salmon log §14, §15).
Three operator-side topics dropped to 0 msg/s within ~60 s of the WiFi-down cutover at 12:53 EDT and stayed at 0 through to recovery at 14:10 EDT:
/operator/udp_bridge/topic_statistics — operator's own local stats (salmon-published)
/operator/udp_bridge/bridge_info — operator's own local bridge info
/operator/udp_bridge/remotes/bizzy/topic_statistics — operator's view of boat-side stats (forwarded)
Meanwhile the data plane stayed healthy:
- Boat heartbeat clean at exactly 1.000 s spacing (Starlink delivering small high-priority payloads)
- CAMP video and rqt camera grid: continued flowing throughout — operator confirmed no stalls there
- Costmap (large fragmented topic): degraded over WiFi pre-cut (~78% loss per salmon §13), but no evidence of stall over Starlink either
- Operator
udp_bridge process alive: PID 57723, Sl+ (sleeping multithreaded), no crash
So the stall is specific to the stats publishing path, not bridge-wide. The work-queue-saturation framing from the initial field write-up doesn't fit — if the work queue were saturated, video would have suffered too.
Open question: did boat-side stats also stall?
The operator-side mirror (/operator/udp_bridge/remotes/bizzy/topic_statistics) going to 0 doesn't distinguish:
- (A) boat-side stopped publishing → mirror naturally went to 0
- (B) boat-side kept publishing but operator-side stopped subscribing / republishing those specific topics
To answer this, replay the boat-side system bag at ~/data/logs/bizzyboat/2026-05-19T16-07-37+00-00 and check whether /bizzy/udp_bridge/topic_statistics kept publishing across the 12:53 WiFi-down cutover. The bag config (bizzyboat_project11/config/bizzyboat.yaml line 269+) records both /bizzy/udp_bridge/topic_statistics and /bizzy/udp_bridge/remotes/operator/topic_statistics, plus /rosout.
Concurrent observation
A resend-give-up WARN storm was running throughout: ~670/s right after the WiFi cut, settling to ~306/s by recovery. The "Giving up on resend… after N attempts" template's N varied 5/6/1 across the session. Whether N is meaningful or a counter-tracking glitch is a separate question (tracked elsewhere).
Impact
CAMP / rqt statistics panels were frozen for the operator throughout exactly the operational mode the deployment was trying to validate. The boat was visibly autonomous and OK via heartbeat + video, but operator's view of bridge-internal health was blind. For an actual over-horizon survey, the operator depends on these panels to spot pre-degradation trends. Today's mode was an OK condition; the stall masks a problem under a worse one.
Investigation leads (in suggested order)
- Replay boat-side bag
~/data/logs/bizzyboat/2026-05-19T16-07-37+00-00 — check /bizzy/udp_bridge/topic_statistics rate around 12:53 EDT cutover. Answers (A) vs (B).
- Replay operator-side bag
~/data/logs/operator/2026-05-19/bags/operator_2026-05-19T12.08.34/ — pin exact stall start/end timestamps + any /rosout errors from operator.udp_bridge.
- Code inspection — is the stats publisher on its own timer? Why might that timer specifically stall while the data-republish path stays healthy? Check for any shared mutex / queue / condition variable between stats and data-republish paths.
Related
- Deployment: #135 — salmon log §14, §15 in the PR #136 bundle.
- Concurrent observation: resend-give-up N=5/6/1 (separate issue if filed).
- The udp_bridge build deployed today is at the post-
udp_bridge#13 (resend-loop amplification fix) baseline — the stats stall is post-fix behavior, not original amplification.
Authored-By: Claude Code Agent
Model: Claude Opus 4.7 (1M context)
Observation
During the 2026-05-19 BizzyBoat deployment Phase 1 (Starlink-only at the operator station), the operator-side
udp_bridgestats publication stalled for the entire ~1h17m of the Starlink-only phase (salmon log §14, §15).Three operator-side topics dropped to 0 msg/s within ~60 s of the WiFi-down cutover at 12:53 EDT and stayed at 0 through to recovery at 14:10 EDT:
/operator/udp_bridge/topic_statistics— operator's own local stats (salmon-published)/operator/udp_bridge/bridge_info— operator's own local bridge info/operator/udp_bridge/remotes/bizzy/topic_statistics— operator's view of boat-side stats (forwarded)Meanwhile the data plane stayed healthy:
udp_bridgeprocess alive: PID 57723,Sl+(sleeping multithreaded), no crashSo the stall is specific to the stats publishing path, not bridge-wide. The work-queue-saturation framing from the initial field write-up doesn't fit — if the work queue were saturated, video would have suffered too.
Open question: did boat-side stats also stall?
The operator-side mirror (
/operator/udp_bridge/remotes/bizzy/topic_statistics) going to 0 doesn't distinguish:To answer this, replay the boat-side system bag at
~/data/logs/bizzyboat/2026-05-19T16-07-37+00-00and check whether/bizzy/udp_bridge/topic_statisticskept publishing across the 12:53 WiFi-down cutover. The bag config (bizzyboat_project11/config/bizzyboat.yamlline 269+) records both/bizzy/udp_bridge/topic_statisticsand/bizzy/udp_bridge/remotes/operator/topic_statistics, plus/rosout.Concurrent observation
A resend-give-up WARN storm was running throughout: ~670/s right after the WiFi cut, settling to ~306/s by recovery. The "Giving up on resend… after N attempts" template's N varied 5/6/1 across the session. Whether N is meaningful or a counter-tracking glitch is a separate question (tracked elsewhere).
Impact
CAMP / rqt statistics panels were frozen for the operator throughout exactly the operational mode the deployment was trying to validate. The boat was visibly autonomous and OK via heartbeat + video, but operator's view of bridge-internal health was blind. For an actual over-horizon survey, the operator depends on these panels to spot pre-degradation trends. Today's mode was an OK condition; the stall masks a problem under a worse one.
Investigation leads (in suggested order)
~/data/logs/bizzyboat/2026-05-19T16-07-37+00-00— check/bizzy/udp_bridge/topic_statisticsrate around 12:53 EDT cutover. Answers (A) vs (B).~/data/logs/operator/2026-05-19/bags/operator_2026-05-19T12.08.34/— pin exact stall start/end timestamps + any/rosouterrors fromoperator.udp_bridge.Related
udp_bridge#13(resend-loop amplification fix) baseline — the stats stall is post-fix behavior, not original amplification.Authored-By:
Claude Code AgentModel:
Claude Opus 4.7 (1M context)