Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Pipeline tasks are structured as a linear chain of steps.  Each step must succeed before going on to the next one.  Each step must be attempted, until one fails or the last one succeeds.  That is to say, there is no flow control, and no parallelism.  In order to deal with this, and to reduce the chance that a step would not be reached due to the failure of a previous step on which it did not logically depend, the work we do in the pipeline is split into 7 tasks, all but one of which (updateELogDB) are launched internallyby other tasks.  This launching is done without GINO's (the pipeline infrastructure) knowledge.

Most steps within a task (Task Processes (TPs)) consist of a wrapper, which interfaces with the pipeline infrastructure ( GINO ) and a script which does the work, usually by running some external app.

...

Task Name: recon

Description: 

The recon task is relatively complex.  It splits a run into chunks, submits each one for reconstruction as a batch job (without GINO's knowledge), then merges the reconstructed chunks.

The first step, setupRecon, has almost all of the intelligence.  It decides how many chunks to use and which events will go in which chunk.  It writes a number of files which direct the action of later steps, including jobOptions files for reconstruction of the chunks.

doRecon controls the reconstruction of the chunks.  It reads a list of jobs to run, and for each one, spawns a thread that submits a batch job, waits for it to complete, and returns its status.  It then writes a file listing which, if any, of the chunks failed, and exits with an unsuccessful return code if there were failed chunks.  When the TP first starts, it checks for this list of failed chunks, and if it is present and nonempty, it uses it instead of the original list of all chunks writted by setupRecon.  This way, if some chunks fail, the TP can be rolled back and it will only need to redo the failed chunks.  The failed chunk list is not registered as a pipeline dataset, since it violates logical constraints within GINO for a TP to modify its input this way.

 Purpose

 Associated Scripts

Input

 Output

Comments

 finish up a run

  cleanup.py

 

 

  external side

finish up a run

  cleanupWrapper.pl

 

 

 pipeline side

control job for reconstruction of chunks

  doRecon.pl

 

 

 external side

control job for reconstruction of chunks

  doReconWrapper.pl

 

 

  pipeline side

 

  genRTRLaunchWrapper.pl

 

 

  pipeline side

make XML config file for task

  genXml.pl

 

 

 

  merge chunks of recon file

  mergeRecon.py

 

 

external side

 merge chunks of recon file

  mergeReconWrapper.pl

 

 

  pipeline side

 

  recon.py

 

 

 obsolete

 reconstruct one chunk

  recon0ne.csh

 

 

 

 

  reconWrapper.pl

 

 

 obsolete

 

  reprocess-licos.csh

 

 

 delete

 

  reprocess-v3r1p5.csh

 

 

delete

 

  reprocess-version.csh

 

 

 delete

 launch recon report

  RunRALaunchWrapper.pl

 

 

 pipeline side

 prepare chunk jobs

  setupRecon.py

 

 

 external side

 prepare chunk jobs

  setupReconWrapper.pl

 

 

 pipeline side

...