2015-12-04 13:39 GMT+01:00 Christophe Demarey <Christophe.Demarey@inria.fr>:
Hi,

Guillermo, Pablo and I started to work on a new implementation for the image startup / shutdown list.
The old implementation misses domain objects, polluted the SmalltalkImage class and introduced crazy dependencies to other packages.

So, what is Session Manager?
  • a replacement of the Session class (is now WorkingSession)
  • a rewrite of startup / shutdown list with domain objects��
    • SessionManager:��can create new sessions and manage categories. Also provide a facade to register new session handlers. Session manager provide sthe list of handlers by order of priority (categories order and categories priority) either for the startup or the shutdown,��
    • WorkingSession:��unique object for the current smalltalk session (I.e. between a startup and a shutdown).��On each image startup the current session is invalidated and a new session is created. Define how errors should be handled. Run the startup / shutdown process.��
    • SessionCategory: we defined some well known categories for startup / shutdown: system, network, GUI, tools and there is room to add user specific categories, It help to run the handler at the right time without caring about the whole order.
    • and SessionHandlers: handleSession for a specific class or any other object.
  • the shutdown list is now simply the startup list reversed
  • we also refactored error handling at startup by using the UIManager and StartupUIManager. It allowed to remove��ugly checks like #isInteractive, isHeadless in error handling methods and centralize that in UIManager.

You can find an image with the new SessionManager in action here:��https://ci.inria.fr/pharo-contribution/job/SessionManager/

As it is a critical piece of code, could you play / test it a bit before we integrate this new mechanism in the Pharo image?

Looks good. What are the main critical startup/shutdown users( classes) that should be tested?
I did some tests with AthensSceneView (uses NB and calls Smalltalk session for reinit external resources) and Roassal.
I got one image startup failure, but I couldn't reproduce it yet. Maybe I did image save and image save and quit, too quick.
��

Regards,
Christophe

ps: Pharo tests pass
ps2: There is still some code to clean / remove from the old startup management system.