[jboss-jira] [JBoss JIRA] Commented: (JBMESSAGING-1403) Recovery doesn't hapen when JBoss Transactions Recovery Manager is configured

Jeff Mesnil (JIRA) jira-events at lists.jboss.org
Tue Oct 14 12:01:21 EDT 2008


    [ https://jira.jboss.org/jira/browse/JBMESSAGING-1403?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12433756#action_12433756 ] 

Jeff Mesnil commented on JBMESSAGING-1403:
------------------------------------------

The example I used to reproduce the bug was bogus.
The MyTopicListener was a non-durable subscription and it is normal that messages sent to the topic are not redelivered to the listener when the server is restarted.

The customer example's configuration shows he is correctly using a *durable* subscription.

When I modify our example to use a durable subscription, I'm not able to reproduce the bug; the messages are all redelivered to the server when the server is restarted.

However, one thing to notice is that the message are redelivered to the MDB on the 2nd recovery pass (which occurs 2 minutes after the server is restarted and the 1st recovery pass is done).

Provided I gave enough time for the server to recover (more than 2 minutes), I'm not able to reproduce the bug


> Recovery doesn't hapen when JBoss Transactions Recovery Manager is configured
> -----------------------------------------------------------------------------
>
>                 Key: JBMESSAGING-1403
>                 URL: https://jira.jboss.org/jira/browse/JBMESSAGING-1403
>             Project: JBoss Messaging
>          Issue Type: Bug
>          Components: Messaging Core
>    Affects Versions: 1.4.0.SP3.CP02
>         Environment: JBoss-EAP-4.3_CP1 , JDK  1.5.0_15-b04 , Fedora 8, MySQL  5.0.45 , Enabled JBoss Transactions Recovery Manager to recover JBoss Messaging resources as per the "JBoss Messaging XA Recovery Configuration"
>            Reporter: Tyronne Wickramarathne
>            Assignee: Jeff Mesnil
>             Fix For: Unscheduled
>
>         Attachments: MessagingXAResourceRecovery#getXAResource().txt, server-200808131311.txt.zip, server.log, Tests.zip
>
>
> How to reproduce:
> ------------------------
> -Configure jbossjta-properties.xml is configured with the following property:
> <property name="com.arjuna.ats.jta.recovery.XAResourceRecovery.JBMESSAGING1"
> value="org.jboss.jms.server.recovery.MessagingXAResourceRecovery;java:/DefaultJMSProvider"/>
> -Deploy the attached mdbtest.war , mymdbs.jar at JBoss-EAP.
> -Run the qsender.jsp : http://<your_host>:<port>/mdbtest/qsender.jsp
> -Kill the JBoss-EAP when all the messages are sent to the destination
> -Reboot the server, you'd see the messages are getting delivered, but the ERROR+WARN messages are getting logged
> The Tests.zip folder contains both (mdbtest.war , mymdbs.jar) libraries, configured to send 100000 messages while setting the latency in consuming messages to 500ms. You can use these libraries to reproduce this issue, quite rapidly.
> Findings after debugging JBM:
> -----------------------------------------
> When you reproduce this as per the given instructions, it gives you two different behaviours.
> 1. You don't get any records left at JBM_MSG, JBM_MSG_REF or JBM_TX tables, once the server is killed.
> When you restart the server, you can find the following :
> 2008-07-18 11:57:44,070 ERROR [STDERR] **recoveryModules [com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule at 81db25, com.arjuna.ats.internal.txoj.recovery.TORecoveryModule at 15a740a, com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule at 1787395]
> 2008-07-18 11:57:44,070 WARN  [com.arjuna.ats.jta.logging.loggerI18N] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] [com.arjuna.ats.internal.jta.resources.arjunacore.norecoveryxa] Could not find new XAResource to use for recovering non-serializable XAResource < 131075, 28, 26, 1-7f000001:a493:487ef922:4f67f000001:a493:487ef922:4fc########################################################################## >
> MessagingXAResourceRecovery#getXAResource() returns the following :
> "res"= MessagingXAResourceWrapper  (id=399)	
> 	connection= null	
> 	delegate= null	
> 	password= null	
> 	providerName= "java:/DefaultJMSProvider"	
> 		count= 24	
> 		hash= 0	
> 		offset= 58	
> 		value= char[82]  (id=412)	
> 	username= null
> 2. You'd find one or more records left with at JBM_MSG, JBM_MSG_REF or JBM_TX tables, when the server is killed.
> At this stage, when you restart the server,  you won't encounter any transaction errors from JBossTM component. Also, you can notice MessagingXAResourceRecovery#getXAResource()  returns a valid XA resource.
> Please refer the attach document to see the content of : MessagingXAResourceRecovery#getXAResource().txt
> But, the message(s) remains in the database table and it doesn't get delivered to the destination or shown in the corresponding destination when you observe via JMX-Console. Also, I have attached the server.log for this scenario at TRACE level.

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

        



More information about the jboss-jira mailing list