Hide Forgot
The code _log.info("Received text message with contents: [" + content + "] at " + new Date()); _log.info(message.getJMSDestination().toString()); _log.info("Queue name: " + ((javax.jms.Queue)message.getJMSDestination()).getQueueName()); returns 4:03:55,513 INFO [QpidGoodByeListenerBean] Received text message with contents: [QpidHelloListenerBean received message with content: [Hello, World!] at Fri Dec 16 14:03:54 CET 2011] at Fri Dec 16 14:03:55 CET 2011 14:03:55,513 INFO [QpidGoodByeListenerBean] 'amq.direct'/'goodbye.Queue'; None 14:03:55,514 INFO [QpidGoodByeListenerBean] Queue name: null This behaviour breaks TCK tests.
Looking at the code, this seems to be a simple issue in that the queueName is not being parsed when we do getInfoFromAddress in the AMQDestination class. This is the JMS client so I am changing the associated component.
I am changing the component back to qpid-jca since we have an easier fix on the JCA side that would be less disruptive to the JMS client and satisfies the requirement and JMS API conformance.
Sigh...moving this back to qpid-java as it is indeed a JMS client issue and the JCA only fix will not work for all cases.
Jiri, Could you please attach the jndi properties file that you use for the tck ? Regards, Rajith
This issue results in 4 TCK failures. However there are two distinct issues here. One is where getQueueName() is called on a message we just received. The other issue is where getQueueName is called when creating a QueueSender. Instead of trying to fix the underlying issue in a fundamental way, I've looked at an alternative approach of fixing it on a case by case, thereby limiting the impact only to the area considered. This was done to minimize any risk to stability. A fix for the first issues is posted upstream via QPID-3786 http://svn.apache.org/viewvc?view=rev&rev=1236355 A tactical fix for the second issue was discussed at the meeting today. Patch was emailed for feedback. This patch will not be pushed upstream.
Patch for second issue: http://mrg1.lab.bos.redhat.com/cgit/qpid.git/commit/?h=0.14-mrg-preview&id=b23e0a1d6cfc7cc8b7d3c2468015dc8522784fa4
I have identified yet another instance com/sun/ts/tests/jms/ee/ejb/queueCMTTests/Client.java#msgHdrJMSDestinationTest com/sun/ts/tests/jms/ee/ejb/queueCMTTests/Client.java#msgHdrReplyToTest Queue is into EAR's private namespace. The destionation object can be looked-up but queue name again returns null I have modified a TCK code in common/TestsEJB.java to public String getDestination_1() { String tmp = null; try { TestUtil.logTrace("Getting Destination " + TESTQUEUENAME ); Destination dest = (Destination) nctx.lookup(TESTQUEUENAME); tmp = ((Queue)dest).getQueueName(); TestUtil.logTrace("Got destination " + dest); TestUtil.logTrace("Got queue name " + tmp); } catch ( Exception e ) { TestUtil.logErr("Exception in getDestination_1: ", e); } return tmp; } The results are 02-03-2012 07:15:54: SVR-TRACE: Getting Destination java:comp/env/jms/MY_QUEUE 02-03-2012 07:15:54: SVR-TRACE: Got destination 'MY_QUEUE'/None; { 'create': 'always', 'durable': 'true' } 02-03-2012 07:15:54: SVR-TRACE: Got queue name null
Created attachment 559281 [details] test log for new case
Technical note added. If any revisions are required, please edit the "Technical Notes" field accordingly. All revisions will be proofread by the Engineering Content Services team. New Contents: Cause: Queue name is not set properly (when address strings are used). Consequence: getQueueName() returns null and causes NPE. Fix: The code will now try to resolve the address (where possible) to figure out the queue name from address strings. Note this does not fix all cases. Result: In most cases getQueueName() will return the proper queue name.
Created attachment 571138 [details] reproducer of two failing cases Verified on RHEL 6.2 / 5.8 ( i686 / x86_64 ) attaching reproducer of failing cases failing cases org.apache.qpid.example.myQueueSender org.apache.qpid.example.JMSReplyTo
rpm -qa | grep qpid qpid-java-client-0.14-3.el6.noarch qpid-cpp-client-0.14-10.el6.i686 qpid-cpp-client-devel-0.14-10.el6.i686 qpid-cpp-server-store-0.14-10.el6.i686 qpid-java-common-0.14-3.el6.noarch qpid-cpp-server-0.14-10.el6.i686 qpid-cpp-server-xml-0.14-10.el6.i686 qpid-java-example-0.14-3.el6.noarch qpid-qmf-0.14-4.el6.i686 python-qpid-qmf-0.14-4.el6.i686 qpid-cpp-client-devel-docs-0.14-10.el6.noarch qpid-cpp-server-cluster-0.14-10.el6.i686 python-qpid-0.14-5.el6.noarch qpid-cpp-server-devel-0.14-10.el6.i686 qpid-jca-0.14-9.el5.noarch qpid-tools-0.14-1.el6.noarch --> VRIFIED