JeffersonLab / JANA2

Multi-threaded HENP Event Reconstruction
https://jeffersonlab.github.io/JANA2/
Other
6 stars 9 forks source link

Service initialization fixes #287

Closed nathanwbrei closed 3 months ago

nathanwbrei commented 3 months ago

Changed how the builtin JServices (JParameterManager, JComponentManager, JLoggingService, JPluginLoader) get initialized. Previously, app.SetParameterValue() sometimes didn't have an effect depending the Service that used the parameter had already been initialized. This meant that:

Now, the JApplication constructor sets up the services, but doesn't initialize any of them. All Services are meant to be initialized during JApplication::Initialize(). JApplication::SetParameter() and ProvideService() will throw an exception if the user attempts to call them after Initialize() finishes. Calling JApplication::GetService() before Initialize() starts will print a warning message. Currently we still need to be able to call GetService() before Initialize() for the sake of the "custom topologies" used by SubeventExample, TopologyTest, and SubeventTest. However, we will be changing this at two different levels in the near future: Firstly, users will be able to provide multiple instances of a JService and choose which one to use via a parameter. Secondly, SubeventExample won't even require a custom topology.