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
{{ message }}
Repository navigation
Svc/ComQueue: a buffer or packet that does not fit the message queue is dropped without an event #6119
When ComQueue's message queue is full, bufferQueueIn (async ... hook) hands the buffer back on bufferReturnOut from bufferQueueIn_overflowHook. It emits no event and counts nothing. The sender cannot tell that buffer apart from one that was sent: CfdpManager treats it as a sent PDU, so file data disappears from the downlink with no trace on board or on the ground. comPacketQueueIn is drop, so telemetry and events are lost silently in the same condition.
Context / Environment
Operating System: Linux
CPU Architecture: x86_64
Python version: 3.14.6
CMake version: 3.26.0
Pip packages:
fprime-tools==4.3.0
fprime-gds==4.3.0
fprime-fpp==3.3.0
How to Reproduce
Wire CfdpManager's dataOut to ComQueue.bufferQueueIn and keep the default ComCcsdsConfig.QueueSizes.comQueue (50).
Set channel max_outgoing_pdus_per_cycle to 64 and downlink a file through PollDirectory (Class 1).
Compare CfdpManager's sent-PDU count with the frames the framer produced. In our run it was 312 sent and 300 framed, with no event. The Class 1 download then fails its checksum on the ground.
Expected Behavior
A buffer that ComQueue cannot queue is reported: a throttled warning event from bufferQueueIn_overflowHook, a telemetry count of dropped buffers, or both, and the same for comPacketQueueIn drops.
AI Usage
Drafted with Claude; reproduced and reviewed by the author.
The dilemma is that if the input queue of ComQueue is full, attempting to emit an event will try to enqueue yet another thing, which will either add pressure or be dropped anyways.
Activity
thomas-bc commentedon Oct 9, 2026
The dilemma is that if the input queue of ComQueue is full, attempting to emit an event will try to enqueue yet another thing, which will either add pressure or be dropped anyways.
thomas-bc commentedon Oct 9, 2026
CCB: can put a counter in the overflow hook, and have a telemetry channel for it. Each FIFO's could have one too