Return-Path: X-Original-To: apmail-activemq-issues-archive@minotaur.apache.org Delivered-To: apmail-activemq-issues-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 658D218EAF for ; Thu, 4 Feb 2016 19:48:40 +0000 (UTC) Received: (qmail 24943 invoked by uid 500); 4 Feb 2016 19:48:40 -0000 Delivered-To: apmail-activemq-issues-archive@activemq.apache.org Received: (qmail 24912 invoked by uid 500); 4 Feb 2016 19:48:40 -0000 Mailing-List: contact issues-help@activemq.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@activemq.apache.org Delivered-To: mailing list issues@activemq.apache.org Received: (qmail 24903 invoked by uid 99); 4 Feb 2016 19:48:40 -0000 Received: from arcas.apache.org (HELO arcas) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 04 Feb 2016 19:48:40 +0000 Received: from arcas.apache.org (localhost [127.0.0.1]) by arcas (Postfix) with ESMTP id D9D132C1F69 for ; Thu, 4 Feb 2016 19:48:39 +0000 (UTC) Date: Thu, 4 Feb 2016 19:48:39 +0000 (UTC) From: "Kevin Bowman (JIRA)" To: issues@activemq.apache.org Message-ID: In-Reply-To: References: Subject: [jira] [Commented] (AMQ-6155) Spurious InvalidDestinationException publishing to a temp queue from a new connection MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/AMQ-6155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15132882#comment-15132882 ] Kevin Bowman commented on AMQ-6155: ----------------------------------- Agreed. I'm not happy about it, but the workarounds are acceptable. > Spurious InvalidDestinationException publishing to a temp queue from a new connection > ------------------------------------------------------------------------------------- > > Key: AMQ-6155 > URL: https://issues.apache.org/jira/browse/AMQ-6155 > Project: ActiveMQ > Issue Type: Bug > Components: JMS client > Affects Versions: 5.10.2, 5.13.0 > Environment: Windows, OS X > Reporter: Kevin Bowman > Attachments: AmqTempRaceConditionMinimalTest.java > > > When a new connection is opened for the purpose of sending a message to a temporary queue it sometimes fails with the following exception (stack trace is from v5.13.0): > javax.jms.InvalidDestinationException: Cannot publish to a deleted Destination: temp-queue://ID:Potomac.local-59943-1454448412194-1:1:96 > at org.apache.activemq.ActiveMQSession.send(ActiveMQSession.java:1904) > at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:288) > at org.apache.activemq.ActiveMQMessageProducer.send(ActiveMQMessageProducer.java:223) > at org.apache.activemq.ActiveMQMessageProducerSupport.send(ActiveMQMessageProducerSupport.java:241) > The actual problem appears to be in ActiveMQConnection.isDeleted(). Because the connection being used to send to the temp queue is not the connection under which the temp queue was created, it's dependent on AdvisoryConsumer to populate the activeTempDestinations map before the send() call is made. The AdvisoryConsumer gets called in a separate thread, asynchronous with the main thread, so this constitutes a race condition. If the send() call is made before AdvisoryConsumer can notify the new connection of all existing temp queues then it will throw an InvalidDestinationException even though the temp queue does actually exist. > Calling setWatchTopicAdvisories(false) on the sending connection's factory alleviates the problem and the program can run indefinitely with no errors. Also, adding a delay before the MessageProducer.send() call can alleviate the error somewhat, but with a small enough delay it will still happen eventually. > I noticed this first in an environment I don't have full control over. It happened the first time, every time, for reasons I still don't quite understand. I have written a small test program that reproduces the error outside of the original environment, but it runs in a loop and it takes a few hundred iterations for it to occur. -- This message was sent by Atlassian JIRA (v6.3.4#6332)