Chris Richardson created QPIDJMS-141:
----------------------------------------
Summary: Thread sync error can cause long blocking delay after
message send
Key: QPIDJMS-141
URL: https://issues.apache.org/jira/browse/QPIDJMS-141
Project: Qpid JMS
Issue Type: Bug
Components: qpid-jms-client
Affects Versions: 0.6.0
Reporter: Chris Richardson
Fix For: 0.7.0
There is a discontinuity in the thread synchronisation between the
JmsConnection and AmqpProvider classes when sending a message: the
JmsConnection class awaits a signal after requesting message transmission (line
615, "request.sync();") while the AmqpProvider does not send the expected
signal (lines 486/487,
if (couldSend && envelope.isSendAsync()) {
request.onSuccess();
)
This results in a ~1000ms blocking delay while the request.sync() times out.
This only happens in a scenario where the JmsSession determines that the
message should be sent synchronously (lines 668/669:
boolean sync = connection.isAlwaysSyncSend() ||
(!connection.isForceAsyncSend() && deliveryMode ==
DeliveryMode.PERSISTENT && !getTransacted());
).
One workaround for this is to set the MessageProducer deliveryMode to
DeliveryMode.NON_PERSISTENT, causing the JmsSession to evaluate the send
operation to be asynchronous and so the AmqpProvider signals the request as
expected by the JmsConnection. However this may have other side-effects...
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]