You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(fault_manager): serialize rosbag leg and bound cooldown map under storms
The bounded capture pool may run pool_size jobs concurrently. RosbagCapture is
single-writer (one ring buffer, one active writer, one recording state machine),
so two distinct fault codes confirming at once could race on its shared state and
corrupt/truncate a bag. Serialize just the rosbag leg under a mutex in the pool
job; snapshot capture is independent and stays parallel.
Also bound last_capture_times_: a storm of distinct fault codes previously left
one permanent entry per code (cooldown on). Sweep entries older than the cooldown
while holding last_capture_mutex_ - they can never gate a capture again. Correct
the capture-block comment to describe the real invariant (single-threaded executor
serializes confirmations; the mutex only guards the cooldown map).
0 commit comments