Skip to content
Snippets Groups Projects
Commit 01c90bb4 authored by Scott Snyder's avatar Scott Snyder Committed by scott snyder
Browse files

IOVSvc: Change CondCont to use ConcurrentRangeMap

Change CondCont to use ConcurrentRangeMap to store conditions information.
This allows the elimination of locking operations in most cases.



Former-commit-id: 59b2e71f
parent ba2c3097
No related branches found
No related tags found
No related merge requests found
...@@ -58,7 +58,8 @@ CondInputLoader::CondInputLoader( const std::string& name, ...@@ -58,7 +58,8 @@ CondInputLoader::CondInputLoader( const std::string& name,
m_condStore("StoreGateSvc/ConditionStore", name), m_condStore("StoreGateSvc/ConditionStore", name),
m_condSvc("CondSvc",name), m_condSvc("CondSvc",name),
m_IOVSvc("IOVSvc",name), m_IOVSvc("IOVSvc",name),
m_clidSvc("ClassIDSvc",name) m_clidSvc("ClassIDSvc",name),
m_rcuSvc("Athena::RCUSvc",name)
{ {
// //
...@@ -93,6 +94,7 @@ CondInputLoader::initialize() ...@@ -93,6 +94,7 @@ CondInputLoader::initialize()
ATH_CHECK( m_condSvc.retrieve() ); ATH_CHECK( m_condSvc.retrieve() );
ATH_CHECK( m_condStore.retrieve() ); ATH_CHECK( m_condStore.retrieve() );
ATH_CHECK( m_clidSvc.retrieve() ); ATH_CHECK( m_clidSvc.retrieve() );
ATH_CHECK( m_rcuSvc.retrieve() );
// Trigger read of IOV database // Trigger read of IOV database
ServiceHandle<IIOVSvc> ivs("IOVSvc",name()); ServiceHandle<IIOVSvc> ivs("IOVSvc",name());
...@@ -259,12 +261,12 @@ CondInputLoader::start() ...@@ -259,12 +261,12 @@ CondInputLoader::start()
<< "This is a BAD sign, but will try to continue"); << "This is a BAD sign, but will try to continue");
} }
SG::DataObjectSharedPtr<DataObject> cb = SG::DataObjectSharedPtr<DataObject> cb =
CondContainer::CondContFactory::Instance().Create( ditr->clid(), ditr->key() ); CondContainer::CondContFactory::Instance().Create( *m_rcuSvc, ditr->clid(), ditr->key() );
if (cb == 0) { if (cb == 0) {
// try to force a load of libraries using ROOT // try to force a load of libraries using ROOT
(void)TClass::GetClass (tp.c_str()); (void)TClass::GetClass (tp.c_str());
cb = cb =
CondContainer::CondContFactory::Instance().Create( ditr->clid(), ditr->key() ); CondContainer::CondContFactory::Instance().Create( *m_rcuSvc, ditr->clid(), ditr->key() );
} }
if (cb == 0) { if (cb == 0) {
ATH_MSG_ERROR("failed to create CondCont<" << tp ATH_MSG_ERROR("failed to create CondCont<" << tp
......
...@@ -89,6 +89,7 @@ class CondInputLoader ...@@ -89,6 +89,7 @@ class CondInputLoader
ServiceHandle<ICondSvc> m_condSvc; ServiceHandle<ICondSvc> m_condSvc;
ServiceHandle<IIOVSvc> m_IOVSvc; ServiceHandle<IIOVSvc> m_IOVSvc;
ServiceHandle<IClassIDSvc> m_clidSvc; ServiceHandle<IClassIDSvc> m_clidSvc;
ServiceHandle<Athena::IRCUSvc> m_rcuSvc;
std::map<std::string,std::string> m_keyFolderMap; std::map<std::string,std::string> m_keyFolderMap;
}; };
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment