Skip to content

Stats-timer publication stalls during Starlink-only ops while data-republish keeps working #20

Description

@rolker

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)

  1. 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).
  2. 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.
  3. 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)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions