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
Consider the following scenario: the publisher confirm mode is enabled. It means the broker responds with either ack or nack for every message published.
Now, the client sends two messages which get delivery tags 1 and 2.
The broker then ACKs "2", and then NACKs "1" with multiple bit set (which is a bit counter-intuitive, but it actually happens with RabbitMQ).
The code will update _last_ack_id to 2 first, and when NACK arrives, this loop - while self._last_ack_id < delivery_tag - doesn't execute, and NACK will be lost.
The following program reproduces the issue: not a single NACK is printed, even though NACKs are clearly visible in wireshark.
Consider the following scenario: the publisher confirm mode is enabled. It means the broker responds with either ack or nack for every message published.
Now, the client sends two messages which get delivery tags 1 and 2.
The broker then ACKs "2", and then NACKs "1" with multiple bit set (which is a bit counter-intuitive, but it actually happens with RabbitMQ).
haigha/haigha/connections/rabbit_connection.py
Lines 206 to 217 in 7b004e1
The code will update
_last_ack_id
to 2 first, and when NACK arrives, this loop -while self._last_ack_id < delivery_tag
- doesn't execute, and NACK will be lost.The following program reproduces the issue: not a single NACK is printed, even though NACKs are clearly visible in wireshark.
The text was updated successfully, but these errors were encountered: