diff --git a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RCond.ref b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RCond.ref index 7c4c0f0e89c0dc024db5e5767c1ae97ba3fd75ae..ee15cc6f9cea8841c1a98254115de690a1a193f0 100644 --- a/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RCond.ref +++ b/Database/AthenaPOOL/AthenaPoolExample/AthenaPoolExampleAlgorithms/share/AthenaPoolExample_RCond.ref @@ -1,19 +1,61 @@ +Tue Mar 30 10:39:50 CDT 2021 +Preloading tcmalloc_minimal.so +Athena INFO including file "AthenaCommon/Preparation.py" +Athena INFO including file "AthenaCommon/Atlas.UnixStandardJob.py" Athena INFO executing ROOT6Setup +Athena INFO including file "AthenaCommon/Execution.py" +Athena INFO including file "AthenaPoolExampleAlgorithms/AthenaPoolExample_RCondJobOptions.py" +Py:ConfigurableDb INFO Read module info for 5121 configurables from 59 genConfDb files +Py:ConfigurableDb INFO No duplicates have been found: that's good ! +Athena INFO including file "AthenaCommon/runbatch.py" +ApplicationMgr SUCCESS +==================================================================================================================================== + Welcome to ApplicationMgr (GaudiCoreSvc v35r1) + running on hepd-0003 on Tue Mar 30 10:39:57 2021 +==================================================================================================================================== ApplicationMgr INFO Application Manager Configured successfully AthDictLoaderSvc INFO in initialize... AthDictLoaderSvc INFO acquired Dso-registry +ClassIDSvc INFO getRegistryEntries: read 3200 CLIDRegistry entries for module ALL +AthenaEventLoopMgr INFO Initializing AthenaEventLoopMgr - package version AthenaServices-00-00-00 +ClassIDSvc INFO getRegistryEntries: read 861 CLIDRegistry entries for module ALL +ReadCond DEBUG Property update for OutputLevel : new value = 2 ReadCond INFO in initialize() +ReadCond DEBUG input handles: 0 +ReadCond DEBUG output handles: 0 +ReadCond DEBUG Data Deps for ReadCond +ReadData DEBUG Property update for OutputLevel : new value = 2 ReadData INFO in initialize() +MetaDataSvc DEBUG Property update for OutputLevel : new value = 2 +MetaDataSvc INFO Initializing MetaDataSvc - package version AthenaServices-00-00-00 +MetaDataSvc DEBUG Service base class initialized successfully +PoolSvc DEBUG Property update for OutputLevel : new value = 2 +PoolSvc DEBUG Service base class initialized successfully +PoolSvc INFO Set connectionsvc retry/timeout/IDLE timeout to 'ConnectionRetrialPeriod':300/ 'ConnectionRetrialTimeOut':3600/ 'ConnectionTimeOut':5 seconds with connection cleanup disabled +PoolSvc INFO Frontier compression level set to 5 +DBReplicaSvc INFO Frontier server at (serverurl=http://atlasfrontier-ai.cern.ch:8000/atlr)(serverurl=http://frontier-atlas.lcg.triumf.ca:3128/ATLAS_frontier)(serverurl=http://ccfrontier.in2p3.fr:23128/ccin2p3-AtlasFrontier)(proxyurl=http://atlasbpfrontier.cern.ch:3127)(proxyurl=http://atlasbpfrontier.fnal.gov:3127) will be considered for COOL data +DBReplicaSvc INFO Read replica configuration from /home/gemmeren/workarea/build/x86_64-centos7-gcc8-opt/share/dbreplica.config +DBReplicaSvc INFO Total of 1 servers found for host hepd-0003.lcrc.anl.gov [ATLF ] +PoolSvc INFO Successfully setup replica sorting algorithm PoolSvc DEBUG OutputLevel is 2 +PoolSvc INFO Setting up APR FileCatalog and Streams PoolSvc DEBUG POOL ReadCatalog is file:Catalog0.xml PoolSvc DEBUG POOL ReadCatalog is file:Catalog1.xml +PoolSvc INFO POOL WriteCatalog is file:Catalog2.xml +DbSession INFO Open DbSession +Domain[ROOT_All] INFO > Access DbDomain READ [ROOT_All] +MetaDataSvc INFO Found MetaDataTools = PublicToolHandleArray(['IOVDbMetaDataTool']) +EventSelector DEBUG Property update for OutputLevel : new value = 2 EventSelector DEBUG Initializing EventSelector +EventSelector DEBUG Service base class initialized successfully EventSelector DEBUG reinitialization... EventSelector INFO EventSelection with query EventSelector DEBUG Try item: "SimplePoolFile1.root" from the collection list. PoolSvc DEBUG createCollection() type=RootCollection, connection=PFN:SimplePoolFile1.root, name=SimplePoolFile1.root, contextID=0 MetaDataSvc DEBUG handle() FirstInputFile for FID:???? MetaDataSvc DEBUG initInputMetaDataStore: file name FID:???? +Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] ???? +Domain[ROOT_All] INFO SimplePoolFile1.root SimplePoolFile1... DEBUG --> Access DbContainer READ [ROOT_All] ##Shapes ##Shapes DEBUG Opening ##Shapes DEBUG attributes# = 1 @@ -112,18 +154,33 @@ MetaDataHdr(Dat... DEBUG Opening MetaDataHdr(Dat... DEBUG attributes# = 1 MetaDataHdr(Dat... DEBUG Branch container 'DataHeader' MetaDataHdr(Dat... DEBUG Opened container MetaDataHdr(DataHeader) of type ROOT_Tree +ClassIDSvc INFO getRegistryEntries: read 1710 CLIDRegistry entries for module ALL +EventPersistenc... INFO Added successfully Conversion service:AthenaPoolCnvSvc SimplePoolFile1... DEBUG --> Access DbContainer READ [ROOT_Tree] MetaDataHdrForm(DataHeaderForm) MetaDataHdrForm... DEBUG Opening MetaDataHdrForm... DEBUG attributes# = 1 MetaDataHdrForm... DEBUG Branch container 'DataHeaderForm' MetaDataHdrForm... DEBUG Opened container MetaDataHdrForm(DataHeaderForm) of type ROOT_Tree MetaDataSvc DEBUG Loaded input meta data store proxies +ClassIDSvc INFO getRegistryEntries: read 2 CLIDRegistry entries for module ALL +OutputStreamSeq... INFO Initializing OutputStreamSequencerSvc - package version AthenaServices-00-00-00 MetaDataSvc DEBUG Registering all Tools in ToolHandleArray MetaDataTools MetaDataSvc DEBUG Adding public ToolHandle tool ToolSvc.IOVDbMetaDataTool (IOVDbMetaDataTool) +MetaDataSvc INFO AlgTool: ToolSvc.IOVDbMetaDataTool +AthenaPoolAddre... DEBUG Property update for OutputLevel : new value = 2 +AthenaPoolAddre... DEBUG Service base class initialized successfully +CondProxyProvider DEBUG Property update for OutputLevel : new value = 2 +CondProxyProvider INFO Initializing CondProxyProvider - package version EventSelectorAthenaPool-00-00-00 +CondProxyProvider DEBUG Service base class initialized successfully CondProxyProvider INFO Inputs: SimplePoolFile4.root CondProxyProvider DEBUG Try item: "SimplePoolFile4.root" from the collection list. -PoolSvc DEBUG createCollection() type=RootCollection, connection=PFN:SimplePoolFile4.root, name=SimplePoolFile4.root, contextID=0 -PoolSvc DEBUG createCollection() type=ImplicitCollection, connection=PFN:SimplePoolFile4.root, name=POOLContainer(DataHeader), contextID=0 +PoolSvc DEBUG createCollection() type=RootCollection, connection=PFN:SimplePoolFile4.root, name=SimplePoolFile4.root, contextID=2 +PoolSvc DEBUG createCollection() type=ImplicitCollection, connection=PFN:SimplePoolFile4.root, name=POOLContainer(DataHeader), contextID=2 +PersistencySvc:... DEBUG lookupPFN: SimplePoolFile4.root returned FID: '????' tech=ROOT_All +DbSession INFO Open DbSession +Domain[ROOT_All] INFO > Access DbDomain READ [ROOT_All] +Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] ???? +Domain[ROOT_All] INFO SimplePoolFile4.root SimplePoolFile4... DEBUG --> Access DbContainer READ [ROOT_All] ##Shapes ##Shapes DEBUG Opening ##Shapes DEBUG attributes# = 1 @@ -157,6 +214,9 @@ SimplePoolFile4... DEBUG --->Reading Param:PFN=[SimplePoolFile4.root] SimplePoolFile4... DEBUG --->Reading Param:POOL_VSN=[1.1] SimplePoolFile4... DEBUG --->Reading Param:FORMAT_VSN=[1.1] ##Params DEBUG No objects passing selection criteria... Container has 4 Entries in total. +ReadData DEBUG input handles: 2 +ReadData DEBUG output handles: 0 +ReadData DEBUG Data Deps for ReadData + INPUT ( 'ExampleHitContainer' , 'StoreGateSvc+MyHits' ) + INPUT ( 'ExampleTrackContainer' , 'StoreGateSvc+MyTracks' ) AthenaEventLoopMgr INFO Setup EventSelector service EventSelector @@ -190,6 +250,7 @@ POOLContainerFo... DEBUG Opened container POOLContainerForm(DataHeaderForm) of AthenaPoolAddre... DEBUG The current Event contains: 3 objects AthenaPoolAddre... DEBUG loadAddresses: DataObject address, clid = 2101, name = McEventInfo AthenaPoolAddre... DEBUG loadAddresses: DataObject address, clid = 9102, name = MyHits +AlgResourcePool INFO TopAlg list empty. Recovering the one of Application Manager AthenaEventLoopMgr INFO ===>>> start of run 1 <<<=== AthenaEventLoopMgr INFO ===>>> start processing event #0, run #1 0 events processed so far <<<=== ReadCond DEBUG in execute() @@ -199,8 +260,15 @@ POOLContainer(D... DEBUG Opening POOLContainer(D... DEBUG attributes# = 1 POOLContainer(D... DEBUG Branch container 'DataHeader' POOLContainer(D... DEBUG Opened container POOLContainer(DataHeader) of type ROOT_Tree -StorageSvc DEBUG Disconnect request for database: FID=???? PFN=SimplePoolFile4.root -StorageSvc DEBUG Closing database: FID=???? +SimplePoolFile4... DEBUG --> Access DbContainer READ [ROOT_Tree] POOLContainerForm(DataHeaderForm) +POOLContainerFo... DEBUG Opening +POOLContainerFo... DEBUG attributes# = 1 +POOLContainerFo... DEBUG Branch container 'DataHeaderForm' +POOLContainerFo... DEBUG Opened container POOLContainerForm(DataHeaderForm) of type ROOT_Tree +CondProxyProvider DEBUG The current File contains: 2 objects +CondProxyProvider DEBUG preLoadAddresses: DataObject address, clid = 9102, name = PedestalWriteData +Domain[ROOT_All] INFO -> Access DbDatabase READ [ROOT_All] ???? +Domain[ROOT_All] INFO SimplePoolFile4.root SimplePoolFile4... DEBUG --> Access DbContainer READ [ROOT_All] ##Shapes ##Shapes DEBUG Opening ##Shapes DEBUG attributes# = 1 @@ -234,18 +302,6 @@ SimplePoolFile4... DEBUG --->Reading Param:PFN=[SimplePoolFile4.root] SimplePoolFile4... DEBUG --->Reading Param:POOL_VSN=[1.1] SimplePoolFile4... DEBUG --->Reading Param:FORMAT_VSN=[1.1] ##Params DEBUG No objects passing selection criteria... Container has 4 Entries in total. -SimplePoolFile4... DEBUG --> Access DbContainer READ [ROOT_Tree] POOLContainer(DataHeader) -POOLContainer(D... DEBUG Opening -POOLContainer(D... DEBUG attributes# = 1 -POOLContainer(D... DEBUG Branch container 'DataHeader' -POOLContainer(D... DEBUG Opened container POOLContainer(DataHeader) of type ROOT_Tree -SimplePoolFile4... DEBUG --> Access DbContainer READ [ROOT_Tree] POOLContainerForm(DataHeaderForm) -POOLContainerFo... DEBUG Opening -POOLContainerFo... DEBUG attributes# = 1 -POOLContainerFo... DEBUG Branch container 'DataHeaderForm' -POOLContainerFo... DEBUG Opened container POOLContainerForm(DataHeaderForm) of type ROOT_Tree -CondProxyProvider DEBUG The current File contains: 2 objects -CondProxyProvider DEBUG preLoadAddresses: DataObject address, clid = 9102, name = PedestalWriteData SimplePoolFile4... DEBUG --> Access DbContainer READ [ROOT_Tree] ConditionsContainerExampleHitContainer_p1(PedestalWriteData) ConditionsConta... DEBUG Opening ConditionsConta... DEBUG attributes# = 1 @@ -288,6 +344,7 @@ EventSelector DEBUG Get AttributeList from the collection EventSelector DEBUG AttributeList size 12 EventSelector DEBUG record AthenaAttribute, name = Token = [DB=????][CNT=POOLContainer(DataHeader)][CLID=????][TECH=00000203][OID=00000005-00000001]. EventSelector DEBUG record AthenaAttribute, name = eventRef = [DB=????][CNT=POOLContainer(DataHeader)][CLID=????][TECH=00000203][OID=00000005-00000001]. +ClassIDSvc INFO getRegistryEntries: read 21 CLIDRegistry entries for module ALL EventSelector DEBUG found AthenaAttribute, name = eventRef = [DB=????][CNT=POOLContainer(DataHeader)][CLID=????][TECH=00000203][OID=00000005-00000001] AthenaPoolAddre... DEBUG The current Event contains: 3 objects AthenaPoolAddre... DEBUG loadAddresses: DataObject address, clid = 2101, name = McEventInfo @@ -913,25 +970,37 @@ ReadData INFO Hit x = 1930.12 y = 46.5449 z = -1856.17 detector = Du AthenaEventLoopMgr INFO ===>>> done processing event #19, run #1 20 events processed so far <<<=== MetaDataSvc DEBUG handle() EndInputFile for FID:???? MetaDataSvc DEBUG retireMetadataSource: FID:???? +EventSelector INFO Disconnecting input sourceID: ???? StorageSvc DEBUG Disconnect request for database: FID=???? PFN=SimplePoolFile1.root StorageSvc DEBUG Closing database: FID=???? +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] ???? AthenaEventLoopMgr INFO No more events in event selection MetaDataSvc DEBUG MetaDataSvc::stop() PoolSvc DEBUG Disconnect request for contextId=0 StorageSvc DEBUG Disconnect request for database: FID=???? PFN=SimplePoolFile4.root StorageSvc DEBUG Closing database: FID=???? +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] ???? +Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] PoolSvc DEBUG Disconnected PersistencySvc session PoolSvc DEBUG Disconnect request for contextId=1 PoolSvc DEBUG Disconnect request for contextId=2 +StorageSvc DEBUG Disconnect request for database: FID=???? PFN=SimplePoolFile4.root +StorageSvc DEBUG Closing database: FID=???? +Domain[ROOT_All] INFO -> Deaccess DbDatabase READ [ROOT_All] ???? +Domain[ROOT_All] INFO > Deaccess DbDomain READ [ROOT_All] PoolSvc DEBUG Disconnected PersistencySvc session ApplicationMgr INFO Application Manager Stopped successfully ReadCond INFO in finalize() ReadData INFO in finalize() +ReadData DEBUG Calling destructor AthDictLoaderSvc INFO in finalize... ToolSvc INFO Removing all tools created by ToolSvc *****Chrono***** INFO **************************************************************************************************** *****Chrono***** INFO The Final CPU consumption ( Chrono ) Table (ordered) *****Chrono***** INFO **************************************************************************************************** +cObjR_ALL INFO Time User : Tot= 0 [us] Ave/Min/Max= 0(+- 0)/ 0/ 0 [us] #= 49 +cObj_ALL INFO Time User : Tot= 10 [ms] Ave/Min/Max= 0.222(+- 1.47)/ 0/ 10 [ms] #= 45 +ChronoStatSvc INFO Time User : Tot= 170 [ms] #= 1 *****Chrono***** INFO **************************************************************************************************** ChronoStatSvc.f... INFO Service finalized successfully ApplicationMgr INFO Application Manager Finalized successfully diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.cxx b/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.cxx index 3012b83caf359001f048b50715e73aba18d8221c..9f68c3f9d0b71a41bc89d8b52383826e9ea1fc46 100755 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.cxx +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.cxx @@ -31,7 +31,8 @@ CondProxyProvider::CondProxyProvider(const std::string& name, ISvcLocator* pSvcLocator) : ::AthService(name, pSvcLocator), m_athenaPoolCnvSvc("AthenaPoolCnvSvc", name), - m_poolCollectionConverter(0) + m_poolCollectionConverter(0), + m_contextId(IPoolSvc::kInputStream) { } //________________________________________________________________________________ @@ -55,8 +56,8 @@ StatusCode CondProxyProvider::initialize() { } // Get PoolSvc and connect as "Conditions" IPoolSvc *poolSvc = m_athenaPoolCnvSvc->getPoolSvc(); - StatusCode status = poolSvc->connect( pool::ITransaction::READ, - poolSvc->getInputContext("Conditions") ); + m_contextId = poolSvc->getInputContext("Conditions"); + StatusCode status = poolSvc->connect( pool::ITransaction::READ, m_contextId ); if (!status.isSuccess()) { ATH_MSG_FATAL("Cannot connect to Database."); return(StatusCode::FAILURE); @@ -131,7 +132,7 @@ StatusCode CondProxyProvider::preLoadAddresses(StoreID::type storeID, SG::VersionedKey myVersKey(name(), verNumber); Token* token = new Token; token->fromString(headerIterator->eventRef().toString()); - TokenAddress* tokenAddr = new TokenAddress(POOL_StorageType, ClassID_traits<DataHeader>::ID(), "", myVersKey, IPoolSvc::kInputStream, token); + TokenAddress* tokenAddr = new TokenAddress(POOL_StorageType, ClassID_traits<DataHeader>::ID(), "", myVersKey, m_contextId, token); if (!detectorStoreSvc->recordAddress(tokenAddr).isSuccess()) { ATH_MSG_ERROR("Cannot record DataHeader."); return(StatusCode::FAILURE); @@ -178,6 +179,7 @@ PoolCollectionConverter* CondProxyProvider::getCollectionCnv() { ATH_MSG_DEBUG("Try item: \"" << *m_inputCollectionsIterator << "\" from the collection list."); PoolCollectionConverter* pCollCnv = new PoolCollectionConverter("ImplicitROOT", *m_inputCollectionsIterator, + m_contextId, "", m_athenaPoolCnvSvc->getPoolSvc()); if (!pCollCnv->initialize().isSuccess()) { diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.h b/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.h index 0f39299504fcb58f037c0d58ff683ed98c221608..1f8d61cac6e8bfa501a255e30020675241014322 100755 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.h +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/CondProxyProvider.h @@ -59,6 +59,7 @@ private: // data ServiceHandle<IAthenaPoolCnvSvc> m_athenaPoolCnvSvc; mutable PoolCollectionConverter* m_poolCollectionConverter ATLAS_THREAD_SAFE; + unsigned int m_contextId; private: // properties /// InputCollections, vector with names of the input collections. diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx b/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx index 1496c4d919f41c3ccc1cd826b16cd6d049f2b96b..feb31182bab8d7783ec58299f09bb2511e3997bc 100644 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/EventSelectorAthenaPool.cxx @@ -780,6 +780,7 @@ StatusCode EventSelectorAthenaPool::seek(Context& /*ctxt*/, int evtNum) const { m_inputCollectionsIterator += m_curCollection; m_poolCollectionConverter = new PoolCollectionConverter(m_collectionType.value() + ":" + m_collectionTree.value(), m_inputCollectionsProp.value()[m_curCollection], + IPoolSvc::kInputStream, m_query.value(), m_athenaPoolCnvSvc->getPoolSvc()); if (!m_poolCollectionConverter->initialize().isSuccess()) { @@ -827,6 +828,7 @@ int EventSelectorAthenaPool::findEvent(int evtNum) const { if (m_numEvt[i] == -1) { PoolCollectionConverter pcc(m_collectionType.value() + ":" + m_collectionTree.value(), m_inputCollectionsProp.value()[i], + IPoolSvc::kInputStream, m_query.value(), m_athenaPoolCnvSvc->getPoolSvc()); if (!pcc.initialize().isSuccess()) { @@ -981,6 +983,7 @@ PoolCollectionConverter* EventSelectorAthenaPool::getCollectionCnv(bool throwInc ATH_MSG_DEBUG("Try item: \"" << *m_inputCollectionsIterator << "\" from the collection list."); PoolCollectionConverter* pCollCnv = new PoolCollectionConverter(m_collectionType.value() + ":" + m_collectionTree.value(), *m_inputCollectionsIterator, + IPoolSvc::kInputStream, m_query.value(), m_athenaPoolCnvSvc->getPoolSvc()); StatusCode status = pCollCnv->initialize(); diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.cxx b/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.cxx index 9ee099c22f4cd6a3fc4f7d4361d2f46f36e3e8ff..8ca01de0d3bf463a974d7bb51976833e53cf7e5e 100755 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.cxx +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.cxx @@ -30,11 +30,13 @@ //______________________________________________________________________________ PoolCollectionConverter::PoolCollectionConverter(const std::string& collectionType, const std::string& inputCollection, + unsigned int contextId, const std::string& query, const IPoolSvc* svc) : m_collectionType(), m_connection(), m_inputCollection(inputCollection), + m_contextId(contextId), m_query(query), m_poolSvc(svc), m_poolCollection(nullptr), @@ -85,7 +87,7 @@ StatusCode PoolCollectionConverter::initialize() { m_connection = "PFN:" + m_inputCollection; } try { - m_poolCollection = m_poolSvc->createCollection("RootCollection", m_connection, m_inputCollection); + m_poolCollection = m_poolSvc->createCollection("RootCollection", m_connection, m_inputCollection, m_contextId); } catch (std::exception &e) { m_poolCollection = nullptr; } @@ -96,11 +98,11 @@ StatusCode PoolCollectionConverter::initialize() { } try { if (m_poolCollection == nullptr) { - m_poolCollection = m_poolSvc->createCollection(collectionTypeString, m_connection, m_inputCollection); + m_poolCollection = m_poolSvc->createCollection(collectionTypeString, m_connection, m_inputCollection, m_contextId); } if (m_poolCollection == nullptr && collectionTypeString == "ImplicitCollection") { m_inputCollection = m_inputContainer + "_DataHeader"; - m_poolCollection = m_poolSvc->createCollection(collectionTypeString, m_connection, m_inputCollection); + m_poolCollection = m_poolSvc->createCollection(collectionTypeString, m_connection, m_inputCollection, m_contextId); } } catch (std::exception &e) { return(StatusCode::RECOVERABLE); diff --git a/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.h b/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.h index a606c321401a7a819b389bc85ddfdd5900b6cd0a..b69c18e50b99a0a60e9b6d7336a47f335c3a2873 100755 --- a/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.h +++ b/Database/AthenaPOOL/EventSelectorAthenaPool/src/PoolCollectionConverter.h @@ -18,7 +18,6 @@ namespace pool { class ICollection; class ICollectionQuery; class ICollectionCursor; - class ICollectionMetadata; } class StatusCode; @@ -37,6 +36,7 @@ public: /// @param contextId [IN] id for PoolSvc persistency service to use for input. PoolCollectionConverter(const std::string& collectionType, const std::string& inputCollection, + unsigned int contextId, const std::string& query, const IPoolSvc* svc); @@ -67,6 +67,7 @@ private: // data std::string m_collectionType; std::string m_connection; std::string m_inputCollection; + unsigned int m_contextId; std::string m_query; const IPoolSvc* m_poolSvc; pool::ICollection* m_poolCollection; diff --git a/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h b/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h index 037518d3a7e3ef1ddaa88bde47215e4fd309776d..5bd4251074ffd6fc33b0cbe01ca974daa8bcf672 100644 --- a/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h +++ b/Database/AthenaPOOL/PoolSvc/PoolSvc/IPoolSvc.h @@ -95,13 +95,11 @@ public: // Non-static members /// @param collectionType [IN] string containing the collection type. /// @param connection [IN] string containing the connection. /// @param collectionName [IN] string containing the persistent name of the collection. - /// @param openMode [IN] ICollection open mode of the collection. /// @param contextId [IN] id for PoolSvc persistency service to use for input. virtual pool::ICollection* createCollection ATLAS_NOT_THREAD_SAFE (const std::string& collectionType, const std::string& connection, const std::string& collectionName, - const pool::ICollection::OpenMode& openMode = pool::ICollection::READ, unsigned int contextId = IPoolSvc::kInputStream) const = 0; /// @return a token for a container entry. diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx index 2bc26371bbd867e9ecf4f2dd370669b4b3d09909..ec216016684bfd51156542e1993fd16d6d489728 100644 --- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx +++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.cxx @@ -439,7 +439,6 @@ pool::ICollection* PoolSvc::createCollection ATLAS_NOT_THREAD_SAFE (const std::string& collectionType, const std::string& connection, const std::string& collectionName, - const pool::ICollection::OpenMode& openMode, unsigned int contextId) const { ATH_MSG_DEBUG("createCollection() type="<< collectionType << ", connection=" << connection << ", name=" << collectionName << ", contextID=" << contextId); @@ -451,14 +450,9 @@ pool::ICollection* PoolSvc::createCollection ATLAS_NOT_THREAD_SAFE collection = "PFN:" + collectionName; } } - if (openMode == pool::ICollection::READ) { - if (contextId >= m_persistencySvcVec.size()) { - ATH_MSG_WARNING("createCollection: Using default input Stream instead of id = " << contextId); - contextId = IPoolSvc::kInputStream; - } - } if (contextId >= m_persistencySvcVec.size()) { - return(nullptr); + ATH_MSG_WARNING("createCollection: Using default input Stream instead of id = " << contextId); + contextId = IPoolSvc::kInputStream; } std::lock_guard<CallMutex> lock(*m_pers_mut[contextId]); // Check POOL FileCatalog entry. @@ -511,10 +505,10 @@ pool::ICollection* PoolSvc::createCollection ATLAS_NOT_THREAD_SAFE if (collectionType == "RootCollection" && m_persistencySvcVec[contextId]->session().defaultConnectionPolicy().writeModeForNonExisting() != pool::DatabaseConnectionPolicy::RAISE_ERROR) { ATH_MSG_INFO("Writing ExplicitROOT Collection - do not pass session pointer"); - collPtr = collFac->create(collDes, openMode); + collPtr = collFac->create(collDes, pool::ICollection::READ); } else { try { - collPtr = collFac->create(collDes, openMode, &m_persistencySvcVec[contextId]->session()); + collPtr = collFac->create(collDes, pool::ICollection::READ, &m_persistencySvcVec[contextId]->session()); } catch (std::exception &e) { if (insertFile) { std::unique_ptr<pool::IDatabase> dbH = getDbHandle(contextId, connection); @@ -531,7 +525,7 @@ pool::ICollection* PoolSvc::createCollection ATLAS_NOT_THREAD_SAFE std::unique_ptr<pool::IDatabase> dbH = getDbHandle(contextId, connection); if (dbH == nullptr) { ATH_MSG_INFO("Failed to create FileCatalog entry."); - } else if (openMode == pool::ICollection::READ && dbH->fid().empty()) { + } else if (dbH->fid().empty()) { ATH_MSG_INFO("Cannot retrieve the FID of an existing POOL database: '" << connection << "' - FileCatalog will NOT be updated."); } else { diff --git a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h index db883011c212c1c5df50103491df79a3500373f2..2c77b047d5bf0e458942234c39160692c8cfc650 100644 --- a/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h +++ b/Database/AthenaPOOL/PoolSvc/src/PoolSvc.h @@ -100,13 +100,11 @@ public: // Non-static members /// @param collectionType [IN] string containing the collection type. /// @param connection [IN] string containing the connection. /// @param collectionName [IN] string containing the persistent name of the collection. - /// @param openMode [IN] ICollection open mode of the collection. /// @param contextId [IN] id for PoolSvc persistency service to use for input. pool::ICollection* createCollection ATLAS_NOT_THREAD_SAFE (const std::string& collectionType, const std::string& connection, const std::string& collectionName, - const pool::ICollection::OpenMode& openMode = pool::ICollection::READ, unsigned int contextId = IPoolSvc::kInputStream) const; /// @return a token for a container entry.