Skip to content

CxxUtils+AthenaKernel+AthenaServices: Rework conditions object deletion.

Scott Snyder requested to merge ssnyder/athena:conddel.CxxUtils-20220705 into master

Rework how conditions objects are deleted, in order to give more control to CondCont.

Previously, deleted conditions payload objects were attached to the internal ConcurrentRangeMap implementation object, to be deleted at the same time it is, as determined by RCUUpdater. The actual deletion was accomplished using a function pointer passed into ConcurrentRangeMap.

However, this could lead to conditions objects being retained for much longer than they needed to be. Further, it appears to be useful to give the conditions container the possibility to do other housekeeping when conditions objects are deleted; this is not possible with the current scheme.

Change things so that rather than passing in a deletion function, we pass in a deletion object, which supplies an abstract interface that can be used to queue conditions objects for deletion. For CondCont, this is implemented by the new CondObjDeleter class.

Edited by Scott Snyder

Merge request reports