Skip to content

RootStorageSvc: Add a basic script to read the DataHeader to be used in checks/tests

The title explains it. One can use this along the lines of:

./readDataHeader.py --filesInput=DAOD_PHYS.pool.root --evtMax=10 --loglevel=DEBUG

It simply loops over the DataHeader, reads it, and prints the keys/tokens if in debug mode. This is the lightest DataHeader access I could cook up.

It reproduces the errors that are discussed in !60045 (closed). Once can use this as an additional check in ART tests similar to its cousin checkIndexRefs.py. The only catch for the time being is that pretty much none of the loop managers terminate the processing upon an error in loading the event proxies (not sure why, maybe @ssnyder has an idea). Therefore, although this reproduces the errors [1] discussed in the above MR the job still returns success, which necessitates parsing the output to look for errors.

[1] An example error is:

Exception: FID "AC9137E0-7EE2-334C-AB4F-1B1DED4DE28D" is not existing in the catalog ( POOL : "PersistencySvc::UserDatabase::connectForRead" from "PersistencySvc" ) (no backtrace available).
DataHeaderCnv                                       ERROR createObj - caught exception: AthenaPoolCnvSvc::::ExcCaughtException: Caught exception in StatusCode T_AthenaPoolCustomCnvWithKey<TRANS, PERS>::PoolToDataObject(DataObject*&, const Token*, const string&) [with TRANS = DataHeader; PERS = DataHeader_p6; std::string = std::__cxx11::basic_string<char>] while creating transient objectDataHeader/EventSelector: std::runtime_error: FID "AC9137E0-7EE2-334C-AB4F-1B1DED4DE28D" is not existing in the catalog ( POOL : "PersistencySvc::UserDatabase::connectForRead" from "PersistencySvc" )
DataHeaderCnv                                       ERROR createObj failed to get DataObject, Token = [DB=678E90F9-311B-624F-8452-CE347D8EB5E3][CNT=POOLContainer(DataHeader)][CLID=4DDBD295-EFCE-472A-9EC8-15CD35A9EB8D][TECH=00000203][OID=00000A8500000208-00000A8500000008]
DataProxy                                         WARNING accessData: conversion failed for data object 222376821/EventSelector
 Returning NULL DataObject pointer                      
AthenaPoolAddressProviderSvc                        ERROR Cannot retrieve DataHeader from StoreGate:  'DataHeaderKey':'EventSelector'
ProxyProviderSvc                                    ERROR SGComps/src/ProxyProviderSvc.cxx:153 (StatusCode ProxyProviderSvc::loadProxies(IProxyRegistry&)): code FAILURE: provider->loadAddresses(storeID, tList)
AthenaEventLoopMgr                                  ERROR Error loading Event proxies

cc: @gemmeren @mnowak

Edited by Alaettin Serhan Mete

Merge request reports