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
If connection is broken and app is reconnected messages are processed as expected, despite one huge thing - under the hood in class io.vertx.rabbitmq.impl.RabbitMQPublisherImplpendingAcks deque is not cleared anymore, and all messages after reconnection are just stuck there. pendingAcks.clear() is triggered on reconnection which is correct, but all messages after reconnection are not removed properly due to an Exception in handleConfirmation on confirmation.write(). checkThread() throws an exception during execusion.
Expected behavior
All messages are removed from pendingAcks after reconnection properly. Also it seems that there is no any point of keeping them for an unlimited amount of time there, if messages are not ack in reasonable time there should be an exception for example and messages should be discarded.
Actual behavior
Messages got stuck in RabbitMQPublisherImpl and never removed, which causes a slow memory leak.
How to Reproduce?
Steps to reproduce:
Create an app which uses io.quarkus:quarkus-smallrye-reactive-messaging-rabbitmq
Write code to send messages via @Channel and Emitter (I think the behaviour will be the same with @Outgoing annotation, but didn't test it)
Create a reconnect situation (I just used a debugger to stop processing for some time, on resume connection there were a reconnection with message [io.ver.rab.imp.RabbitMQClientImpl] (vert.x-eventloop-thread-13) reconnect success)
Output of uname -a or ver
Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:23 PDT 2021; root:xnu-8019.41.5~1/RELEASE_X86_64 x86_64
Output of java -version
openjdk version "11.0.12" 2021-07-20 OpenJDK Runtime Environment Homebrew (build 11.0.12+0) OpenJDK 64-Bit Server VM Homebrew (build 11.0.12+0, mixed mode)
GraalVM version (if different from Java)
No response
Quarkus version or git rev
2.16.6.Final;3.0.4.Final
Build tool (ie. output of mvnw --version or gradlew --version)
gradle 7.5.1
Additional information
No response
The text was updated successfully, but these errors were encountered:
Describe the bug
If connection is broken and app is reconnected messages are processed as expected, despite one huge thing - under the hood in class
io.vertx.rabbitmq.impl.RabbitMQPublisherImpl
pendingAcks
deque is not cleared anymore, and all messages after reconnection are just stuck there.pendingAcks.clear()
is triggered on reconnection which is correct, but all messages after reconnection are not removed properly due to an Exception inhandleConfirmation
onconfirmation.write()
.checkThread()
throws an exception during execusion.Expected behavior
All messages are removed from
pendingAcks
after reconnection properly. Also it seems that there is no any point of keeping them for an unlimited amount of time there, if messages are not ack in reasonable time there should be an exception for example and messages should be discarded.Actual behavior
Messages got stuck in
RabbitMQPublisherImpl
and never removed, which causes a slow memory leak.How to Reproduce?
Steps to reproduce:
io.quarkus:quarkus-smallrye-reactive-messaging-rabbitmq
@Channel
andEmitter
(I think the behaviour will be the same with@Outgoing
annotation, but didn't test it)[io.ver.rab.imp.RabbitMQClientImpl] (vert.x-eventloop-thread-13) reconnect success
)Output of
uname -a
orver
Darwin Kernel Version 21.1.0: Wed Oct 13 17:33:23 PDT 2021; root:xnu-8019.41.5~1/RELEASE_X86_64 x86_64
Output of
java -version
openjdk version "11.0.12" 2021-07-20 OpenJDK Runtime Environment Homebrew (build 11.0.12+0) OpenJDK 64-Bit Server VM Homebrew (build 11.0.12+0, mixed mode)
GraalVM version (if different from Java)
No response
Quarkus version or git rev
2.16.6.Final;3.0.4.Final
Build tool (ie. output of
mvnw --version
orgradlew --version
)gradle 7.5.1
Additional information
No response
The text was updated successfully, but these errors were encountered: