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
Edited by Alaettin Serhan Mete