From 82c68c782b5f65608584b2aa23fa1e88c7cfd6fd Mon Sep 17 00:00:00 2001 From: scott snyder <snyder@bnl.gov> Date: Sat, 18 Mar 2017 11:08:29 +0100 Subject: [PATCH] Simplify varhandle initialization for handles that are possibly ignored. If a varhandle is used, we must call initialize on it; if it is not used, the key must be cleared. Combine these by extending initialize() to take a flag. If true, we proceed as usual; if false, we clear the key and return success without doing anything else. Also some small cleanups to tests. Former-commit-id: 26c5231376d3f28b38929321ad204372fcd37916 --- .../ControlTest/share/StoreGateReentrant.ref | 234 +++++++++--------- .../src/ReadDataReentrant.cxx | 8 +- .../src/ReadDataReentrant.h | 2 +- .../src/WriteDataReentrant.cxx | 31 +-- .../src/WriteDataReentrant.h | 2 +- Control/StoreGate/StoreGate/VarHandleBase.h | 3 + Control/StoreGate/StoreGate/VarHandleKey.h | 8 +- Control/StoreGate/share/ReadHandle_test.ref | 16 +- .../StoreGate/share/VarHandleBase_test.ref | 29 +-- Control/StoreGate/share/VarHandleKey_test.ref | 10 +- Control/StoreGate/src/VarHandleBase.cxx | 10 +- Control/StoreGate/src/VarHandleKey.cxx | 17 +- Control/StoreGate/test/VarHandleBase_test.cxx | 9 + Control/StoreGate/test/VarHandleKey_test.cxx | 8 + 14 files changed, 211 insertions(+), 176 deletions(-) diff --git a/AtlasTest/ControlTest/share/StoreGateReentrant.ref b/AtlasTest/ControlTest/share/StoreGateReentrant.ref index 654b33bc6873..1a585d981244 100644 --- a/AtlasTest/ControlTest/share/StoreGateReentrant.ref +++ b/AtlasTest/ControlTest/share/StoreGateReentrant.ref @@ -1,21 +1,20 @@ -Sun Feb 26 19:45:14 EST 2017 -WARNING: TCMALLOCDIR not defined, will use libc malloc +Sat Mar 18 00:04:33 CET 2017 +Preloading tcmalloc_minimal.so Py:Athena INFO including file "AthenaCommon/Preparation.py" -Py:Athena INFO using release [?-21.0.0] [i686-slc5-gcc43-dbg] [?/?] -- built on [?] +Py:Athena INFO using release [AthenaWorkDir-22.0.0] [x86_64-slc6-gcc62-opt] [private/private] -- built on [2017-03-17 23:36] Py:Athena INFO including file "AthenaCommon/Bootstrap.py" Py:Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Py:Athena INFO executing ROOT6Setup -Py:Athena INFO including file "AthenaCommon/Execution.py" +[?1034hPy:Athena INFO including file "AthenaCommon/Execution.py" Py:Athena INFO including file "AthExStoreGateExample/StoreGateExample_Reentrant_jobOptions.py" -Py:ConfigurableDb INFO Read module info for 409 configurables from 2 genConfDb files +Py:ConfigurableDb INFO Read module info for 5250 configurables from 26 genConfDb files Py:ConfigurableDb INFO No duplicates have been found: that's good ! Py:Athena INFO including file "AthenaCommon/runbatch.py" -# setting LC_ALL to "C" ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to level= 'PluginDebugLevel':0 ApplicationMgr SUCCESS ==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Sun Feb 26 19:45:17 2017 + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus090.cern.ch on Sat Mar 18 00:04:44 2017 ==================================================================================================================================== ApplicationMgr INFO Successfully loaded modules : AthenaServices ApplicationMgr INFO Application Manager Configured successfully @@ -23,13 +22,13 @@ ApplicationMgr INFO Updating Gaudi::PluginService::SetDebug(level) to leve StatusCodeSvc INFO initialize[m AthDictLoaderSvc INFO in initialize...[m AthDictLoaderSvc INFO acquired Dso-registry[m -ClassIDSvc INFO getRegistryEntries: read 2261 CLIDRegistry entries for module ALL[m +ClassIDSvc INFO getRegistryEntries: read 2251 CLIDRegistry entries for module ALL[m ChronoStatSvc INFO Number of skipped events for MemStat-1[m CoreDumpSvc INFO install f-a-t-a-l handler... (flag = -1)[m CoreDumpSvc INFO Handling signals: 11(Segmentation fault) 7(Bus error) 4(Illegal instruction) 8(Floating point exception) [m AthenaEventLoopMgr INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00[m AthMasterSeq INFO Member list: AthSequencer/AthAlgSeq, AthSequencer/AthOutSeq, AthSequencer/AthRegSeq[m -ClassIDSvc INFO getRegistryEntries: read 1053 CLIDRegistry entries for module ALL[m +ClassIDSvc INFO getRegistryEntries: read 768 CLIDRegistry entries for module ALL[m AthAlgSeq INFO Member list: WriteDataReentrant, ReadDataReentrant[m WriteDataReentrant INFO in initialize()[m StoreGateSvc DEBUG Property update for OutputLevel : new value = 1[m @@ -46,44 +45,41 @@ HistogramPersis...WARNING Histograms saving not required.[m ApplicationMgr INFO Application Manager Initialized successfully[m ApplicationMgr INFO Application Manager Started successfully[m ClassIDSvc INFO getRegistryEntries: read 359 CLIDRegistry entries for module ALL[m -StoreGateSvc_Impl DEBUG Recorded object @0x55ec9e109130 with key of type EventInfo(CLID 2101) - in DataObject @0x55ec9e0c1f30 - object modifiable when retrieved[m AthenaEventLoopMgr INFO ===>>> start of run 1 <<<===[m AthenaEventLoopMgr INFO ===>>> start processing event #1, run #1 0 events processed so far <<<===[m WriteDataReentrant INFO in execute()[m WriteDataReentrantWARNING we expect an error message here[m StoreGateSvc_Impl WARNING setupProxy:: error setting up proxy for key dobj and clid 8000 - Pre-existing valid DataProxy @0x55ec9e0ec4a0 found in Store for key dobj with clid 8000[m -StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x55ec9e0efe20 - recorded with key dobj of type MyDataObj (CLID 8000) in DataObject @0x55ec9e0bfbd0[m -[97;101;1mVarHandle(Store... ERROR Control/StoreGate/src/VarHandleBase.cxx:603 (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: recordObject failed[m + Pre-existing valid DataProxy @0x137821b0 found in Store for key dobj with clid 8000[m +StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x10b6e270 + recorded with key dobj of type MyDataObj (CLID 8000) in DataObject @0x1378b860[m +[97;101;1mVarHandle(Store... ERROR FILE:LINE (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: recordObject failed[m WriteDataReentrantWARNING end of error message[m WriteDataReentrant INFO registered all data objects[m WriteDataReentrant INFO StoreGate structure before returning from execute <<<<<<<<<<<<<<<<< Data Store Dump >>>>>>>>>>>>>>> SGImplSvc(StoreGateSvc_Impl)::dump(): Found 2 proxies for ClassID 1434 (BaseClass): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e108b00 --- key: WriteDataReentrant - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9dff1b20 --- key: dobj + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b6d0 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b7c0 --- key: dobj Found 1 proxy for ClassID 2101 (EventInfo): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0c1f30 --- key: + flags: ( valid, UNLOCKED, reset) --- data: 0x1378c1c0 --- key: Found 3 proxies for ClassID 8000 (MyDataObj): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e108b00 --- key: WriteDataReentrant - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9dff1b20 --- key: dobj - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0f4b30 --- key: dobj2 + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b6d0 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b7c0 --- key: dobj + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b360 --- key: dobj2 Found 1 proxy for ClassID 9967 (DataVector<MyContObj>): - flags: ( valid, locked, reset) --- data: 0x55ec9e0e5fb0 --- key: cobj + flags: ( valid, locked, reset) --- data: 0x13782300 --- key: cobj Found 1 proxy for ClassID 9983 (std::vector< ElementLink<MapStringFloat> >): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e10e100 --- key: linkvec + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b0e0 --- key: linkvec Found 1 proxy for ClassID 9984 (std::list< ElementLink< std::vector<float> > >): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0ea490 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b2c0 --- key: WriteDataReentrant Found 1 proxy for ClassID 193758082 (std::map<std::string,float>): - flags: ( valid, locked, reset) --- data: 0x55ec9de51bd0 --- key: mkey + flags: ( valid, locked, reset) --- data: 0x1378b540 --- key: mkey Found 1 proxy for ClassID 202242136 (std::vector<float>): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0d67e0 --- key: vFloat + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b680 --- key: vFloat Found 1 proxy for ClassID 289238765 (TestDataObject): - flags: ( valid, locked, reset) --- data: 0x55ec9e0a2580 --- key: testobj + flags: ( valid, locked, reset) --- data: 0x1378b9a0 --- key: testobj <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> [m ReadDataReentrant INFO in execute()[m @@ -94,59 +90,56 @@ ReadDataReentrant INFO pVec [1] = 2[m ReadDataReentrant INFO pVec [2] = 3[m ReadDataReentrant INFO ListVecLinks::linked element 1[m ReadDataReentrant INFO ListVecLinks::linked element 3[m -ReadDataReentrant INFO VectorMapLinks::linked element: key uno - value 1 - stored as 0x55ec9e10e52c[m -ReadDataReentrant INFO VectorMapLinks::linked element: key due - value 2 - stored as 0x55ec9e10e56c[m +ReadDataReentrant INFO VectorMapLinks::linked element: key uno - value 1 - stored as 0x1376333c[m +ReadDataReentrant INFO VectorMapLinks::linked element: key due - value 2 - stored as 0x1376337c[m AthenaEventLoopMgr INFO ===>>> done processing event #1, run #1 1 events processed so far <<<===[m StoreGateSvc_Impl DEBUG Clearing store with forceRemove=0[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0x55ec9e108b00 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0x55ec9dff1b20 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0e3aa0, recorded with key=, CLID=2101, containing data object @0x55ec9e0c1f30 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0f4c90, recorded with key=dobj2, CLID=8000, containing data object @0x55ec9e0f4b30 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0f0560, recorded with key=cobj, CLID=9967, containing data object @0x55ec9e0e5fb0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e10e290, recorded with key=linkvec, CLID=9983, containing data object @0x55ec9e10e100 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ea690, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0x55ec9e0ea490 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9de51df0, recorded with key=mkey, CLID=193758082, containing data object @0x55ec9de51bd0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0d6970, recorded with key=vFloat, CLID=202242136, containing data object @0x55ec9e0d67e0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0e5e60, recorded with key=testobj, CLID=289238765, containing data object @0x55ec9e0a2580 ... -> DONE[m -StoreGateSvc_Impl DEBUG Recorded object @0x55ec9e109130 with key of type EventInfo(CLID 2101) - in DataObject @0x55ec9e0a2580 - object modifiable when retrieved[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0x1378b6d0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0x1378b7c0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13781f80, recorded with key=, CLID=2101, containing data object @0x1378c1c0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137824c0, recorded with key=dobj2, CLID=8000, containing data object @0x1378b360 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782370, recorded with key=cobj, CLID=9967, containing data object @0x13782300 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137825a0, recorded with key=linkvec, CLID=9983, containing data object @0x1378b0e0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782530, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0x1378b2c0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782450, recorded with key=mkey, CLID=193758082, containing data object @0x1378b540 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137823e0, recorded with key=vFloat, CLID=202242136, containing data object @0x1378b680 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782290, recorded with key=testobj, CLID=289238765, containing data object @0x1378b9a0 ... -> DONE[m AthenaEventLoopMgr INFO ===>>> start processing event #2, run #1 1 events processed so far <<<===[m WriteDataReentrant INFO in execute()[m WriteDataReentrantWARNING we expect an error message here[m StoreGateSvc_Impl WARNING setupProxy:: error setting up proxy for key dobj and clid 8000 - Pre-existing valid DataProxy @0x55ec9e0ec4a0 found in Store for key dobj with clid 8000[m -StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x55ec9e0d67c0 - recorded with key dobj of type MyDataObj (CLID 8000) in DataObject @0x55ec9de51bd0[m -[97;101;1mVarHandle(Store... ERROR Control/StoreGate/src/VarHandleBase.cxx:603 (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: recordObject failed[m + Pre-existing valid DataProxy @0x137821b0 found in Store for key dobj with clid 8000[m +StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x10b6e2c0 + recorded with key dobj of type MyDataObj (CLID 8000) in DataObject @0x1378b540[m +[97;101;1mVarHandle(Store... ERROR FILE:LINE (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: recordObject failed[m WriteDataReentrantWARNING end of error message[m WriteDataReentrant INFO registered all data objects[m WriteDataReentrant INFO StoreGate structure before returning from execute <<<<<<<<<<<<<<<<< Data Store Dump >>>>>>>>>>>>>>> SGImplSvc(StoreGateSvc_Impl)::dump(): Found 2 proxies for ClassID 1434 (BaseClass): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0f4ac0 --- key: WriteDataReentrant - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0d67e0 --- key: dobj + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b220 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378c120 --- key: dobj Found 1 proxy for ClassID 2101 (EventInfo): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0a2580 --- key: + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b9a0 --- key: Found 3 proxies for ClassID 8000 (MyDataObj): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0f4ac0 --- key: WriteDataReentrant - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0d67e0 --- key: dobj - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9dff1b20 --- key: dobj2 + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b220 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378c120 --- key: dobj + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b7c0 --- key: dobj2 Found 1 proxy for ClassID 9967 (DataVector<MyContObj>): - flags: ( valid, locked, reset) --- data: 0x55ec9e0ef2c0 --- key: cobj + flags: ( valid, locked, reset) --- data: 0x13782300 --- key: cobj Found 1 proxy for ClassID 9983 (std::vector< ElementLink<MapStringFloat> >): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0bfbd0 --- key: linkvec + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b860 --- key: linkvec Found 1 proxy for ClassID 9984 (std::list< ElementLink< std::vector<float> > >): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e108b00 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b6d0 --- key: WriteDataReentrant Found 1 proxy for ClassID 193758082 (std::map<std::string,float>): - flags: ( valid, locked, reset) --- data: 0x55ec9e10e100 --- key: mkey + flags: ( valid, locked, reset) --- data: 0x1378b720 --- key: mkey Found 1 proxy for ClassID 202242136 (std::vector<float>): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0ea490 --- key: vFloat + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b0e0 --- key: vFloat Found 1 proxy for ClassID 289238765 (TestDataObject): - flags: ( valid, locked, reset) --- data: 0x55ec9e0f4a70 --- key: testobj + flags: ( valid, locked, reset) --- data: 0x1378b4a0 --- key: testobj <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> [m ReadDataReentrant INFO in execute()[m @@ -157,59 +150,56 @@ ReadDataReentrant INFO pVec [1] = 2[m ReadDataReentrant INFO pVec [2] = 3[m ReadDataReentrant INFO ListVecLinks::linked element 1[m ReadDataReentrant INFO ListVecLinks::linked element 3[m -ReadDataReentrant INFO VectorMapLinks::linked element: key uno - value 1 - stored as 0x55ec9e0ef0ec[m -ReadDataReentrant INFO VectorMapLinks::linked element: key due - value 2 - stored as 0x55ec9e0ef12c[m +ReadDataReentrant INFO VectorMapLinks::linked element: key uno - value 1 - stored as 0x1379c13c[m +ReadDataReentrant INFO VectorMapLinks::linked element: key due - value 2 - stored as 0x1379c17c[m AthenaEventLoopMgr INFO ===>>> done processing event #2, run #1 2 events processed so far <<<===[m StoreGateSvc_Impl DEBUG Clearing store with forceRemove=0[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0x55ec9e0f4ac0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0x55ec9e0d67e0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0e3aa0, recorded with key=, CLID=2101, containing data object @0x55ec9e0a2580 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0f4c90, recorded with key=dobj2, CLID=8000, containing data object @0x55ec9dff1b20 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0f0560, recorded with key=cobj, CLID=9967, containing data object @0x55ec9e0ef2c0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e10e290, recorded with key=linkvec, CLID=9983, containing data object @0x55ec9e0bfbd0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ea690, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0x55ec9e108b00 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9de51df0, recorded with key=mkey, CLID=193758082, containing data object @0x55ec9e10e100 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0d6970, recorded with key=vFloat, CLID=202242136, containing data object @0x55ec9e0ea490 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0e5e60, recorded with key=testobj, CLID=289238765, containing data object @0x55ec9e0f4a70 ... -> DONE[m -StoreGateSvc_Impl DEBUG Recorded object @0x55ec9e109130 with key of type EventInfo(CLID 2101) - in DataObject @0x55ec9e0f4a70 - object modifiable when retrieved[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0x1378b220 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0x1378c120 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13781f80, recorded with key=, CLID=2101, containing data object @0x1378b9a0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137824c0, recorded with key=dobj2, CLID=8000, containing data object @0x1378b7c0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782370, recorded with key=cobj, CLID=9967, containing data object @0x13782300 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137825a0, recorded with key=linkvec, CLID=9983, containing data object @0x1378b860 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782530, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0x1378b6d0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782450, recorded with key=mkey, CLID=193758082, containing data object @0x1378b720 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137823e0, recorded with key=vFloat, CLID=202242136, containing data object @0x1378b0e0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782290, recorded with key=testobj, CLID=289238765, containing data object @0x1378b4a0 ... -> DONE[m AthenaEventLoopMgr INFO ===>>> start processing event #3, run #1 2 events processed so far <<<===[m WriteDataReentrant INFO in execute()[m WriteDataReentrantWARNING we expect an error message here[m StoreGateSvc_Impl WARNING setupProxy:: error setting up proxy for key dobj and clid 8000 - Pre-existing valid DataProxy @0x55ec9e0ec4a0 found in Store for key dobj with clid 8000[m -StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x55ec9e108c60 - recorded with key dobj of type MyDataObj (CLID 8000) in DataObject @0x55ec9e10e100[m -[97;101;1mVarHandle(Store... ERROR Control/StoreGate/src/VarHandleBase.cxx:603 (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: recordObject failed[m + Pre-existing valid DataProxy @0x137821b0 found in Store for key dobj with clid 8000[m +StoreGateSvc_Impl WARNING record_impl: Problem setting up the proxy for object @0x10b6e270 + recorded with key dobj of type MyDataObj (CLID 8000) in DataObject @0x1378b720[m +[97;101;1mVarHandle(Store... ERROR FILE:LINE (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: recordObject failed[m WriteDataReentrantWARNING end of error message[m WriteDataReentrant INFO registered all data objects[m WriteDataReentrant INFO StoreGate structure before returning from execute <<<<<<<<<<<<<<<<< Data Store Dump >>>>>>>>>>>>>>> SGImplSvc(StoreGateSvc_Impl)::dump(): Found 2 proxies for ClassID 1434 (BaseClass): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0c1f30 --- key: WriteDataReentrant - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0ea490 --- key: dobj + flags: ( valid, UNLOCKED, reset) --- data: 0x1378c1c0 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b450 --- key: dobj Found 1 proxy for ClassID 2101 (EventInfo): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0f4a70 --- key: + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b4a0 --- key: Found 3 proxies for ClassID 8000 (MyDataObj): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0c1f30 --- key: WriteDataReentrant - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0ea490 --- key: dobj - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0d67e0 --- key: dobj2 + flags: ( valid, UNLOCKED, reset) --- data: 0x1378c1c0 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b450 --- key: dobj + flags: ( valid, UNLOCKED, reset) --- data: 0x1378c120 --- key: dobj2 Found 1 proxy for ClassID 9967 (DataVector<MyContObj>): - flags: ( valid, locked, reset) --- data: 0x55ec9e0eefd0 --- key: cobj + flags: ( valid, locked, reset) --- data: 0x13782300 --- key: cobj Found 1 proxy for ClassID 9983 (std::vector< ElementLink<MapStringFloat> >): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9de51bd0 --- key: linkvec + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b540 --- key: linkvec Found 1 proxy for ClassID 9984 (std::list< ElementLink< std::vector<float> > >): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e0f4ac0 --- key: WriteDataReentrant + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b220 --- key: WriteDataReentrant Found 1 proxy for ClassID 193758082 (std::map<std::string,float>): - flags: ( valid, locked, reset) --- data: 0x55ec9e0bfbd0 --- key: mkey + flags: ( valid, locked, reset) --- data: 0x1378b2c0 --- key: mkey Found 1 proxy for ClassID 202242136 (std::vector<float>): - flags: ( valid, UNLOCKED, reset) --- data: 0x55ec9e108b00 --- key: vFloat + flags: ( valid, UNLOCKED, reset) --- data: 0x1378b860 --- key: vFloat Found 1 proxy for ClassID 289238765 (TestDataObject): - flags: ( valid, locked, reset) --- data: 0x55ec9e0f4b30 --- key: testobj + flags: ( valid, locked, reset) --- data: 0x1378b360 --- key: testobj <<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>> [m ReadDataReentrant INFO in execute()[m @@ -220,22 +210,22 @@ ReadDataReentrant INFO pVec [1] = 2[m ReadDataReentrant INFO pVec [2] = 3[m ReadDataReentrant INFO ListVecLinks::linked element 1[m ReadDataReentrant INFO ListVecLinks::linked element 3[m -ReadDataReentrant INFO VectorMapLinks::linked element: key uno - value 1 - stored as 0x55ec9e0a4d7c[m -ReadDataReentrant INFO VectorMapLinks::linked element: key due - value 2 - stored as 0x55ec9e0a4dbc[m +ReadDataReentrant INFO VectorMapLinks::linked element: key uno - value 1 - stored as 0x1376333c[m +ReadDataReentrant INFO VectorMapLinks::linked element: key due - value 2 - stored as 0x1376337c[m AthenaEventLoopMgr INFO ===>>> done processing event #3, run #1 3 events processed so far <<<===[m StoreGateSvc_Impl DEBUG Clearing store with forceRemove=0[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0x55ec9e0c1f30 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0x55ec9e0ea490 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0e3aa0, recorded with key=, CLID=2101, containing data object @0x55ec9e0f4a70 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0f4c90, recorded with key=dobj2, CLID=8000, containing data object @0x55ec9e0d67e0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0f0560, recorded with key=cobj, CLID=9967, containing data object @0x55ec9e0eefd0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e10e290, recorded with key=linkvec, CLID=9983, containing data object @0x55ec9de51bd0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0ea690, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0x55ec9e0f4ac0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9de51df0, recorded with key=mkey, CLID=193758082, containing data object @0x55ec9e0bfbd0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0d6970, recorded with key=vFloat, CLID=202242136, containing data object @0x55ec9e108b00 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x55ec9e0e5e60, recorded with key=testobj, CLID=289238765, containing data object @0x55ec9e0f4b30 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0x1378c1c0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0x1378b450 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13781f80, recorded with key=, CLID=2101, containing data object @0x1378b4a0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137824c0, recorded with key=dobj2, CLID=8000, containing data object @0x1378c120 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782370, recorded with key=cobj, CLID=9967, containing data object @0x13782300 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137825a0, recorded with key=linkvec, CLID=9983, containing data object @0x1378b540 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782530, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0x1378b220 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782450, recorded with key=mkey, CLID=193758082, containing data object @0x1378b2c0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x137823e0, recorded with key=vFloat, CLID=202242136, containing data object @0x1378b860 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() requesting release of DataProxy @0x13782290, recorded with key=testobj, CLID=289238765, containing data object @0x1378b360 ... -> DONE[m StoreGateSvc VERBOSE Stop StoreGateSvc[m StoreGateSvc VERBOSE stop: setting service priority to 101 so that event stores get finalized and cleared before other stores[m ApplicationMgr INFO Application Manager Stopped successfully[m @@ -248,24 +238,24 @@ AthMasterSeq INFO Finalizing AthMasterSeq...[m StoreGateSvc VERBOSE Finalizing StoreGateSvc - package version StoreGate-00-00-00[m StoreGateSvc_Impl VERBOSE Finalizing StoreGateSvc_Impl - package version StoreGate-00-00-00[m StoreGateSvc_Impl DEBUG Clearing store with forceRemove=1[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0e3aa0, recorded with key=, CLID=2101, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0a2420, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0ec4a0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0f4c90, recorded with key=dobj2, CLID=8000, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0f0560, recorded with key=cobj, CLID=9967, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e10e290, recorded with key=linkvec, CLID=9983, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0ea690, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9de51df0, recorded with key=mkey, CLID=193758082, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0d6970, recorded with key=vFloat, CLID=202242136, containing data object @0 ... -> DONE[m -StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x55ec9e0e5e60, recorded with key=testobj, CLID=289238765, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x13781f80, recorded with key=, CLID=2101, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x13782220, recorded with key=WriteDataReentrant, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x137821b0, recorded with key=dobj, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x137824c0, recorded with key=dobj2, CLID=8000, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x13782370, recorded with key=cobj, CLID=9967, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x137825a0, recorded with key=linkvec, CLID=9983, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x13782530, recorded with key=WriteDataReentrant, CLID=9984, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x13782450, recorded with key=mkey, CLID=193758082, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x137823e0, recorded with key=vFloat, CLID=202242136, containing data object @0 ... -> DONE[m +StoreGateSvc_Impl VERBOSE DataStore::clearStore() forcing release of DataProxy @0x13782290, recorded with key=testobj, CLID=289238765, containing data object @0 ... -> DONE[m AthDictLoaderSvc INFO in finalize...[m ToolSvc INFO Removing all tools created by ToolSvc[m *****Chrono***** INFO ****************************************************************************************************[m *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered)[m *****Chrono***** INFO ****************************************************************************************************[m -ChronoStatSvc INFO Time User : Tot= 200 [ms] #= 1[m +ChronoStatSvc INFO Time User : Tot= 130 [ms] #= 1[m *****Chrono***** INFO ****************************************************************************************************[m ChronoStatSvc.f... INFO Service finalized successfully [m ApplicationMgr INFO Application Manager Finalized successfully[m diff --git a/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.cxx b/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.cxx index 481bc77e4738..4a247f6220ef 100644 --- a/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.cxx +++ b/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.cxx @@ -7,7 +7,7 @@ * @file ReadDataReentrant.h * @author scott snyder <snyder@bnl.gov> * @date Jan, 2016 - * @brief + * @brief Testing reentrant algorithms. */ @@ -33,6 +33,7 @@ #include "AthLinks/ElementLink.h" #include "AthenaKernel/DefaultKey.h" +#include "AthenaKernel/errorcheck.h" ///////////////////////////////////////////////////////////////////////////// @@ -52,8 +53,9 @@ ReadDataReentrant::ReadDataReentrant(const std::string& name, ISvcLocator* pSvcL // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * -StatusCode ReadDataReentrant::initialize(){ - +StatusCode ReadDataReentrant::initialize() +{ + errorcheck::ReportMessage::hideErrorLocus(); ATH_MSG_INFO ("in initialize()"); diff --git a/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.h b/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.h index be9f222897e4..2480fc9c3007 100644 --- a/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.h +++ b/Control/AthenaExamples/AthExStoreGateExample/src/ReadDataReentrant.h @@ -9,7 +9,7 @@ * @file ReadDataReentrant.h * @author scott snyder <snyder@bnl.gov> * @date Jan, 2016 - * @brief + * @brief Testing reentrant algorithms. */ diff --git a/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx b/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx index d44ed9865e2f..4724635d2daa 100644 --- a/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx +++ b/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.cxx @@ -7,7 +7,7 @@ * @file WriteDataReentrant.cxx * @author scott snyder <snyder@bnl.gov> * @date Jan, 2016 - * @brief + * @brief Testing reentrant algorithms. */ @@ -31,7 +31,6 @@ #include "AthenaKernel/DefaultKey.h" #include "AthenaKernel/errorcheck.h" -#include "CxxUtils/make_unique.h" ///////////////////////////////////////////////////////////////////////////// @@ -56,6 +55,8 @@ WriteDataReentrant::WriteDataReentrant(const std::string& name, StatusCode WriteDataReentrant::initialize() { + errorcheck::ReportMessage::hideErrorLocus(); + ATH_MSG_INFO ("in initialize()"); ATH_CHECK( m_dobjKey.initialize() ); ATH_CHECK( m_dobjKey2.initialize() ); @@ -96,20 +97,20 @@ StatusCode WriteDataReentrant::execute_r (const EventContext& ctx) const // Part 1: Recording objects to SG SG::WriteHandle<MyDataObj> dobj (m_dobjKey, ctx); - dobj = CxxUtils::make_unique<MyDataObj>(1); + dobj = std::make_unique<MyDataObj>(1); //now we create a second MyDataObj instance... //...try to record it as we did for the first. Since dobj2 is also a //MyDataObj we expect to see an error ATH_MSG_WARNING ("we expect an error message here"); EXPECT_EXCEPTION (std::runtime_error, - dobj = CxxUtils::make_unique<MyDataObj>(2)); + dobj = std::make_unique<MyDataObj>(2)); ATH_MSG_WARNING ("end of error message"); //here we go again... //... but this time we register the dobj3 using this algo name as key auto dobj3 = SG::makeHandle (m_dobjKey3, ctx); - dobj3 = CxxUtils::make_unique<MyDataObj>(3); + dobj3 = std::make_unique<MyDataObj>(3); SG::WriteHandle<TestDataObject> testobj (m_testObjectKey, ctx); if (m_testObject->refCount() != 1) std::abort(); @@ -119,9 +120,9 @@ StatusCode WriteDataReentrant::execute_r (const EventContext& ctx) const #if 0 { SG::WriteHandle<MyDataObj> dobj4 (m_dobjKey4, ctx); - ATH_CHECK( dobj4.recordOrRetrieve (CxxUtils::make_unique<MyDataObj>(4)) ); + ATH_CHECK( dobj4.recordOrRetrieve (std::make_unique<MyDataObj>(4)) ); MyDataObj* pp = &*dobj4; - ATH_CHECK( dobj4.recordOrRetrieve (CxxUtils::make_unique<MyDataObj>(4)) ); + ATH_CHECK( dobj4.recordOrRetrieve (std::make_unique<MyDataObj>(4)) ); assert (pp == &*dobj4); } #endif @@ -131,20 +132,20 @@ StatusCode WriteDataReentrant::execute_r (const EventContext& ctx) const // Part 2: storing collections in the SG SG::WriteHandle<DataVector<MyContObj> > cobj (m_cobjKey, ctx); - ATH_CHECK( cobj.record (CxxUtils::make_unique<DataVector<MyContObj> >()) ); + ATH_CHECK( cobj.record (std::make_unique<DataVector<MyContObj> >()) ); cobj->reserve(10); - cobj->push_back (CxxUtils::make_unique<MyContObj> (11.3, 132)); - cobj->push_back (CxxUtils::make_unique<MyContObj> (41.7, 291)); + cobj->push_back (std::make_unique<MyContObj> (11.3, 132)); + cobj->push_back (std::make_unique<MyContObj> (41.7, 291)); // as above with a vector of integers SG::WriteHandle<std::vector<float> > vFloat (m_vFloatKey, ctx); - vFloat = CxxUtils::make_unique<std::vector<float> >(); + vFloat = std::make_unique<std::vector<float> >(); vFloat->push_back(1.0); vFloat->push_back(2.0); vFloat->push_back(3.0); SG::WriteHandle<MapStringFloat> m (m_mKey, ctx); - ATH_CHECK( m.record (CxxUtils::make_unique<MapStringFloat>()) ); + ATH_CHECK( m.record (std::make_unique<MapStringFloat>()) ); (*m)["uno"]=1.0; (*m)["due"]=2.0; @@ -209,7 +210,7 @@ StatusCode WriteDataReentrant::execute_r (const EventContext& ctx) const //since dobj is identifiable in the SG a reference to it is all we need SG::WriteHandle<MyDataObj> dobj2 (m_dobjKey2, ctx); - dobj2 = CxxUtils::make_unique<MyDataObj> (2); + dobj2 = std::make_unique<MyDataObj> (2); //Otherwise one could first create an empty link DataLink<MyDataObj> dobjLink2; @@ -250,7 +251,7 @@ StatusCode WriteDataReentrant::execute_r (const EventContext& ctx) const // toContainedElement! SG::WriteHandle<std::list<VecElemLink> > pLinkList (m_pLinkListKey, ctx); - pLinkList = CxxUtils::make_unique<std::list<VecElemLink> >(); + pLinkList = std::make_unique<std::list<VecElemLink> >(); pLinkList->push_back(aLink); pLinkList->push_back(thirdElementLink); @@ -259,7 +260,7 @@ StatusCode WriteDataReentrant::execute_r (const EventContext& ctx) const // typedef ElementLink<MapStringFloat> MapElemLink; SG::WriteHandle<std::vector<MapElemLink> > linkVector (m_linkVectorKey, ctx); - linkVector = CxxUtils::make_unique<std::vector<MapElemLink> >(); + linkVector = std::make_unique<std::vector<MapElemLink> >(); linkVector->push_back(MapElemLink(*m, "uno")); MapElemLink mLink; mLink.toContainedElement(*m, (*m)["due"]); diff --git a/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.h b/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.h index e38c83331380..821266874d84 100644 --- a/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.h +++ b/Control/AthenaExamples/AthExStoreGateExample/src/WriteDataReentrant.h @@ -9,7 +9,7 @@ * @file WriteDataReentrant.h * @author scott snyder <snyder@bnl.gov> * @date Jan, 2016 - * @brief + * @brief Testing reentrant algorithms. */ diff --git a/Control/StoreGate/StoreGate/VarHandleBase.h b/Control/StoreGate/StoreGate/VarHandleBase.h index a098a3a95ef2..5dbc3729e6ce 100644 --- a/Control/StoreGate/StoreGate/VarHandleBase.h +++ b/Control/StoreGate/StoreGate/VarHandleBase.h @@ -227,6 +227,8 @@ namespace SG { /** * @brief Retrieve and cache all information managed by a handle. + * @param used If false, then this handle is not to be used. + * Instead of normal initialization, the key will be cleared. * * This will retrieve and cache the associated @c DataProxy. * @@ -234,6 +236,7 @@ namespace SG { * the proxy may not exist. We return Success in that case; however, * @c isInitialized will still return false. */ + StatusCode initialize (bool used); StatusCode initialize(); diff --git a/Control/StoreGate/StoreGate/VarHandleKey.h b/Control/StoreGate/StoreGate/VarHandleKey.h index 93cbedd95117..37b43456b5b4 100644 --- a/Control/StoreGate/StoreGate/VarHandleKey.h +++ b/Control/StoreGate/StoreGate/VarHandleKey.h @@ -105,9 +105,13 @@ public: /** * @brief If this object is used as a property, then this should be called - * during the initialize phase. It will fail if the requested StoreGate - * service cannot be found or if the key is blank. + * during the initialize phase. It will fail if the requested + * StoreGate service cannot be found or if the key is blank. + * + * @param used If false, then this handle is not to be used. + * Instead of normal initialization, the key will be cleared. */ + StatusCode initialize (bool used); StatusCode initialize(); diff --git a/Control/StoreGate/share/ReadHandle_test.ref b/Control/StoreGate/share/ReadHandle_test.ref index 4af1c42145b0..899eab4c878e 100644 --- a/Control/StoreGate/share/ReadHandle_test.ref +++ b/Control/StoreGate/share/ReadHandle_test.ref @@ -1,17 +1,17 @@ Initializing Gaudi ApplicationMgr using job opts ../share/VarHandleBase_test.txt -JobOptionsSvc INFO # =======> /home/sss/nobackup/atlas/build/../tests/../share/VarHandleBase_test.txt +JobOptionsSvc INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/Control/StoreGate/share/../share/VarHandleBase_test.txt JobOptionsSvc INFO # (1,1): ApplicationMgr.ExtSvc = ["StoreGateSvc/OtherStore"] JobOptionsSvc INFO # (2,1): OtherStore.ProxyProviderSvc = "" JobOptionsSvc INFO Job options successfully read in from ../share/VarHandleBase_test.txt ApplicationMgr SUCCESS ==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Wed Feb 15 21:44:17 2017 + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus050.cern.ch on Fri Mar 17 15:08:28 2017 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully -ClassIDSvc INFO getRegistryEntries: read 277 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 216 CLIDRegistry entries for module ALL ClassIDSvc ERROR uncheckedSetTypePackageForID: PyAnalysisExamples-00-00-00 can not set CLID <86839352> for type name MyObj: Known CLID for this name <293847295> It was set by StoreGate-00-00-00 EventLoopMgr WARNING Unable to locate service "EventSelector" EventLoopMgr WARNING No events will be processed from external input. @@ -22,10 +22,10 @@ test1 ClassIDSvc INFO getRegistryEntries: read 867 CLIDRegistry entries for module ALL ServiceManager FATAL No Service factory for BazSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service BazSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() ServiceManager FATAL No Service factory for BazSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service BazSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() test2 test3 VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_impl(bool)): could not get proxy for key foox @@ -36,7 +36,7 @@ VarHandle(Store... ERROR FILE:LINE (const void*SG::VarHandleBase::get_impl(cons test4 ServiceManager FATAL No Service factory for BazSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service BazSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() ServiceManager FATAL No Service factory for BazSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service BazSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() diff --git a/Control/StoreGate/share/VarHandleBase_test.ref b/Control/StoreGate/share/VarHandleBase_test.ref index bd22f48fa052..eec74fba059f 100644 --- a/Control/StoreGate/share/VarHandleBase_test.ref +++ b/Control/StoreGate/share/VarHandleBase_test.ref @@ -1,17 +1,18 @@ Initializing Gaudi ApplicationMgr using job opts ../share/VarHandleBase_test.txt -JobOptionsSvc INFO # =======> /home/sss/nobackup/atlas/build/../tests/../share/VarHandleBase_test.txt +JobOptionsSvc INFO # =======> /afs/cern.ch/user/s/ssnyder/atlas-work3/Control/StoreGate/share/../share/VarHandleBase_test.txt JobOptionsSvc INFO # (1,1): ApplicationMgr.ExtSvc = ["StoreGateSvc/OtherStore"] JobOptionsSvc INFO # (2,1): OtherStore.ProxyProviderSvc = "" JobOptionsSvc INFO Job options successfully read in from ../share/VarHandleBase_test.txt ApplicationMgr SUCCESS ==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Mon Feb 6 22:46:45 2017 + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus050.cern.ch on Fri Mar 17 15:25:16 2017 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully -ClassIDSvc INFO getRegistryEntries: read 276 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 217 CLIDRegistry entries for module ALL +ClassIDSvc ERROR uncheckedSetTypePackageForID: PyAnalysisExamples-00-00-00 can not set CLID <86839352> for type name MyObj: Known CLID for this name <293847295> It was set by StoreGate-00-00-00 EventLoopMgr WARNING Unable to locate service "EventSelector" EventLoopMgr WARNING No events will be processed from external input. HistogramPersis...WARNING Histograms saving not required. @@ -21,29 +22,29 @@ test1 ClassIDSvc INFO getRegistryEntries: read 867 CLIDRegistry entries for module ALL ServiceManager FATAL No Service factory for BazSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service BazSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() ServiceManager FATAL No Service factory for BazSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service BazSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() test2 test3 test4 ServiceManager FATAL No Service factory for FooSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service FooSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() -VarHandle(FooSv... FATAL FILE:LINE (StatusCode SG::VarHandleBase::initialize()): code 0: VarHandleKey::initialize() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() +VarHandle(FooSv... FATAL FILE:LINE (StatusCode SG::VarHandleBase::initialize(bool)): code 0: VarHandleKey::initialize() + ERROR FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: Cannot initialize a Read/Write/Update handle with a null key. +VarHandle(FooSv... FATAL FILE:LINE (StatusCode SG::VarHandleBase::initialize(bool)): code 0: VarHandleKey::initialize() test5 ServiceManager FATAL No Service factory for FooSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service FooSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() -VarHandle(FooSv... FATAL FILE:LINE (StatusCode SG::VarHandleBase::initialize()): code 0: VarHandleKey::initialize() -VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_impl(bool)): could not get proxy for key foo -VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_impl(bool)): try using a ReadHandle + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() +VarHandle(FooSv... FATAL FILE:LINE (StatusCode SG::VarHandleBase::initialize(bool)): code 0: VarHandleKey::initialize() test6 test7 ServiceManager FATAL No Service factory for FooSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service FooSvc - FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() VarHandle(FooSv... FATAL FILE:LINE (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: VarHandleKey::initialize() VarHandle(FooSv... ERROR FILE:LINE (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: recordObject failed VarHandle(FooSv... ERROR FILE:LINE (StatusCode SG::VarHandleBase::record_impl(std::unique_ptr<DataObject>, void*, bool, bool)): code 0: Attempt to record an object with a null key @@ -53,7 +54,7 @@ VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointe VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_fromProxy(SG::DataProxy*, bool) const): Proxy [293847295/foo] is in an invalid state VarHandle(FooSv...WARNING FILE:LINE (void*SG::VarHandleBase::typeless_dataPointer_fromProxy(SG::DataProxy*, bool) const): Request for an invalid object; requested CLID = 293847295, proxy primary ID is 293847296 test9 -VarHandleBase @0x7fffbb5654d0 store=FooSvc, clid=293847295, key=foo----------- ptr@0, proxy@0 +VarHandleBase @0x7ffd1bdcb870 store=FooSvc, clid=293847295, key=foo----------- ptr@0, proxy@0 test10 ServiceManager FATAL No Service factory for FooSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service FooSvc diff --git a/Control/StoreGate/share/VarHandleKey_test.ref b/Control/StoreGate/share/VarHandleKey_test.ref index 4446e8915aa3..3e8bbc2de84e 100644 --- a/Control/StoreGate/share/VarHandleKey_test.ref +++ b/Control/StoreGate/share/VarHandleKey_test.ref @@ -1,7 +1,7 @@ ApplicationMgr SUCCESS ==================================================================================================================================== - Welcome to ApplicationMgr (GaudiCoreSvc v27r1p99) - running on karma on Mon Feb 6 22:54:18 2017 + Welcome to ApplicationMgr (GaudiCoreSvc v28r1) + running on lxplus050.cern.ch on Fri Mar 17 15:15:13 2017 ==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully EventLoopMgr WARNING Unable to locate service "EventSelector" @@ -10,9 +10,9 @@ HistogramPersis...WARNING Histograms saving not required. ApplicationMgr INFO Application Manager Initialized successfully ApplicationMgr Ready test1 -ClassIDSvc INFO getRegistryEntries: read 223 CLIDRegistry entries for module ALL +ClassIDSvc INFO getRegistryEntries: read 164 CLIDRegistry entries for module ALL ClassIDSvc INFO getRegistryEntries: read 869 CLIDRegistry entries for module ALL ServiceManager FATAL No Service factory for FooSvc available. VarHandleKey.Se... ERROR ServiceLocatorHelper::service: can not locate service FooSvc - FATAL ../src/VarHandleKey.cxx:100 (StatusCode SG::VarHandleKey::initialize()): code 0: m_storeHandle.retrieve() - ERROR ../src/VarHandleKey.cxx:96 (StatusCode SG::VarHandleKey::initialize()): code 0: Cannot initialize a Read/Write/Update handle with a null key. + FATAL FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: m_storeHandle.retrieve() + ERROR FILE:LINE (StatusCode SG::VarHandleKey::initialize(bool)): code 0: Cannot initialize a Read/Write/Update handle with a null key. diff --git a/Control/StoreGate/src/VarHandleBase.cxx b/Control/StoreGate/src/VarHandleBase.cxx index 7c02a856ca01..42449d9d2318 100644 --- a/Control/StoreGate/src/VarHandleBase.cxx +++ b/Control/StoreGate/src/VarHandleBase.cxx @@ -377,6 +377,8 @@ namespace SG { /** * @brief Retrieve and cache all information managed by a handle. + * @param used If false, then this handle is not to be used. + * Instead of normal initialization, the key will be cleared. * * This will retrieve and cache the associated @c DataProxy. * @@ -385,8 +387,13 @@ namespace SG { * @c isInitialized will still return false. */ StatusCode - VarHandleBase::initialize() + VarHandleBase::initialize (bool used /*= true*/) { + if (!used) { + CHECK( VarHandleKey::initialize (used) ); + return StatusCode::SUCCESS; + } + if (!m_store) { CHECK( VarHandleKey::initialize() ); m_store = &*(this->storeHandle()); @@ -405,6 +412,7 @@ namespace SG { return sc; } + StatusCode VarHandleBase::initialize() { return initialize(true); } // temp /** diff --git a/Control/StoreGate/src/VarHandleKey.cxx b/Control/StoreGate/src/VarHandleKey.cxx index 8ff5711a6426..dab1058991e5 100644 --- a/Control/StoreGate/src/VarHandleKey.cxx +++ b/Control/StoreGate/src/VarHandleKey.cxx @@ -7,7 +7,7 @@ * @file StoreGate/src/VarHandleKey.cxx * @author scott snyder <snyder@bnl.gov> * @date Jan, 2016 - * @brief + * @brief A property holding a SG store/key/clid from which a VarHandle is made. */ @@ -87,11 +87,19 @@ StatusCode VarHandleKey::assign (const std::string& sgkey) /** * @brief If this object is used as a property, then this should be called - * during the initialize phase. It will fail if the requested StoreGate - * service cannot be found or if the key is blank. + * during the initialize phase. It will fail if the requested + * StoreGate service cannot be found or if the key is blank. + * + * @param used If false, then this handle is not to be used. + * Instead of normal initialization, the key will be cleared. */ -StatusCode VarHandleKey::initialize() +StatusCode VarHandleKey::initialize (bool used /*= true*/) { + if (!used) { + Gaudi::DataHandle::updateKey (""); + return StatusCode::SUCCESS; + } + if (Gaudi::DataHandle::objKey() == "") { REPORT_ERROR (StatusCode::FAILURE) << "Cannot initialize a Read/Write/Update handle with a null key."; @@ -100,6 +108,7 @@ StatusCode VarHandleKey::initialize() CHECK( m_storeHandle.retrieve() ); return StatusCode::SUCCESS; } +StatusCode VarHandleKey::initialize() { return initialize(true); } // temp /** diff --git a/Control/StoreGate/test/VarHandleBase_test.cxx b/Control/StoreGate/test/VarHandleBase_test.cxx index f8b2585463cf..aeb21f8b65d0 100644 --- a/Control/StoreGate/test/VarHandleBase_test.cxx +++ b/Control/StoreGate/test/VarHandleBase_test.cxx @@ -314,6 +314,15 @@ void test4() h2.finalReset(); assert (!h2.isInitialized()); assert (h2.m_store == 0); + + TestHandle h3 (293847295, "", Gaudi::DataHandle::Writer, "FooSvc"); + assert (h3.initialize().isFailure()); + assert (h3.initialize(false).isSuccess()); + + TestHandle h4 (293847295, "foo", Gaudi::DataHandle::Writer, "FooSvc"); + assert (h4.key() == "foo"); + assert (h4.initialize(false).isSuccess()); + assert (h4.key() == ""); } diff --git a/Control/StoreGate/test/VarHandleKey_test.cxx b/Control/StoreGate/test/VarHandleKey_test.cxx index 430d434a2a4b..801cb2d6c2ff 100644 --- a/Control/StoreGate/test/VarHandleKey_test.cxx +++ b/Control/StoreGate/test/VarHandleKey_test.cxx @@ -14,6 +14,7 @@ #undef NDEBUG #include "StoreGate/VarHandleKey.h" #include "StoreGate/exceptions.h" +#include "AthenaKernel/errorcheck.h" #include "TestTools/initGaudi.h" #include "TestTools/expect_exception.h" #include <cassert> @@ -81,14 +82,21 @@ void test1() assert (k4.storeHandle().name() == "StoreGateSvc"); assert (!k4.storeHandle().isSet()); assert (k4.initialize().isFailure()); + assert (k4.initialize(false).isSuccess()); EXPECT_EXCEPTION (SG::ExcBadHandleKey, SG::VarHandleKey (1237, "a/b/c", Gaudi::DataHandle::Updater)); + + SG::VarHandleKey k5 (1236, "BarSvc/ccc", Gaudi::DataHandle::Updater, "FooSvc"); + assert (k5.key() == "ccc"); + assert (k5.initialize(false).isSuccess()); + assert (k5.key() == ""); } int main() { + errorcheck::ReportMessage::hideErrorLocus(); ISvcLocator* pDum; Athena_test::initGaudi(pDum); //need MessageSvc -- GitLab