Skip to content

MT-safe replacement of TRT_ByteStream_ConditionsSvc

Walter Lampl requested to merge wlampl/athena:TRTByteStreamMT into master

As discussed in ATLASRECTS-5534, the TRT_ByteStream_ConditionsSvc is per-design thread-hostile and bombed in the MT-Reco tests at the Tier0.

With this MR, the already-existing EDM class TRT_BSErrContainer takes over. It was updated to sport similar interface as TRT_ByteStream_ConditionsSvc, thus incorporating also the data of the TRT_BSErrIdContainer. I introduced also an new persistent version and a T/P converter. I did NOT bother maintaining backward compatiblity with the _p1 version because I did not find any use case.

As it turns out, the only client of the TRT_ByteStream_ConditionsSvc is monitoring. The offline monitoring is done at the RAWtoESD step, so no need to have this data in the ESD. It was easy to adjust, just adding a WriteHandle (optional, for MC) and read the data from a different source.

The trigger-monitoring done via TRT_TrgRIO_Maker was a bit tricker. @jmasik confirmed that this tool is legacy and doesn't need to be thread safe. The solution I chose is to use a stub of the old TRT_ByteStream_ConditionsSvc to transmit the information from the TrigTRTRawDataProvider to the TRT_TrgRIO_Maker. This is a rather ugly hack, but good enough to keep a legacy tool going.

Further possible improvments:

  • The TRT_ByteStream_ConditionsSvc used to print a summary of errors in finalize. This table is now lost. It could be re-instated by augmeting the TRT_RodDecoder with a few atomic counter variables.
  • Check if any DESD relies on the TRT_BSErrContainer. If not, remove it from the ESD (in that case, all my work to create a _p2 version + converter was wasted).
  • Remove the TRT_BSErrIdContainer + Converter + test from the repository

Closes ATLASRECTS-5534.

Merge request reports