[jboss-jira] [JBoss JIRA] (WFWIP-14) [Artemis upgrade] MDB cannot connect to remote server via RA if destination is not deployed locally

Miroslav Novak (JIRA) issues at jboss.org
Tue Jun 12 04:37:00 EDT 2018


     [ https://issues.jboss.org/browse/WFWIP-14?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Miroslav Novak updated WFWIP-14:
--------------------------------
    Steps to Reproduce: 
{code}
git clone git://git.app.eng.bos.redhat.com/jbossqe/eap-tests-hornetq.git
cd eap-tests-hornetq/scripts/
groovy -DEAP_ZIP_URL=https://eap-qe-jenkins.rhev-ci-vms.eng.rdu2.redhat.com/view/EAP7/view/EAP7-JMS/view/early-testing/view/tooling/job/early-testing-messaging-prepare/124/artifact/jboss-eap.zip PrepareServers7.groovy
export WORKSPACE=$PWD
export JBOSS_HOME_1=$WORKSPACE/server1/jboss-eap
export JBOSS_HOME_2=$WORKSPACE/server2/jboss-eap
export JBOSS_HOME_3=$WORKSPACE/server3/jboss-eap
export JBOSS_HOME_4=$WORKSPACE/server4/jboss-eap

cd ../jboss-hornetq-testsuite/

mvn clean test -Dtest=ActivationConfigPropertiesTestCase#useJndiTest -DfailIfNoTests=false -Deap=7x -Deap7.org.jboss.qa.hornetq.apps.clients.version=7.1517218654-SNAPSHOT | tee log
{code}

  was:
{code}
git clone git://git.app.eng.bos.redhat.com/jbossqe/eap-tests-hornetq.git
cd eap-tests-hornetq/scripts/
groovy -DEAP_ZIP_URL=https://eap-qe-jenkins.rhev-ci-vms.eng.rdu2.redhat.com/view/EAP7/view/EAP7-JMS/view/early-testing/view/tooling/job/early-testing-messaging-prepare/124/artifact/jboss-eap.zip PrepareServers7.groovy
export WORKSPACE=$PWD
export JBOSS_HOME_1=$WORKSPACE/server1/jboss-eap
export JBOSS_HOME_2=$WORKSPACE/server2/jboss-eap
export JBOSS_HOME_3=$WORKSPACE/server3/jboss-eap
export JBOSS_HOME_4=$WORKSPACE/server4/jboss-eap

cd ../jboss-hornetq-testsuite/

mvn clean test -Dtest=BytemanLodh2TestCase#testSimpleLodh2KillWithFiltersOnTransactionPrepare -DfailIfNoTests=false -Deap=7x -Deap7.org.jboss.qa.hornetq.apps.clients.version=7.1517218654-SNAPSHOT | tee log
{code}



> [Artemis upgrade] MDB cannot connect to remote server via RA if destination is not deployed locally
> ---------------------------------------------------------------------------------------------------
>
>                 Key: WFWIP-14
>                 URL: https://issues.jboss.org/browse/WFWIP-14
>             Project: WildFly WIP
>          Issue Type: Bug
>          Components: JMS
>            Reporter: Erich Duda
>            Assignee: Martyn Taylor
>            Priority: Blocker
>              Labels: activemq, feature-branch-blocker
>
> For more information about origin of this issue see JBEAP-13857.
> *Scenario*
> * There are two servers called JMS servers which have deployed destinations
> * There are two servers called MDB servers which have configured RA to connect to JMS servers and have deployed MDBs
> * MDBs resend messages from InQueue to OutQueue
> *Issue:* RA on MDB servers is not able to connect to JMS servers.
> *Detailed description of the issue*
> There is an MDB with following activation config:
> {code}
> @MessageDriven(name = "mdb1",
>         activationConfig = {
>                 @ActivationConfigProperty(propertyName = "destinationType", propertyValue = "javax.jms.Queue"),
>                 @ActivationConfigProperty(propertyName = "destination", propertyValue = "jms/queue/InQueue"),
>                 @ActivationConfigProperty(propertyName = "rebalanceConnections", propertyValue = "true"),
>                 @ActivationConfigProperty(propertyName = "hA", propertyValue = "true"),
>                 @ActivationConfigProperty(propertyName = "messageSelector", propertyValue = "color = 'RED'")})
> {code}
> In ActiveMQActivation::setupDestination method there is a code which tries to do a JNDI lookup. If it fails the destination is created using the ActiveMQJMSClient::createQueue where the destination name is created from the JNDI name.
> {code}
> try {
>                destination = (ActiveMQDestination) ActiveMQRaUtils.lookup(ctx, destinationName, destinationType);
>             } catch (Exception e) {
>                if (destinationName == null) {
>                   throw ActiveMQRABundle.BUNDLE.noDestinationName();
>                }
>                String calculatedDestinationName = destinationName.substring(destinationName.lastIndexOf('/') + 1);
>                logger.debug("Unable to retrieve " + destinationName +
>                                                 " from JNDI. Creating a new " + destinationType.getName() +
>                                                 " named " + calculatedDestinationName + " to be used by the MDB.");
>                // If there is no binding on naming, we will just create a new instance
>                if (isTopic) {
>                   destination = (ActiveMQDestination) ActiveMQJMSClient.createTopic(calculatedDestinationName);
>                } else {
>                   destination = (ActiveMQDestination) ActiveMQJMSClient.createQueue(calculatedDestinationName);
>                }
>             }
> {code}
> When the destination is not deployed locally (on the same server as MDB is deployed), the lookup fails and the destination is created using {{ActiveMQJMSClient::createQueue}} method, where {{calculatedDestinationName}} is {{InQueue}}.
> Later in the code, when RA tries to connect to the remote EAP server, it uses this destination when it creates a consumer. Since on the remote server there is no destination with core address {{InQueue}}, the request to create the consumer fails and it is being periodically retried.



--
This message was sent by Atlassian JIRA
(v7.5.0#75005)


More information about the jboss-jira mailing list