[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