ATLAS Offline Software
Loading...
Searching...
No Matches
EL::Detail Namespace Reference

Classes

struct  AlgorithmData
 all the data a worker tracks for an individual algorithm More...
class  AlgorithmMemoryModule
 a Module wrapping each algorithm with its own memory monitor More...
class  AlgorithmStateModule
 a Module managing the state of the algorithms on the workers More...
class  AlgorithmTimerModule
 a Module wrapping each algorithm with its own timer More...
class  BaseManager
 a Manager to handle all of the basic tasks More...
class  BatchInputModule
 the IInputModule implementation for the batch driver More...
class  DirectInputModule
 the IInputModule implementation for the direct driver More...
class  DriverManager
 a Manager that passes callbacks through to the Driver More...
class  EventCountModule
 a Module tracking how many events get processed by each algorithm More...
class  FactoryPreloadModule
 a Module preloading all the registered factories More...
class  FileExecutedModule
 a Module recording when FileExecuted was called More...
class  GridReportingModule
 a Module that handles the reporting from the job on the grid More...
class  IInputModuleActions
 the actions that Module::processInputs can perform More...
class  LeakCheckModule
 a Module implementing a simple leak checker More...
class  Manager
 an interface for classes that handle job management for the Driver More...
struct  ManagerData
 an internal data structure for passing data between different manager objects anbd step More...
class  MemoryMonitorModule
 a Module monitoring memory usage at various points during the job More...
class  Module
 the base class for EventLoop instrumentation module More...
struct  ModuleData
 the data the EventLoop core classes are sharing with the Module implementation More...
class  OutputStreamData
 all data needed to manage a given output stream More...
class  PostClosedOutputsModule
 Module enabling to perform checks/actions on outputs once files are all closed. More...
class  RetrieveManager
class  StopwatchModule
 a Module wrapping the TStopwatch class More...
class  SubmitDirManager
 a Manager to handle the submission directory itself More...
class  SubmitManager
class  TEventModule
class  TreeCacheModule
 a Module for setting the TTreeCache parameters on the input More...
class  WorkerConfigModule
 a Module implementation for running user configuration on the worker node More...

Enumerations

enum class  ManagerOrder { BASE , SUBMIT_DIR , OPERATION , DRIVER }
 an enum to establish an order in which to apply managers More...
enum class  ManagerStep {
  initial , initialSubmit , updateSubmitDir , fillOptions ,
  extractOptions , createSubmitDir , updateOutputLocation , addSystemAlgs ,
  prepareSubmitDir , batchCreateDirectories , batchCreateJob , batchScriptVar ,
  batchMakeScript , batchMakeIndices , submitJob , directSaveOutput ,
  postSubmit , finalSubmit , initialResubmit , readConfigResubmit ,
  batchJobStatusResubmit , batchPreResubmit , doResubmit , finalResubmit ,
  initialRetrieve , readConfigRetrieve , batchJobStatusRetrieve , doRetrieve ,
  finalRetrieve , final
}
 the individual steps of preparing a job for submission More...
enum class  SubmitDirMode { NO_CLOBBER , OVERWRITE , UNIQUE , UNIQUE_LINK }
 the mode for creating the submission directory More...

Functions

void report_exception (std::exception_ptr eptr)
 print out the currently evaluated exception

Enumeration Type Documentation

◆ ManagerOrder

enum class EL::Detail::ManagerOrder
strong

an enum to establish an order in which to apply managers

While there should be very little inter-dependency between managers, it can matter which order they get applied in, e.g. the basic manager may set the default value of some property only to be overridden by a more specialized manager downstream.

Enumerator
BASE 

the most basic operations, common for all tasks

SUBMIT_DIR 

the basic operations for the submission directory

OPERATION 

the base-operation performed (e.g. submit, retrieve)

DRIVER 

the driver itself

Definition at line 26 of file ManagerOrder.h.

27 {
29 BASE,
30
33
36
38 DRIVER
39 };
@ DRIVER
the driver itself
@ SUBMIT_DIR
the basic operations for the submission directory
@ OPERATION
the base-operation performed (e.g. submit, retrieve)
@ BASE
the most basic operations, common for all tasks

◆ ManagerStep

enum class EL::Detail::ManagerStep
strong

the individual steps of preparing a job for submission

Essentially the Driver and Manager objects are giant state machines, and this denotes the current overall state (with extra information in ManagerData).

It should be noted that not every step will be used on every operation (e.g. submit or retrieve), but instead there is a separate sequence of steps for each of them.

The alternative to this enum would be to have a separate callback in the Manager class for each step, which would have the advantage that there isn't one function with a very large switch statement, but this approach has other advantages:

  • This makes it clear and obvious in which order steps get executed.
  • The effort for adding/removing individual steps is a lot lower with an enum than with virtual functions.
  • It is very easy to bind the same action to multiple steps, which comes into play if that action needs to be performed for multiple operations.
Enumerator
initial 

this is just the initial step we do, nothing really happens here

initialSubmit 

the initial submit step

updateSubmitDir 

update the submitDir variable to be an absolute path

fillOptions 

in this step we fill the options structure, combining the different locations from which we can pull configuration options.

extractOptions 

extract any options into ManagerData for which it is appropriate

createSubmitDir 

create the submission directory

updateOutputLocation 

in this step we update the output location of streams that don't yet have one defined

addSystemAlgs 

add any system algorithms to the job that may need to get added

prepareSubmitDir 

prepare files in our submission directory

batchCreateDirectories 

create the directories needed in the batch directory

batchCreateJob 

create the batch-driver job object

batchScriptVar 

create the variables needed for the batch-run script

batchMakeScript 

create the batch-run script

batchMakeIndices 

create the list of batch job indices

submitJob 

do the actual job submission

directSaveOutput 

save the output in the direct driver

postSubmit 

do whatever needs to be done after the submission is done

finalSubmit 

the final submit step

initialResubmit 

the initial resubmit step

readConfigResubmit 

read the configuration for resubmit

batchJobStatusResubmit 

read the job status in batch driver

batchPreResubmit 

do everything the batch driver needs to do before the resubmit

doResubmit 

call the actual doResubmit method

finalResubmit 

the final resubmit step

initialRetrieve 

the initial retrieve step

readConfigRetrieve 

read the configuration for retrieve

batchJobStatusRetrieve 

read the job status in batch driver

doRetrieve 

call the actual doRetrieve method

finalRetrieve 

the final retrieve step

final 

Definition at line 41 of file ManagerStep.h.

42 {
45 initial,
46
49
52
57
61
64
68
72
75
78
81
84
87
90
93
96
99
102
105
108
111
114
117
120
123
126
129
132
135
136 final
137 };
@ doResubmit
call the actual doResubmit method
@ finalSubmit
the final submit step
@ doRetrieve
call the actual doRetrieve method
@ batchPreResubmit
do everything the batch driver needs to do before the resubmit
@ readConfigResubmit
read the configuration for resubmit
@ batchMakeIndices
create the list of batch job indices
Definition ManagerStep.h:89
@ finalResubmit
the final resubmit step
@ updateSubmitDir
update the submitDir variable to be an absolute path
Definition ManagerStep.h:51
@ submitJob
do the actual job submission
Definition ManagerStep.h:92
@ addSystemAlgs
add any system algorithms to the job that may need to get added
Definition ManagerStep.h:71
@ batchMakeScript
create the batch-run script
Definition ManagerStep.h:86
@ directSaveOutput
save the output in the direct driver
Definition ManagerStep.h:95
@ readConfigRetrieve
read the configuration for retrieve
@ extractOptions
extract any options into ManagerData for which it is appropriate
Definition ManagerStep.h:60
@ finalRetrieve
the final retrieve step
@ fillOptions
in this step we fill the options structure, combining the different locations from which we can pull ...
Definition ManagerStep.h:56
@ createSubmitDir
create the submission directory
Definition ManagerStep.h:63
@ batchScriptVar
create the variables needed for the batch-run script
Definition ManagerStep.h:83
@ batchCreateJob
create the batch-driver job object
Definition ManagerStep.h:80
@ batchJobStatusResubmit
read the job status in batch driver
@ batchCreateDirectories
create the directories needed in the batch directory
Definition ManagerStep.h:77
@ initial
this is just the initial step we do, nothing really happens here
Definition ManagerStep.h:45
@ updateOutputLocation
in this step we update the output location of streams that don't yet have one defined
Definition ManagerStep.h:67
@ prepareSubmitDir
prepare files in our submission directory
Definition ManagerStep.h:74
@ postSubmit
do whatever needs to be done after the submission is done
Definition ManagerStep.h:98
@ batchJobStatusRetrieve
read the job status in batch driver
@ initialSubmit
the initial submit step
Definition ManagerStep.h:48
@ initialResubmit
the initial resubmit step
@ initialRetrieve
the initial retrieve step

◆ SubmitDirMode

enum class EL::Detail::SubmitDirMode
strong

the mode for creating the submission directory

Enumerator
NO_CLOBBER 

create the directory as is, raise an error if it already exists

OVERWRITE 

create the directory as is, removing existing directories if needed

UNIQUE 

append a unique suffix to the directory name

UNIQUE_LINK 

append a unique suffix to the directory name and place a symbolic link in place of the originally requested directory

Definition at line 20 of file SubmitDirMode.h.

21 {
25
29
31 UNIQUE,
32
36 };
@ OVERWRITE
create the directory as is, removing existing directories if needed
@ UNIQUE_LINK
append a unique suffix to the directory name and place a symbolic link in place of the originally req...
@ NO_CLOBBER
create the directory as is, raise an error if it already exists
@ UNIQUE
append a unique suffix to the directory name

Function Documentation

◆ report_exception()

void EL::Detail::report_exception ( std::exception_ptr eptr)

print out the currently evaluated exception

Definition at line 27 of file PhysicsAnalysis/D3PDTools/EventLoop/Root/MessageCheck.cxx.

28 {
29 using namespace msgEventLoop;
30 try
31 {
32 if (eptr) {
33 std::rethrow_exception(eptr);
34 }
35 } catch (std::exception& e)
36 {
37 ANA_MSG_ERROR ("caught exception: " << e.what());
38 } catch (std::string& str)
39 {
40 ANA_MSG_ERROR ("caught exception string: " << str);
41 } catch (const char *str)
42 {
43 ANA_MSG_ERROR ("caught exception string: " << str);
44 } catch (...)
45 {
46 ANA_MSG_ERROR ("caught unknown exception");
47 }
48 }
#define ANA_MSG_ERROR(xmsg)
Macro printing error messages.