You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@activemq.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2024/07/15 16:43:00 UTC

[jira] [Work logged] (ARTEMIS-4787) Anycast queue does not auto-create if already multicast queue on same address

     [ https://issues.apache.org/jira/browse/ARTEMIS-4787?focusedWorklogId=925969&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-925969 ]

ASF GitHub Bot logged work on ARTEMIS-4787:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 15/Jul/24 16:42
            Start Date: 15/Jul/24 16:42
    Worklog Time Spent: 10m 
      Work Description: tabish121 commented on PR #4957:
URL: https://github.com/apache/activemq-artemis/pull/4957#issuecomment-2228943625

   This one needs rebased and touched up before it can be checked as main has quite a few changes including deprecating methods in SimpleString the tests added are still using.  




Issue Time Tracking
-------------------

    Worklog Id:     (was: 925969)
    Time Spent: 0.5h  (was: 20m)

> Anycast queue does not auto-create if already multicast queue on same address
> -----------------------------------------------------------------------------
>
>                 Key: ARTEMIS-4787
>                 URL: https://issues.apache.org/jira/browse/ARTEMIS-4787
>             Project: ActiveMQ Artemis
>          Issue Type: Bug
>          Components: Broker
>            Reporter: Josh Byster
>            Assignee: Justin Bertram
>            Priority: Major
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> As a preface, I am aware that creating both anycast and multicast queues on the same address is an anti-pattern and not recommended. However, this is causing difficulties migrating over legacy clients from using Classic to Artemis.
> If one creates a JMS topic on an address, and then tries to create a JMS queue, it fails to create. However, if the order is flipped (creating a queue, then a topic), there is no exception.
> It seems like the issue is in this area of {{ServerSessionImpl}}:
> {code:java}
> Bindings bindings = server.getPostOffice().lookupBindingsForAddress(unPrefixedAddress);
> if (bindings != null && bindings.hasLocalBinding() && !queueConfig.isFqqn()) {
>    // The address has another queue with a different name, which is fine. Just ignore it.
>    result = AutoCreateResult.EXISTED;{code}
> Please see test below to reproduce, which throws the exception immediately as seen in production.
> {code:java}
> package org.apache.activemq.artemis.tests.integration;
> import org.apache.activemq.artemis.api.core.client.ClientSession;
> import org.apache.activemq.artemis.api.core.client.ClientSessionFactory;
> import org.apache.activemq.artemis.api.core.client.ServerLocator;
> import org.apache.activemq.artemis.core.server.ActiveMQServer;
> import org.apache.activemq.artemis.core.settings.impl.AddressSettings;
> import org.apache.activemq.artemis.tests.util.ActiveMQTestBase;
> import org.junit.Before;
> import org.junit.Test;
> import javax.jms.Connection;
> import javax.jms.ConnectionFactory;
> import javax.jms.MessageConsumer;
> import javax.jms.Queue;
> import javax.jms.Session;
> import javax.jms.Topic;
> import java.util.HashMap;
> public class QueueTopicSameNameTest extends ActiveMQTestBase {
>     protected ActiveMQServer server;
>     @Override
>     @Before
>     public void setUp() throws Exception {
>         super.setUp();
>         server = createServer(true, createDefaultNettyConfig());
>         server.start();
>     }
>     @Test
>     public void testTopicThenQueueCreate() throws Exception {
>         String myAddr = "TEST";
>         ConnectionFactory cf = new org.apache.activemq.ActiveMQConnectionFactory("failover:(tcp://localhost:61616)");
>         Connection c = cf.createConnection();
>         Session s = c.createSession();
>         Topic t = s.createTopic(myAddr);
>         MessageConsumer consumer = s.createConsumer(t);
>         Queue q = s.createQueue(myAddr);
>         MessageConsumer otherConsumer = s.createConsumer(q);
>         c.close();
>     }
> }{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@activemq.apache.org
For additional commands, e-mail: issues-help@activemq.apache.org
For further information, visit: https://activemq.apache.org/contact