iceoryx subscriber - TOO_MANY_CHUNKS_HELD_IN_PARALLEL error when flooding a receiver with messages
tobiasstarkwayve opened this issue · 0 comments
Bug report
Required Info:
- Operating System:
- Ubuntu 20.04.1
- Installation type:
- from source
- Version or commit hash:
- 1.3.4
- DDS implementation:
- Cyclone DDS 0.9.1 (w/ iceoryx 2.0.3)
- Client library (if applicable):
- rclcpp
Steps to reproduce issue
Build the two example programs in the attached archive
bug_reproducer_cpp.tar.gz
These reproducers are just one sender that sends as fast as it can and one receiver that slowly processes those messages (and will therefore quickly get overloaded). However, the limited KEEP_LAST capacity should mean that most of the incoming messages should just get dropped
Run RouDi, then both bug_reproducer
and bug_reproducer_rcv
together with the provided cyclonedds.xml (which enables shared-memory communication and nothing else
Expected behavior
Nothing to see, or maybe errors on the sender side that the receiver was unable to receive messages
Actual behavior
An unending stream of
DDS reader with topic rt/reproducer_topic : iceoryx subscriber - TOO_MANY_CHUNKS_HELD_IN_PARALLEL - could not take sample
on the receiver side.
Additional information
If I understand it correctly, the error message states that the receiver is holding on to too many samples (>256, I believe). Which is strange, considering that the KEEP_LAST policy should limit the reader to at most 10 samples, we should never even get near 256.
Is it possible that the iceoryx samples don't get freed properly if they are dropped from the input queue?