Skip to content

DPL Analysis: allow for per-origin AOD metadata handling - #15928

Open
aalkin wants to merge 7 commits into
AliceO2Group:devfrom
aalkin:refactor-origin-level-mapping
Open

aalkin wants to merge 7 commits into
AliceO2Group:devfrom
aalkin:refactor-origin-level-mapping

Conversation

@aalkin

@aalkin aalkin commented Oct 11, 2026

Copy link
Copy Markdown
Member

Based on required #15880, #15926 and #15927.

The standard behavior without origin level mapping is unaffected. When origin level mapping is used, the AOD metadata is taken from files on corresponding levels and propagated as per-origin labeled array to the devices in the workflow. For this, the metadata retrieval is refactored to only happen once in the driver, so that files are not re-opened later. The devices themselves, if they have origin replacement enabled, will modify their ConfigParamRegistry, replacing the standard aod-metadata- values there with the ones that conform to their origin, using the per-origin map that was passed to them via command line. This permits, for example, self-configuring tasks, such as event selection service, to be left as is - they will correctly get the metadata, corresponding to their replaced origin.

@nzardosh this PR is self-contained, you can import it in your O2 for testing as a whole.

The copy and move assignment operators overwrote the data pointer
without releasing the previous buffer, leaking it on every assignment
to a non-empty array

Copy self-assignment also allocated the new buffer before reading from
the source, so the array was filled from its own uninitialised memory.

Now guards against self-assignment and releases the old buffer.
Copy and move of Variants holding Array2D, LabeledArray or string array
values copied the storage byte by byte, so copies shared the same heap
buffers, and the destructor never destroyed these objects, leaking them.
Assignments never released the previous content, move assignment of
strings and arrays duplicated the buffer and dropped the original one,
and move assignment of string arrays corrupted the source vector.
* Protect from long default values in `--help` output by adding a size
  limit and manually adding reduced string representation
* Use pre-existing to/from JSON conversions to dump and retrieve
  labeled arrays in command line
* Allow passing only values if the labels do not change from defaults
* Test options retrieval for the driver and devices
* Add a code path that uses put_child rather than put for vectors that
  are stored as subtrees
* Add override tests
@alibuild

Copy link
Copy Markdown
Collaborator

Error while checking build/O2/fullCI_slc9 for cd319b0 at 2026-10-11 10:00:

## sw/BUILD/O2-latest/log
CMake Error at Framework/Core/CMakeLists.txt:202 (add_executable):
CMake Error at Framework/Core/CMakeLists.txt:202 (add_executable):

Full log here.

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