Skip to content

[QC-1088] Late Tasks as post-processing within the message passing framework - #2665

Open
knopers8 wants to merge 4 commits into
AliceO2Group:masterfrom
knopers8:late-tasks-nice
Open

knopers8 wants to merge 4 commits into
AliceO2Group:masterfrom
knopers8:late-tasks-nice

Conversation

@knopers8

Copy link
Copy Markdown
Collaborator

Late Tasks can create new MonitorObjects based on existing MOs and QOs in the QC workflow.
I called them "late", because they would be typically executed close to the end of the processing chain.
When running QC workflows distributed over multiple nodes, with Mergers combining the results, they can be used to process the merged results.
The adequate use cases involve:

  • creating trends and correlations from other MonitorObjects and QualityObjects (trending a histogram average, trending quality)
  • creating plots which can only be constructed from merged objects (ratios, visualizations, ...)
  • creating summary canvases of QualityObjects available in the QC workflow

They are meant to slowly replace Post-Processing, at least in the use cases mentioned above.

Needs #2660 to have [WIP] removed.

…amework

Late Tasks can create new MonitorObjects based on existing MOs and QOs in the QC workflow.
I called them "late", because they would be typically executed close to the end of the processing chain.
When running QC workflows distributed over multiple nodes, with Mergers combining the results, they can be used to process the merged results.
The adequate use cases involve:
* creating trends and correlations from other MonitorObjects and QualityObjects (trending a histogram average, trending quality)
* creating plots which can only be constructed from merged objects (ratios, visualizations, ...)
* creating summary canvases of QualityObjects available in the QC workflow

They are meant to slowly replace Post-Processing, at least in the use cases mentioned above.
@knopers8 knopers8 changed the title [WIP] [QC-1088] Late Tasks as post-processing within the message passing framework [QC-1088] Late Tasks as post-processing within the message passing framework Jun 23, 2026

@Barthelemy Barthelemy left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First of all, let me apologize for this very late review.

This is a great job! Thank you.
The late tasks have clearly the potential to replace the PostProcessing tasks in many cases.

I have put a few questions and comments that I let you address.

Comment thread doc/Configuration.md Outdated
Comment thread doc/ModulesDevelopment.md
Comment thread Framework/src/LateTaskRunner.cxx
Comment thread Modules/Skeleton/src/SkeletonLateTask.cxx Outdated
Comment thread Framework/src/LateTaskRunner.cxx Outdated
Comment thread Framework/src/InfrastructureSpecReader.cxx
Comment thread Framework/src/LateTaskRunner.cxx
Comment thread Framework/include/QualityControl/DataProcessorAdapter.h
Comment thread Framework/include/QualityControl/LateTaskSpec.h Outdated

void LateTaskRunner::onStop(framework::ServiceRegistryRef services, const Activity& activity)
{
mTask->endOfActivity(activity);

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One last question: should we publish one last time after the user code has been called ? in case they changed something on the plot ?

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you, good point. My initial thinking was that there would not be new data in plots, so there is no point in publishing, but indeed someone might want to e.g. "beautify" a plot at run stop.

I'll add it.

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, it's not that simple, DPL does not allow to publish objects at onStop, which probably makes sense. What is possible, is to call endOfActivity and publish objects the last time at onEndOfStream. but I have to check if the two DPL callbacks have guaranteed order and whether both are always executed.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants