[jbossts-issues] [JBoss JIRA] Updated: (JBTM-535) CLONE -make RecoveryManager restartable

Mauro Molinari (JIRA) jira-events at lists.jboss.org
Mon Apr 20 04:13:22 EDT 2009


     [ https://jira.jboss.org/jira/browse/JBTM-535?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mauro Molinari updated JBTM-535:
--------------------------------

        Fix Version/s:     (was: 4.6.0)
    Affects Version/s: 4.6.1
                           (was: 4.5.0)
          Description: 
Issue JBTM-468 is not completely solved.

com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery in its shutdown(boolean) method does not stop the _listener, so a call to _listener.stopListener() should be added to it. Otherwise the listener is never stopped and this can cause a leak if the JVM does not terminate between restarts.

  was:
Stopping and restarting the transaction manager inside JBossAS causes problems, because the recovery system does not like to be restarted once it is stopped:

java.lang.IllegalThreadStateException
	at java.lang.Thread.start(Thread.java:571)
	at com.arjuna.ats.internal.arjuna.recovery.RecoveryManagerImple.start(RecoveryManagerImple.java:236)
	at com.arjuna.ats.arjuna.recovery.RecoveryManager.startRecoveryManagerThread(RecoveryManager.java:226)
	at com.arjuna.ats.jbossatx.jts.TransactionManagerService.start(TransactionManagerService.java:285)


Options would seem to be disposing the static singleton _recoveryManager in RecoveryManager and recreating it on the next start, effectively causing a new RecoveryManagerImple to be instantiated, or keep the RecoveryManagerImple instance and rework its impl so that the  PeriodicRecovery _periodicRecovery is disposed and recreated on restart.

Either one has slightly odd semantics as the PeriodicRecovery is a Thread (which can't be restarted so has to be replaced) and also the object that has the module list and the server socket, so disposal and/or recreation of this state will be needed on restart. Maybe better to rename stop() to dispose() or something similarly final, to indicate the semantics are 'throw this away and start again' rather than giving the impression that stop/start == suspend/resume which is misleading.



> CLONE -make RecoveryManager restartable
> ---------------------------------------
>
>                 Key: JBTM-535
>                 URL: https://jira.jboss.org/jira/browse/JBTM-535
>             Project: JBoss Transaction Manager
>          Issue Type: Feature Request
>      Security Level: Public(Everyone can see) 
>          Components: Application Server Integration, Recovery
>    Affects Versions: 4.6.1
>            Reporter: Mauro Molinari
>            Assignee: Jonathan Halliday
>
> Issue JBTM-468 is not completely solved.
> com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery in its shutdown(boolean) method does not stop the _listener, so a call to _listener.stopListener() should be added to it. Otherwise the listener is never stopped and this can cause a leak if the JVM does not terminate between restarts.

-- 
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 jbossts-issues mailing list