On 3/25/26 11:59, Artem Bilan via users wrote:
Hi there!
I am developing Spring Framework client based on the QPid ProtonJ 2
Client:
https://github.com/spring-projects/spring-amqp/tree/main/spring-amqp-client/src.
One of my tests is sporadically failing like:
Without an AMQP frame trace it is not possible to say why this is
failing, it is valid for the error to occur if the session is remotely
closed. The configuration guide in the docs explains how to enable frame
tracing, with that enabled you can see the frames that arrived around
the time this error occurs.
https://github.com/apache/qpid-protonj2/blob/main/protonj2-client-docs/Configuration.md#logging
Caused by: java.lang.IllegalStateException: Cannot create new Receiver
from closed Session
at
org.apache.qpid.protonj2.engine.impl.ProtonSession.checkSessionClosed(ProtonSession.java:670)
at
org.apache.qpid.protonj2.engine.impl.ProtonSession.receiver(ProtonSession.java:396)
at
org.apache.qpid.protonj2.engine.impl.ProtonSession.receiver(ProtonSession.java:59)
at
org.apache.qpid.protonj2.client.impl.ClientReceiverBuilder.createReceiver(ClientReceiverBuilder.java:142)
at
org.apache.qpid.protonj2.client.impl.ClientReceiverBuilder.receiver(ClientReceiverBuilder.java:61)
at
org.apache.qpid.protonj2.client.impl.ClientSession.internalOpenReceiver(ClientSession.java:391)
at
org.apache.qpid.protonj2.client.impl.ClientConnection.lambda$openReceiver$3(ClientConnection.java:279)
at
io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:148)
at
io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:141)
at
io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:535)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:405)
at
io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:1195)
at
io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
I have a single connection object per test suite lifecycle.
The code I try to create a Receiver is like:
ClientReceiver receiver =
(ClientReceiver)connection.openReceiver(queue,receiverOptions)
.addCredit(this.initialCredits);
Which apparently leads to the shared internal session in that connection.
The broker I test against is RabbitMQ 4.2.
So, the question is: if I'm doing something wrong or missing anything.
I also do have a reconnectEnabled on the connection.
Please, let me know if you need anything else.
Thank you!
Regards,
Artem Bilan
--
Tim Bish