[
https://issues.apache.org/jira/browse/QPIDJMS-141?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15058507#comment-15058507
]
Robbie Gemmell commented on QPIDJMS-141:
----------------------------------------
Would you happen to be using the C++ broker with its persistent store and
durable queues?
> 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]