You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@qpid.apache.org by Aleš Trček <Al...@halcom.si> on 2014/04/01 17:42:55 UTC

Qpid connection/session from JMS client with unreliable conection

Hi all,

I have been using qpid for more than a year now and never experienced any connection problems before. However, currently we have some network issues in our company and one of the effects is that qpid is constantly reporting errors with sync. This is happening in test environment, but it has me worried what if we encounter these problems in production env too, so I wonder whether this is expected behavior or a manifestation of some bug.
So, we have a VPN connection to another country and as said, recently there are some issues with network - we have 1%-10% packet loss (tested with ping). Other applications are not seriously affected by this (TCP/IP handles resending and such), but qpid seems to be. The broker (qpid v0.24) is in my 'local' network and client (v0.24) that receives and sends msgs to it is on the other side of the VPN connection. The client is constantly logging this:

17:11:08 568: ERROR Error getting message; error receiving message from the queue!
javax.jms.JMSException: Exception while receiving:timed out waiting for sync: complete = 139129, point = 139133
        at org.apache.qpid.client.AMQSession.toJMSException(AMQSession.java:3465)
        at org.apache.qpid.client.BasicMessageConsumer.receive(BasicMessageConsumer.java:438)
        at com.halcom.qw.QWrapper.getMessage(QWrapper.java:133)
        at com.halcom.qw.QWrapper.getMessage(QWrapper.java:91)
        at threads.SendSmsThread.run(SendSmsThread.java:87)
Caused by: org.apache.qpid.transport.SessionException: timed out waiting for sync: complete = 139129, point = 139133
        at org.apache.qpid.transport.Session.sync(Session.java:867)
        at org.apache.qpid.transport.Session.sync(Session.java:837)
        at org.apache.qpid.client.BasicMessageConsumer_0_10.getMessageFromQueue(BasicMessageConsumer_0_10.java:402)
        at org.apache.qpid.client.BasicMessageConsumer.receive(BasicMessageConsumer.java:420)
        ... 3 more

Note that some classes here are from our app.
The main problem is that every time this problem with the connection seems to occur, the client waits for the sync timeout (which by default is 1 min, I have it set to 10s) and during that time it doesn't process any messages. So from time to time (which can be every minute, depending on the msg quantity and network problems) we have a period of 10s when no messages are handled.

The problem with connection manifests at time of connecting to queues too, like that:

org.apache.qpid.client.JMSAMQException: cannot create session
        at org.apache.qpid.client.AMQConnectionDelegate_0_10.createSession(AMQConnectionDelegate_0_10.java:122)
        at org.apache.qpid.client.AMQConnectionDelegate_0_10.createSession(AMQConnectionDelegate_0_10.java:94)
        at org.apache.qpid.client.AMQConnection.createSession(AMQConnection.java:667)
...
Caused by: org.apache.qpid.transport.SessionException: timed out waiting for session to become open (state=NEW)
        at org.apache.qpid.transport.Session.invoke(Session.java:688)
        at org.apache.qpid.transport.Session.invoke(Session.java:627)
        at org.apache.qpid.transport.SessionInvoker.txSelect(SessionInvoker.java:141)
        at org.apache.qpid.client.AMQSession_0_10.createSession(AMQSession_0_10.java:200)
        at org.apache.qpid.client.AMQSession_0_10.<init>(AMQSession_0_10.java:178)
        at org.apache.qpid.client.AMQSession_0_10.<init>(AMQSession_0_10.java:225)
        at org.apache.qpid.client.AMQConnectionDelegate_0_10.createSession(AMQConnectionDelegate_0_10.java:111)
        ... 116 more

Other errors are reported too, depending on the stage in which the network problem occurred. This errors are especially nasty, since - although I have broker reconnect configured - the queue connections are not initialized and the whole application sits and does nothing without them.
Please advise.


Regards,
Ales