Bug 49111 - "Message With ID Not Found" Error on JMS P2P sampler when NOT Use non-persistent delivery mode
"Message With ID Not Found" Error on JMS P2P sampler when NOT Use non-persist...
Status: RESOLVED FIXED
Product: JMeter
Classification: Unclassified
Component: Main
2.3.4
PC Windows XP
: P2 normal (vote)
: ---
Assigned To: JMeter issues mailing list
:
Depends on:
Blocks:
  Show dependency tree
 
Reported: 2010-04-13 02:38 UTC by Cheng Chi
Modified: 2010-06-25 19:23 UTC (History)
0 users



Attachments
JMS sampler for HornetQ2.0 (8.66 KB, text/plain)
2010-04-13 02:38 UTC, Cheng Chi
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Cheng Chi 2010-04-13 02:38:44 UTC
Created attachment 25276 [details]
JMS sampler for HornetQ2.0

Here is the Debug message when I got Message with ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000 not found.

2010/04/13 11:39:16 DEBUG - jmeter.control.GenericController: Calling next on: org.apache.jmeter.control.LoopController 
2010/04/13 11:39:16 DEBUG - jmeter.testelement.property.AbstractProperty: Running version, executing function 
2010/04/13 11:39:16 DEBUG - jmeter.protocol.jms.sampler.JMSSampler: Adding property [JMSCorrelationID=20100413-1139161] 
2010/04/13 11:39:16 DEBUG - jmeter.protocol.jms.sampler.Receiver: Received message, correlation id:20100413-1139161 
2010/04/13 11:39:16 DEBUG - jmeter.protocol.jms.sampler.MessageAdmin: REQ_ID [ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000] 
2010/04/13 11:39:16 DEBUG - jmeter.protocol.jms.sampler.MessageAdmin: RPL_ID [ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000] for holder null 
2010/04/13 11:39:16 DEBUG - jmeter.protocol.jms.sampler.FixedQueueExecutor: wait for reply ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000 started on 1271129956238 
2010/04/13 11:39:18 DEBUG - jmeter.protocol.jms.sampler.FixedQueueExecutor: done waiting for ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000 ended on 1271129958238 
2010/04/13 11:39:18 DEBUG - jmeter.protocol.jms.sampler.MessageAdmin: GET_ID [ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000] for request=HornetQMessage[ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000]:PERSISTENT, reply=null 
2010/04/13 11:39:18 INFO  - jmeter.protocol.jms.sampler.MessageAdmin: Message with ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000 not found. 
2010/04/13 11:39:18 DEBUG - jmeter.protocol.jms.sampler.JMSSampler: No reply message received 

Actually, I got this kind of error about 1-2 times in 10 during my testing, especially leave "Use non-persistent delivery mode" checkbox unchecked.

In Debug message, it shows " RPL_ID [ID:21f54540-46ae-11df-b307-0016ec6d1bb6:8000000000000000] for holder null " which means executing

PlaceHolder holder = (PlaceHolder) table.get(id);

table return null of corresponding Request ID after checking the receiver.java and MessageAdmin.java source code.

BTW,  after checking "Use non-persistent delivery mode" checkbox, this kind of error disappear. 

please take a look at this issue, i am using HornetQ2.0 as JMS Queue, and take its example queue for testing. See attachment of my JMS P2P sampler.
Hope it helps!
Cheng Chi
Comment 1 Cheng Chi 2010-04-13 02:56:36 UTC
Here is Jboss HornetQ download link, i am using 2.0GA version:
http://www.jboss.org/hornetq/downloads.html
let me know if anyone need me to help debugging or testing on your code changes.
Comment 2 Sebb 2010-04-26 10:17:55 UTC
There do seem to be some problems with the code:

1) the details are stored in the table after the message has been sent, so it's possible for the response to arrive before the request details have been stored. 

This is done because the message id is not available before the message has been sent.

If "Use Request Message Id As Correlation Id" is not selected, the request can be stored before the message is sent. But otherwise it may be difficult to fix.

2) if "Use Request Message Id As Correlation Id" is selected, the receive code uses the Correlation Id, rather than using the message ID. This should be easier to fix, but there's no point if the bug above cannot be fixed.

==

I've not yet established why selecting non-persistent delivery mode should fix the problem, but perhaps it speeds up the return from the send method.
Comment 3 Sebb 2010-04-26 17:35:22 UTC
Hopefully now fixed:

URL: http://svn.apache.org/viewvc?rev=938062&view=rev
Log:
Bug 49111 - "Message With ID Not Found" Error on JMS P2P sampler.
Partial fix (can still fail if "Use Request Message Id As Correlation Id" is selected)

URL: http://svn.apache.org/viewvc?rev=938247&view=rev
Log:
Bug 49111 - "Message With ID Not Found" Error on JMS P2P sampler.
Fixed rest of bug
Comment 4 Cheng Chi 2010-04-26 23:43:02 UTC
Thanks Sebb! 
Will do the verification later.

Cheng Chi
Comment 5 Sebb 2010-05-01 08:44:08 UTC
(In reply to comment #2)
> 
> 2) if "Use Request Message Id As Correlation Id" is selected, the receive code
> uses the Correlation Id, rather than using the message ID.

I now think that the original code may have been correct - the remote client should be the one to set the reply Correlation Id from the request Message Id.

However, this would not apply if the remote client is JMeter itself, as presumably is the case if the request queue is the same as the reply queue.
Comment 6 Sebb 2010-06-25 19:23:01 UTC
The JMS code has been overhauled, and correlation id matching is now fully configurable.

If the current nightly builds don't solve the problem, please re-open with details.