[jbossts-issues] [JBoss JIRA] Commented: (JBTM-503) Shutdown the ExpiredEntryMonitor when stopping the RecoveryManager
Mauro Molinari (JIRA)
jira-events at lists.jboss.org
Wed Mar 11 05:59:22 EDT 2009
[ https://jira.jboss.org/jira/browse/JBTM-503?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12456611#action_12456611 ]
Mauro Molinari commented on JBTM-503:
Hi Andrew, I perfectly agree with you regarding the finalizers: I knew it was a very ugly solution when I wrote that I would have needed to call the finalize() method from my application. By the way, I saw it done in other places of JBossTS codebase ;-) (TxControl calls finalize() on the transaction status manager on shutdown).
I hope I have understood your thoughts in the right way, so I'm going to attach the patch I prepared.
> 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