Closed roman-holovin closed 5 years ago
Auto-delete and exclusive queues deletion does not happen instantly (this is more obvious with multiple queues per connection) and client operations can enter a natural race condition. This is most common to see with automatic connection recovery. We recently introduced recovery operation retries in the Java client since there is no easily solution for this.
However, 3.7.8 unrolled a couple of optimizations that made this a lot more evident (https://github.com/rabbitmq/rabbitmq-server/pull/1691 is one example).
Temporary queues have a separate STOMP endpoint. We highly recommend using those since it sidesteps the problem entirely.
There are no timestamps in the traffic dump. Please post a script that can be used to reproduce to the mailing list and we will see if it's the same fundamental problem mentioned above or not.
It's worth explaining that we don't consider it to be a "non-issue" and would try to reproduce either way (first with STOMP without the WebSocket layer, though). Our team uses GitHub issues as a tool that tracks actionable, well understood problems and at this stage this is mailing list material, even though @roman-holovin provided a reasonable amount of information to start the investigation.
Use case: Subscribe to a queue endpoint
/queue/<name>
with argumentsdurable: false
,auto-delete: true
. Unsubscribe from it later and subscribe again with same arguments.Expected result: 1) Queue gets created on first subscription since it doesn't exists 2) Queue gets deleted on unsubscription since it has
auto-delete: true
3) Queue gets created again on re-subscription since it was deleted and doesn't existsActual result: 1) Queue gets created on first subscription since it doesn't exists 2) Queue gets deleted on unsubscription since it has
auto-delete: true
3) rabbitmq gives an error that queue is not foundWebsocket packet dump with reproduced issue: