You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Bas Claessen (Jira)" <ji...@apache.org> on 2019/11/06 13:44:00 UTC

[jira] [Commented] (CAMEL-14148) exception during first resolve of temporary jms destination causes infinitive wait

    [ https://issues.apache.org/jira/browse/CAMEL-14148?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16968369#comment-16968369 ] 

Bas Claessen commented on CAMEL-14148:
--------------------------------------

Added pull request with a fix and a test case.

> exception during first resolve of temporary jms destination causes infinitive wait
> ----------------------------------------------------------------------------------
>
>                 Key: CAMEL-14148
>                 URL: https://issues.apache.org/jira/browse/CAMEL-14148
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jms
>    Affects Versions: 2.24.2
>            Reporter: Bas Claessen
>            Priority: Minor
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> An exception during the first attempt to resolve a temporary destination will cause an infinitive wait for next resolve attempts after the exception is cleared.
> A likely scenario for this behaviour to occur is when no connection to a jms server can be established during startup.
> This bug is caused by not setting the refreshWanted to false when no previous destination exists in the org.apache.camel.component.jms.reply.TemporaryQueueReplyManager$TemporaryReplyQueueDestinationResolver class.
> {code:java}
> public Destination resolveDestinationName(Session session, String destinationName, boolean pubSubDomain) throws JMSException {
>     // use a temporary queue to gather the reply message
>     synchronized (refreshWanted) {
>         if (queue == null || refreshWanted.compareAndSet(true, false)) {
>             queue = session.createTemporaryQueue();
>             setReplyTo(queue);
>             if (log.isDebugEnabled()) {
>                 log.debug("Refreshed Temporary ReplyTo Queue. New queue: {}", queue.getQueueName());
>             }
>             refreshWanted.notifyAll();
>         }
>     }
>     return queue;
> }
> {code}
> When queue == null the refreshWanted.compareAndSet(true, false) is not executed.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)