On 8 Apr 2011, at 17:42, Kabir Khan wrote:
> A more important question is what constitutes a clean server
boot? We'll need some callback in the persister to be triggered when that happens
(since ConfigurationPersister.store()) is not called until people start changing the
model). Some thoughts about when this could get called are either:
> -Once we have parsed the config file into updates and successfully executed those in
the model controller
> -The above but all services have successfully started (similar to what we do in
ApplicationServerService.BootstrapListener()). I think a problem with this is that people
could have started issuing management commands once the protocol + handlers are up and
running before all the other services are up and running.
Maybe instead of worrying about this I create a standalone.xml.booting file when
initializing the persister. If ConfigurationPersister.store() gets called we
"know" we booted cleanly, and copy this across to .original as needed? If nobody
issues any ops that change the model, we'd not get those files created but at least we
would have .booting to fall back on?
So the flow would be
Initialising persister:
create .booting
create .intial and .original if they don't exist
On model save:
If .booting exists and it is newer than .original, create .original
initialize checkpoint
create .last and versioned copy
I don't like this idea very much any more :-)