Jeremy Boynes wrote:
Tom McQueeney wrote:

Matt Hogstrom wrote:

I like the idea.  I'd add that it would be nice to use a scheme such
as linux does for startup / shutdown with a letter designator and a
number in the rc.n directories.  That scheme allows a lot of
flexibility and control as well.  I also like the runLast / runFirst
idea but there can only be one first and last :)



Thanks for your feedback. How about a boolean runAtEnd to kinda imply it won't be the last, but it will be run toward the end? This would be easy to implement.

Maybe Dain can answer this, but perhaps a completely different solution is not to use a shutdown hook at all in the FileConfigurationList GBean. Maybe the GBean should save the name of running configurations at doStop time. At first glance, I can't see a reason why this solution wouldn't work, since I don't think other GBeans write to the config.list store, but maybe other components read the file and would break if the file were changed while the server was running and someone stopped the FileConfigurationList GBean.

The above change would solve the problem with the FileConfigList GBean but maybe cause problems in the future for other shutdown hooks. (Currently, only two GBeans register shutdown hooks with the kernel.) The primary problem with the configuration manager's shutdown hook running first is it stops all the GBeans. Any kernel references the other GBean shutdown hooks have become stale proxies afterword, making any work they need to do with the other components a little difficult.


Probably better is to not do this automatically on shutdown at all as at that time you are not certain that the configurations are actually good.

Instead, how about sending a notification out when the set of Configurations that are /meant/ to be running changes (e.g. at the end of a JSR88 start operation) and have the FCL GBean listen for those notifications and update its state then.

Jeremy: Thank you for the advice. I can see updating the config.list when a configuration is started or stopped is a better solution. It would allow cleaner server restart after an unexpected shutdown.

Unfortunately, this better solution involves areas of Geronimo I'm unfamiliar with. I'm still interested in fixing this bug more elegantly, so any advice you can give on where the jsr-88 start (and stop?) operations take place would be appreciated. Also, regarding the FCL listening for stop/start events, would this be via a LifecycleListener? The FCL would register for events coming from the PersistentConfigurationList objectname?

-Tom


--
Jeremy

Reply via email to