[jboss-jira] [JBoss JIRA] Updated: (JBMESSAGING-1171) Session.close (indirectly Producer.close) should wait async execution buffers to be emptied before closing channels

Clebert Suconic (JIRA) jira-events at lists.jboss.org
Fri Nov 30 19:07:46 EST 2007


     [ http://jira.jboss.com/jira/browse/JBMESSAGING-1171?page=all ]

Clebert Suconic updated JBMESSAGING-1171:
-----------------------------------------

    Attachment: test-jbm1171.patch

to apply this patch:


cd $WORKSPACE/tests
patch -p0 < test-jbm1171.patch

> Session.close (indirectly Producer.close) should wait async execution buffers to be emptied before closing channels
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: JBMESSAGING-1171
>                 URL: http://jira.jboss.com/jira/browse/JBMESSAGING-1171
>             Project: JBoss Messaging
>          Issue Type: Bug
>            Reporter: Clebert Suconic
>         Assigned To: Tim Fox
>             Fix For: 1.4.0.SP2
>
>         Attachments: test-jbm1171.patch
>
>
> To easily replicate this, use org.jboss.test.messaging.jms.stress.SeveralClientsStressTest
> At your workspace you could lower the total time for the execution. (I will have attached a patch on this JIRA)
>    protected static long PRODUCER_ALIVE_FOR=5000; // originalValue=60000
>    protected static long CONSUMER_ALIVE_FOR=5000; // originalValue=60000
>    protected static long TEST_ALIVE_FOR=15000; // originalValue = 5 * 60 * 1000
>    protected static int NUMBER_OF_PRODUCERS=50;
>    protected static int NUMBER_OF_CONSUMERS=50;
> The test is loosing messages on this following condition:
> - you have N Threads, each Thread equals one Producer, sending messages at a constant rate.
> - Each message is sent asynchronously
> - After some time the Thread decides to stop producing messages, and immediately closes the session.
> - Any message that hasn't been sent to the server yet would be lost.
> How to validate what I'm talking about:
> Run the testcase as is (lowering the time as I said before on this message).
> You will see a warning at the end of the test with non processed messages:
> @main 17:51:50,486 WARN  [SeveralClientsStressTest] Message non processed, txt="msg prod#38 seq#31", msgToString=[delegator->JBossMessage[463]:NON-PERSISTENT, deliveryId=0]
> @main 17:51:50,486 WARN  [SeveralClientsStressTest] Message non processed, txt="msg prod#38 seq#29", msgToString=[delegator->JBossMessage[434]:NON-PERSISTENT, deliveryId=0]
> @main 17:51:50,486 WARN  [SeveralClientsStressTest] Message non processed, txt="msg prod#38 seq#24", msgToString=[delegator->JBossMessage[339]:NON-PERSISTENT, deliveryId=0]
> @main 17:51:50,486 WARN  [SeveralClientsStressTest] Message non processed, txt="msg prod#38 seq#26", msgToString=[delegator->JBossMessage[374]:NON-PERSISTENT, deliveryId=0]
> If you look on logs you will realize that any message appearing on this list didn't make to the server. and it will aways coincide with the very few last messages sent on this thread.
> If you put a Thread.sleep(10000); before the conn.close() on SeveralClientsStressTest.Producer (line 422) the test will pass:
>                Thread.sleep(10000);
>             finally
>             {
>                Thread.sleep(10000);
>                conn.close();
>             }
> - Somehow producer.close / session.close should empty the async buffer before closing the session.
> I have attached a patch for this test.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.jboss.com/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jboss-jira mailing list