Lock output of RecoFragmentsPool [ATR-23044]
In the HLT configuration we cache sequences that have been generated to prevent adding duplicate algs to existing sequences.
To prevent signature cross-talk this change locks configurables returned by RecoFragmentsPool.retrieve
upon creation. The recursion is limited -- it will do:
-
Configurable
instances - Nodes
-
Configurable
contents in tuples, iterating through the nesting but it will not lock all children of configured objects, because unfortunately the Run 2Configurable
generation considers the recreation of an identical instance of a preexisting Configurable to be a modification.
It was necessary to extend the lock-awareness to Configurable.__iadd__
so that one could not do +=
to a locked sequence.
I had to fix the following violation, and such operations will be blocked in future, but this was already described in the signature developers' checklist. It is crucial that these checks be followed for all work.
Edited by Teng Jian Khoo