Skip to content

rework of the EventLoop Worker implementation

Nils Erik Krumnack requested to merge krumnack/athena:el_worker_rework into 21.2

This ended up as a rather major rewrite of the Worker class. Essentially I did three things though:

  • I moved some functionality that was common between the different child classes into the Worker class itself. Back when we still had to support PROOF which worked completely differently this functionality needed to be implemented separately for each worker, but there was no longer any reason for such a setup.
  • I moved all the diagnostic, instrumentation and helper code out of the Worker class and into separate classes. For that I implemented a new Module mechanism that allows to run code at various places inside the worker job. Not only does that simplify and clarify the Worker implementation, it also makes it a lot easier to understand what each of these modules do.
  • I removed the state machine from the Worker class, which was actually quite hard to maintain and understand at this point. Part of the state machine is moved to a new module AlgorithmStateModule, but most of the state machine logic I could just remove straight out. This is another simplification due to no longer supporting PROOF.
  • I also dd a general update to follow more of the standard ATLAS coding conventions with status codes, message streams/macros, smart pointers, etc.

Let's already alert @akraszna to this. The shifters should take a look at it first, but given the scope of these changes I presume that at least some parts will be flagged for expert review.

Merge request reports