WIP Generic QC device and late tasks as it's first adopter#2628
Open
knopers8 wants to merge 18 commits intoAliceO2Group:masterfrom
Open
WIP Generic QC device and late tasks as it's first adopter#2628knopers8 wants to merge 18 commits intoAliceO2Group:masterfrom
knopers8 wants to merge 18 commits intoAliceO2Group:masterfrom
Conversation
This proposes "late tasks", which can take as input merged MOs and any QOs within the same workflow. See JIRA for more deliberations about why it's probably the best approach. Definitely not finished, I'm just saving the progress and making it available for early review.
userCodeName being the task/check/aggregator/... name set by users
Barthelemy
approved these changes
Feb 3, 2026
Collaborator
Barthelemy
left a comment
There was a problem hiding this comment.
Very nice, and clear, thanks a lot !
It took me quite some time to understand (again) the Actor stuff, but I am glad I made the effort because I learned a lot.
A number of classes and struct are missing documentation (just a sentence to say what it does is enough). But it is normal at this stage.
| #ifndef QC_HASH_DATA_DESCRIPTION_H | ||
| #define QC_HASH_DATA_DESCRIPTION_H | ||
|
|
||
| // fixme: rename to DataHeaderHelpers? |
| std::string originStr{ actorTypeCharacterId }; | ||
| if (detectorCode.empty()) { | ||
| // fixme: that's probably a configuration error, so maybe we should just throw? | ||
| ILOG(Warning, Support) << "empty detector code for a task data origin, trying to survive with: DET" << ENDM; |
Collaborator
There was a problem hiding this comment.
there is no way we can survive with DET. Just throw.
| struct LateTaskConfig : public UserCodeConfig { | ||
|
|
||
| // fixme: we should think what should happen when a user wants a critical late task relying on a non-critical QC task. | ||
| // should it be marked as resilient? |
Collaborator
There was a problem hiding this comment.
this is the definition of resilient
| /// TODO: one could even consider allowing to feed late tasks with output of Reductors. | ||
| /// It could be an opportunity to refactor them as well (and rename them to Reducers, which sounds more like English). | ||
| /// TODO: to allow for more structured configuration, i see no other choice than providing the user with the late task config tree. | ||
| /// CustomParameters do not support tree-like structures. one could consider extending it, but i'm not sure if we can be fully backwards compatible. |
Collaborator
There was a problem hiding this comment.
I think that we do now.
Collaborator
Author
|
OK, cool, thanks! Then I propose that I'll rework the commit history a bit and come with separated PRs for each change and include documentation accordingly. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This branch demonstrates how a generic Actor could be used to offload the commonalities into one place and allow for enough customizability among different QC data processors.
There is still quite a few todos, but this already demonstrates the idea.
o2-qc-run-basic and basic.json are to play with, other jsons added in the branch will not work at the moment.