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
In the implementation, self.channel.add_synchronous_cb(self._recv_get_response) only waits long enough for Basic.Get-ok/Get-empty method frame to arrive. So, if it gets Basic.Get-ok, but the Header and Content frames haven't arrived yet, it will return None, which is the same return value as when it gets Basic.Get-empty. So, quite often, there is actually a message on its way, but the BasicClass.get returns None, making the synchronous user think that the queue was empty, and that message will subsequently be "lost".
The text was updated successfully, but these errors were encountered:
The problem here is self._cb might throw FrameUnderflow exception (easy to reproduce if you have large messages), but it happens after self._read is set to False. It causes while wrapper._read to terminate early, when wrapper._result is still None, and thus message will be lost.
In the implementation,
self.channel.add_synchronous_cb(self._recv_get_response)
only waits long enough for Basic.Get-ok/Get-empty method frame to arrive. So, if it gets Basic.Get-ok, but the Header and Content frames haven't arrived yet, it will return None, which is the same return value as when it gets Basic.Get-empty. So, quite often, there is actually a message on its way, but the BasicClass.get returns None, making the synchronous user think that the queue was empty, and that message will subsequently be "lost".The text was updated successfully, but these errors were encountered: