[jbossts-issues] [JBoss JIRA] Updated: (JBTM-503) Shutdown the ExpiredEntryMonitor when stopping the RecoveryManager
Mauro Molinari (JIRA)
jira-events at lists.jboss.org
Wed Mar 11 05:59:23 EDT 2009
[ https://jira.jboss.org/jira/browse/JBTM-503?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mauro Molinari updated JBTM-503:
this is the patch I prepared based on what we have discussed. I hope it can be a good starting point for you.
Please note that I have left a TODO in ExpiredEntryMonitor.shutdown() because I think it might be desirable to log the catching of an InterruptedException while waiting for the completion of the monitor thread.
The patch is against 4.5.0GA codebase.
> Shutdown the ExpiredEntryMonitor when stopping the RecoveryManager
> Key: JBTM-503
> URL: https://jira.jboss.org/jira/browse/JBTM-503
> Project: JBoss Transaction Manager
> Issue Type: Feature Request
> Security Level: Public(Everyone can see)
> Components: Recovery
> Affects Versions: 4.5
> Environment: Tomcat + Spring + DBCP + JBossJTA
> Reporter: Mauro Molinari
> Assignee: Andrew Dinn
> Attachments: JBossTS.patch
> When the recovery manager is started, the implementation RecoveryManagerImple starts the ExpiredEntryMonitor.
> When you stop the recovery manager, however, the ExpiredEntryMonitor is not shut down.
> On line 250 of com.arjuna.ats.internal.arjuna.recovery.RecoveryManagerImple there's the line ExpiredEntryMonitor.shutdown() commented out, with a "TODO why?" comment immediately before.
> I don't know exactly what should be the lifecylce of ExpiredEntryMonitor versus that of RecoveryManagerImple, however I think that one of the following should happen:
> - ExpiredEntryMonitor is started when RecoveryManagerImple is started (rather than constructed), so that it is shut down when the RecoveryManagerImple is stopped
> - RecoveryManagerImple provides a way to "dispose" or "disable" it and this includes the shutdown of ExpiredEntryMonitor
> - it is documented that stopping the recovery manager needs the ExpiredEntryMonitor to be stopped too: however, please consider that com.arjuna.ats.internal.arjuna.recovery.ExpiredEntryMonitor.shutdown() throws a NullPointerException if called while the ExpiredEntryMonitor has not been started before and there is no public method to test if it has been started or not; so if I need to write some code that stops the ExpiredEntryMonitor (without knowing if it has been started or not) I have to write some ugly code like:
> catch(final NullPointerException e)
> // ExpiredEntryMonitor had not been started
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