 |
ATLAS Offline Software
|
This class provides the interface to the LCG POOL persistency software.
More...
#include <PoolSvc.h>
|
virtual StatusCode | initialize () override |
| Required of all Gaudi services: More...
|
|
virtual StatusCode | io_reinit () override |
|
virtual StatusCode | start () override |
| Required of all Gaudi services: More...
|
|
virtual StatusCode | stop () override |
|
virtual StatusCode | finalize () override |
| Required of all Gaudi services: More...
|
|
virtual StatusCode | io_finalize () override |
|
virtual Token * | registerForWrite (const Placement *placement, const void *obj, const RootType &classDesc) override |
|
virtual void | setObjPtr (void *&obj, const Token *token) override |
|
virtual unsigned int | getOutputContext (const std::string &label) override |
|
virtual unsigned int | getInputContext (const std::string &label, unsigned int maxFile=0) override |
|
virtual const std::map< std::string, unsigned int > & | getInputContextMap () const override |
|
virtual const coral::Context * | context () const override |
|
virtual void | loadComponent (const std::string &compName) override |
|
virtual void | setShareMode (bool shareCat) override |
|
virtual const pool::IFileCatalog * | catalog () const override |
|
virtual void | lookupBestPfn (const std::string &token, std::string &pfn, std::string &type) const override |
|
virtual void | renamePfn (const std::string &pf, const std::string &newpf) override |
|
virtual pool::ICollection * | createCollection (const std::string &collectionType, const std::string &connection, const std::string &collectionName, unsigned int contextId=IPoolSvc::kInputStream) const override |
|
virtual Token * | getToken (const std::string &connection, const std::string &collection, const unsigned long ientry) const override |
|
virtual StatusCode | connect (pool::ITransaction::Type type, unsigned int contextId=IPoolSvc::kInputStream) override |
| Connect to a logical database unit; PersistencySvc is chosen according to transaction type (accessmode). More...
|
|
virtual StatusCode | commit (unsigned int contextId=IPoolSvc::kInputStream) const override |
| Commit data for a given contextId and flush buffer. More...
|
|
virtual StatusCode | commitAndHold (unsigned int contextId=IPoolSvc::kInputStream) const override |
| Commit data for a given contextId and hold buffer. More...
|
|
virtual StatusCode | disconnect (unsigned int contextId=IPoolSvc::kInputStream) const override |
| Disconnect PersistencySvc associated with a contextId. More...
|
|
virtual StatusCode | disconnectDb (const std::string &connection, unsigned int contextId=IPoolSvc::kInputStream) const override |
| Disconnect single Database. More...
|
|
virtual long long int | getFileSize (const std::string &dbName, long tech, unsigned int contextId) const override |
| Get POOL FileSize attribute for database without logging a message. More...
|
|
virtual StatusCode | getAttribute (const std::string &optName, std::string &data, long tech, unsigned int contextId=IPoolSvc::kInputStream) const override |
| Get POOL attributes - domain. More...
|
|
virtual StatusCode | getAttribute (const std::string &optName, std::string &data, long tech, const std::string &dbName, const std::string &contName="", unsigned int contextId=IPoolSvc::kInputStream) const override |
| Get POOL attributes - db/file, container/collection. More...
|
|
virtual StatusCode | setAttribute (const std::string &optName, const std::string &data, long tech, unsigned int contextId=IPoolSvc::kOutputStream) const override |
| Set POOL attributes - domain. More...
|
|
virtual StatusCode | setAttribute (const std::string &optName, const std::string &data, long tech, const std::string &dbName, const std::string &contName="", unsigned int contextId=IPoolSvc::kOutputStream) const override |
| Set POOL attributes - db/file, container/collection. More...
|
|
virtual StatusCode | setFrontierCache (const std::string &conn) override |
| Setup Frontier cache for given logical or physical connection name. More...
|
|
virtual | ~PoolSvc () |
| Destructor. More...
|
|
|
CallMutex | m_pool_mut |
|
coral::Context * | m_context {nullptr} |
|
bool | m_shareCat {false} |
|
pool::IFileCatalog * | m_catalog {nullptr} |
|
std::vector< pool::IPersistencySvc * > | m_persistencySvcVec |
|
std::vector< CallMutex * > | m_pers_mut |
|
std::map< std::string, unsigned int > | m_inputContextLabel |
|
std::map< std::string, unsigned int > | m_outputContextLabel |
|
std::string | m_mainOutputLabel {} |
|
std::map< unsigned int, unsigned int > | m_contextMaxFile |
|
std::map< unsigned int, std::list< Guid > > m_guidLists | ATLAS_THREAD_SAFE |
|
StringProperty | m_fileOpen {this,"FileOpen","overwrite"} |
| FileOpen, the open mode for the file ("append" or "overwrite"). More...
|
|
IntegerProperty | m_dbAgeLimit {this,"MaxFilesOpen",0} |
| MaxFilesOpen, option to have PoolSvc limit the number of open Input Files: default = 0 (No files are closed automatically) More...
|
|
StringProperty | m_writeCatalog {this,"WriteCatalog","xmlcatalog_file:PoolFileCatalog.xml"} |
| WriteCatalog, the file catalog to be used to register output files (also default input catalog): default = "" (use POOL default). More...
|
|
StringArrayProperty | m_readCatalog {this,"ReadCatalog",{},"List of catalog files to read from","OrderedSet<std::string>"} |
| ReadCatalog, the list of additional POOL input file catalogs to consult: default = empty vector. More...
|
|
BooleanProperty | m_useROOTIMT {this,"UseROOTImplicitMT",true} |
| Use ROOT Implicit MultiThreading, default = true. More...
|
|
BooleanProperty | m_useROOTMaxTree {this,"UseROOTIncreaseVMaxTree",false} |
| Increase virtual TTree size to avoid backreads in multithreading, default = false. More...
|
|
BooleanProperty | m_attemptCatalogPatch {this,"AttemptCatalogPatch",true} |
| AttemptCatalogPatch, option to create catalog: default = false. More...
|
|
IntegerProperty | m_retrialPeriod {this,"ConnectionRetrialPeriod",300} |
| ConnectionRetrialPeriod, retry period for CORAL Connection Service: default = 30 seconds. More...
|
|
IntegerProperty | m_retrialTimeOut {this,"ConnectionRetrialTimeOut",3600} |
| ConnectionRetrialTimeOut, the retrial time out for CORAL Connection Service: default = 300 seconds. More...
|
|
IntegerProperty | m_timeOut {this,"ConnectionTimeOut",5} |
| ConnectionTimeOut, the time out for CORAL Connection Service: default = 5 seconds. More...
|
|
BooleanProperty | m_connClean {this,"ConnectionCleanUp",false} |
| ConnectionCleanUp - whether to use CORAL connection management thread: default = false. More...
|
|
IntegerProperty | m_frontierComp {this,"FrontierCompression",5} |
| Frontier proprties, compression level and list of schemas to be refreshed: default = 5. More...
|
|
StringArrayProperty | m_frontierRefresh {this,"FrontierRefreshSchema",{}} |
|
BooleanProperty | m_sortReplicas {this,"SortReplicas",true} |
| Use DBReplicaSvc to sort database connections, default = true. More...
|
|
StringProperty | m_defaultROOTContainerType {this, "DefaultContainerType", "ROOTTREEINDEX"} |
| Default ROOT container type. More...
|
|
This class provides the interface to the LCG POOL persistency software.
Definition at line 36 of file PoolSvc.h.
◆ CallMutex
◆ ~PoolSvc()
◆ catalog()
◆ clearState()
void PoolSvc::clearState |
( |
| ) |
|
|
private |
Definition at line 240 of file PoolSvc.cxx.
244 delete persistencySvc;
247 for (
const auto& persistencyMutex :
m_pers_mut) {
248 delete persistencyMutex;
◆ commit()
Commit data for a given contextId and flush buffer.
- Parameters
-
contextId | [IN] poolStream to be commited. |
Definition at line 622 of file PoolSvc.cxx.
624 return(StatusCode::FAILURE);
631 return(StatusCode::FAILURE);
637 return(StatusCode::SUCCESS);
◆ commitAndHold()
Commit data for a given contextId and hold buffer.
- Parameters
-
contextId | [IN] poolStream to be commited. |
Definition at line 640 of file PoolSvc.cxx.
642 return(StatusCode::FAILURE);
649 return(StatusCode::FAILURE);
652 return(StatusCode::SUCCESS);
◆ connect()
Connect to a logical database unit; PersistencySvc is chosen according to transaction type (accessmode).
Definition at line 590 of file PoolSvc.cxx.
593 ATH_MSG_WARNING(
"connect: Using default output Stream instead of id = " << contextId);
598 ATH_MSG_WARNING(
"connect: Using default input Stream instead of id = " << contextId);
601 ATH_MSG_INFO(
"Connecting to InputStream for: " << contextId);
606 return(StatusCode::FAILURE);
612 return(StatusCode::SUCCESS);
616 return(StatusCode::FAILURE);
619 return(StatusCode::SUCCESS);
◆ context()
const coral::Context * PoolSvc::context |
( |
| ) |
const |
|
overridevirtual |
◆ createCatalog()
Definition at line 942 of file PoolSvc.cxx.
947 if (
catalog.compare(0, 8,
"apcfile:") == 0 ||
catalog.compare(0, 7,
"prfile:") == 0) {
948 std::string::size_type cpos =
catalog.find(
':');
963 <<
" in $ATLAS_POOLCOND_PATH and $DATAPATH");
975 ATH_MSG_ERROR(
"setWriteCatalog - caught exception: " <<
e.what());
◆ createCollection()
- Returns
- a pointer to a Pool Collection.
- Parameters
-
collectionType | [IN] string containing the collection type. |
connection | [IN] string containing the connection. |
collectionName | [IN] string containing the persistent name of the collection. |
contextId | [IN] id for PoolSvc persistency service to use for input. |
Definition at line 438 of file PoolSvc.cxx.
442 ATH_MSG_DEBUG(
"createCollection() type="<< collectionType <<
", connection=" << connection
443 <<
", name=" << collectionName <<
", contextID=" << contextId);
444 std::string collection(collectionName);
445 if (collectionType ==
"RootCollection") {
446 if (collectionName.find(
"PFN:") == std::string::npos
447 && collectionName.find(
"LFN:") == std::string::npos
448 && collectionName.find(
"FID:") == std::string::npos) {
449 collection =
"PFN:" + collectionName;
453 ATH_MSG_WARNING(
"createCollection: Using default input Stream instead of id = " << contextId);
458 bool insertFile =
false;
459 if (connection.compare(0, 4,
"PFN:") == 0) {
460 std::string fid, fileType;
464 ATH_MSG_INFO(
"File is not in Catalog! Attempt to open it anyway.");
468 if (collectionType ==
"ImplicitCollection") {
469 std::unique_ptr<pool::IDatabase> dbH =
getDbHandle(contextId, connection);
470 if (dbH ==
nullptr) {
471 ATH_MSG_INFO(
"Failed to get Session/DatabaseHandle to create POOL collection.");
478 std::map<unsigned int, unsigned int>::const_iterator maxFileIter =
m_contextMaxFile.find(contextId);
479 if (maxFileIter !=
m_contextMaxFile.end() && maxFileIter->second > 0 && !dbH->
fid().empty()) {
481 m_guidLists[contextId].remove(
guid);
482 m_guidLists[contextId].push_back(
guid);
483 while (m_guidLists[contextId].
size() > maxFileIter->second + 1) {
488 if (contH ==
nullptr) {
489 ATH_MSG_INFO(
"Failed to find container " << collection <<
" to create POOL collection.");
496 ATH_MSG_INFO(
"Failed to open container to check POOL collection - trying.");
505 if (collectionType ==
"RootCollection" &&
507 ATH_MSG_INFO(
"Writing RootCollection - do not pass session pointer");
513 std::string tree_error, rntuple_error;
517 tree_error =
e.what();
520 collDes.setType(
"RNTCollection");
524 std::unique_ptr<pool::IDatabase> dbH =
getDbHandle(contextId, connection);
525 if (dbH !=
nullptr) {
526 if (!dbH->
fid().empty()) {
531 rntuple_error =
e.what();
533 if( !collPtr )
throw std::runtime_error(
"Failed to open APR Collection as RootCollection or RNTCollection: "
534 + tree_error +
" | " + rntuple_error +
"PoolSvc::createCollection" );
537 std::unique_ptr<pool::IDatabase> dbH =
getDbHandle(contextId, connection);
538 if (dbH ==
nullptr) {
540 }
else if (dbH->
fid().empty()) {
541 ATH_MSG_INFO(
"Cannot retrieve the FID of an existing POOL database: '"
542 << connection <<
"' - FileCatalog will NOT be updated.");
549 if (
m_useROOTMaxTree && Gaudi::Concurrency::ConcurrencyFlags::numConcurrentEvents() > 1) {
◆ disconnect()
Disconnect PersistencySvc associated with a contextId.
- Parameters
-
contextId | [IN] poolStream to be disconnected. |
Definition at line 655 of file PoolSvc.cxx.
656 ATH_MSG_DEBUG(
"Disconnect request for contextId=" << contextId);
658 return(StatusCode::SUCCESS);
663 if (!
commit(contextId).isSuccess()) {
665 return(StatusCode::FAILURE);
670 ATH_MSG_ERROR(
"disconnect failed to diconnect PersistencySvc");
671 return(StatusCode::FAILURE);
674 return(StatusCode::SUCCESS);
◆ disconnectDb()
Disconnect single Database.
- Parameters
-
connection | [IN] connection string for Database to be disconnected. |
contextId | [IN] context id of database to be disconnected. |
Definition at line 677 of file PoolSvc.cxx.
679 return(StatusCode::SUCCESS);
682 std::unique_ptr<pool::IDatabase> dbH =
getDbHandle(contextId, connection);
683 if (dbH ==
nullptr) {
685 return(StatusCode::FAILURE);
687 std::map<unsigned int, unsigned int>::const_iterator maxFileIter =
m_contextMaxFile.find(contextId);
689 m_guidLists[contextId].remove(
Guid(dbH->
fid()));
692 return(StatusCode::SUCCESS);
◆ finalize()
StatusCode PoolSvc::finalize |
( |
| ) |
|
|
overridevirtual |
◆ getAttribute() [1/2]
StatusCode PoolSvc::getAttribute |
( |
const std::string & |
optName, |
|
|
std::string & |
data, |
|
|
long |
tech, |
|
|
const std::string & |
dbName, |
|
|
const std::string & |
contName = "" , |
|
|
unsigned int |
contextId = IPoolSvc::kInputStream |
|
) |
| const |
|
overridevirtual |
Get POOL attributes - db/file, container/collection.
Definition at line 736 of file PoolSvc.cxx.
744 if (dbH ==
nullptr) {
745 ATH_MSG_DEBUG(
"getAttribute: Failed to get Session/DatabaseHandle to get POOL property.");
746 return(StatusCode::FAILURE);
756 std::ostringstream oss;
757 if (contName.empty()) {
758 if (
data ==
"DbLonglong") {
760 }
else if (
data ==
"double") {
762 }
else if (
data ==
"string") {
767 ATH_MSG_INFO(
"Database (" << dbH->
pfn() <<
") attribute [" << optName <<
"]" <<
": " << oss.str());
770 if (contH ==
nullptr) {
771 ATH_MSG_DEBUG(
"Failed to get ContainerHandle to get POOL property.");
772 return(StatusCode::FAILURE);
774 if (
data ==
"DbLonglong") {
776 }
else if (
data ==
"double") {
781 ATH_MSG_INFO(
"Container attribute [" << contName <<
"." << optName <<
"]: " << oss.str());
784 return(StatusCode::SUCCESS);
◆ getAttribute() [2/2]
StatusCode PoolSvc::getAttribute |
( |
const std::string & |
optName, |
|
|
std::string & |
data, |
|
|
long |
tech, |
|
|
unsigned int |
contextId = IPoolSvc::kInputStream |
|
) |
| const |
|
overridevirtual |
Get POOL attributes - domain.
Definition at line 713 of file PoolSvc.cxx.
718 ATH_MSG_WARNING(
"getAttribute: Using default input Stream instead of id = " << contextId);
723 std::ostringstream oss;
724 if (
data ==
"DbLonglong") {
726 }
else if (
data ==
"double") {
733 return(StatusCode::SUCCESS);
◆ getContainerHandle()
Get Container handle.
Definition at line 1012 of file PoolSvc.cxx.
1014 if (dbH ==
nullptr) {
1021 if (contName.find(
"DataHeader") != std::string::npos) {
1022 contH = dbH->
containerHandle(contName.substr(0, contName.find(
"_p")));
1026 return(std::unique_ptr<pool::IContainer>(contH));
◆ getDbHandle()
std::unique_ptr< pool::IDatabase > PoolSvc::getDbHandle |
( |
unsigned int |
contextId, |
|
|
const std::string & |
dbName |
|
) |
| const |
|
private |
Get Database handle.
Definition at line 985 of file PoolSvc.cxx.
987 ATH_MSG_WARNING(
"getDbHandle: Using default input Stream instead of id = " << contextId);
1002 if (
dbName.compare(0, 4,
"PFN:") == 0) {
1004 }
else if (
dbName.compare(0, 4,
"LFN:") == 0) {
1006 }
else if (
dbName.compare(0, 4,
"FID:") == 0) {
◆ getFileSize()
long long int PoolSvc::getFileSize |
( |
const std::string & |
dbName, |
|
|
long |
tech, |
|
|
unsigned int |
contextId |
|
) |
| const |
|
overridevirtual |
Get POOL FileSize attribute for database without logging a message.
Definition at line 695 of file PoolSvc.cxx.
698 if (dbH ==
nullptr) {
699 ATH_MSG_DEBUG(
"getFileSize: Failed to get Session/DatabaseHandle to get POOL FileSize property.");
◆ getInputContext()
unsigned int PoolSvc::getInputContext |
( |
const std::string & |
label, |
|
|
unsigned int |
maxFile = 0 |
|
) |
| |
|
overridevirtual |
- Returns
- an Id for an input context (POOL persistency service) and create it if needed.
- Parameters
-
label | [IN] string label to name new context and allow sharing (returns existing contextId) |
maxFile | [IN] maximum number of open input files. |
Definition at line 360 of file PoolSvc.cxx.
362 if (!
label.empty()) {
368 return(contextIter->second);
378 if (!
label.empty()) {
◆ getInputContextMap()
const std::map< std::string, unsigned int > & PoolSvc::getInputContextMap |
( |
| ) |
const |
|
overridevirtual |
- Returns
- map of all labelled input contexts.
Definition at line 385 of file PoolSvc.cxx.
◆ getOutputContext()
unsigned int PoolSvc::getOutputContext |
( |
const std::string & |
label | ) |
|
|
overridevirtual |
- Returns
- an Id for an output context (POOL persistency service) and create it if needed.
- Parameters
-
label | [IN] string label to name new context and allow sharing (returns existing contextId) |
Definition at line 329 of file PoolSvc.cxx.
340 return(contextIter->second);
353 ATH_MSG_WARNING(
"Failed to set ROOT default container type via PersistencySvc for id " <<
id);
◆ getToken()
Token * PoolSvc::getToken |
( |
const std::string & |
connection, |
|
|
const std::string & |
collection, |
|
|
const unsigned long |
ientry |
|
) |
| const |
|
overridevirtual |
- Returns
- a token for a container entry.
- Parameters
-
connection | [IN] string containing the connection/file name. |
collection | [IN] string containing the persistent name of the collection. |
ientry | [IN] entry number for the token to be returned |
Definition at line 566 of file PoolSvc.cxx.
571 if (dbH ==
nullptr) {
578 if (contH ==
nullptr) {
583 for (
unsigned long ipos = 0; ipos < ientry; ipos++) {
584 delete thisToken; thisToken = tokenIter->
next();
586 delete tokenIter; tokenIter =
nullptr;
◆ initialize()
StatusCode PoolSvc::initialize |
( |
| ) |
|
|
overridevirtual |
Required of all Gaudi services:
Definition at line 58 of file PoolSvc.cxx.
68 if (
catalog.starts_with(
"xmlcatalog_file:")) {
88 return(StatusCode::FAILURE);
93 return(StatusCode::FAILURE);
95 coral::ConnectionService conSvcH;
96 coral::IConnectionServiceConfiguration& csConfig = conSvcH.configuration();
100 csConfig.enablePoolAutomaticCleanUp();
101 csConfig.setConnectionTimeOut(
m_timeOut);
103 csConfig.disablePoolAutomaticCleanUp();
104 csConfig.setConnectionTimeOut(0);
106 ATH_MSG_INFO(
"Set connectionsvc retry/timeout/IDLE timeout to "
112 <<
" seconds with connection cleanup "
113 << (csConfig.isPoolAutomaticCleanUpEnabled() ?
"enabled" :
"disabled"));
115 coral::IWebCacheControl& webCache = conSvcH.webCacheControl();
117 ATH_MSG_INFO(
"Frontier compression level set to " << webCache.compressionLevel());
121 if (replicasvc.retrieve().isSuccess()) {
122 csConfig.setReplicaSortingAlgorithm(*replicasvc);
123 ATH_MSG_INFO(
"Successfully setup replica sorting algorithm");
◆ io_finalize()
StatusCode PoolSvc::io_finalize |
( |
| ) |
|
|
overridevirtual |
Definition at line 265 of file PoolSvc.cxx.
274 return(StatusCode::SUCCESS);
◆ io_reinit()
StatusCode PoolSvc::io_reinit |
( |
| ) |
|
|
overridevirtual |
Definition at line 135 of file PoolSvc.cxx.
138 if (!iomgr.retrieve().isSuccess()) {
140 return(StatusCode::FAILURE);
142 if (!iomgr->io_hasitem(
this)) {
143 ATH_MSG_FATAL(
"IoComponentMgr does not know about myself !");
144 return(StatusCode::FAILURE);
147 for (std::size_t icat = 0,
imax = readcat.size(); icat <
imax; icat++) {
148 if (readcat[icat].
compare(0, 16,
"xmlcatalog_file:") == 0) {
149 std::string
fileName = readcat[icat].substr(16);
150 if (iomgr->io_contains(
this,
fileName)) {
151 if (!iomgr->io_retrieve(
this,
fileName).isSuccess()) {
153 return(StatusCode::FAILURE);
155 readcat[icat] =
"xmlcatalog_file:" +
fileName;
161 if (
m_writeCatalog.value().compare(0, 16,
"xmlcatalog_file:") == 0) {
163 if (iomgr->io_contains(
this,
fileName)) {
164 if (!iomgr->io_retrieve(
this,
fileName).isSuccess()) {
166 return(StatusCode::FAILURE);
◆ loadComponent()
void PoolSvc::loadComponent |
( |
const std::string & |
compName | ) |
|
|
overridevirtual |
- Returns
- void
- Parameters
-
compName | [IN] string name of the component to be loaded. |
Definition at line 393 of file PoolSvc.cxx.
◆ lookupBestPfn()
void PoolSvc::lookupBestPfn |
( |
const std::string & |
token, |
|
|
std::string & |
pfn, |
|
|
std::string & |
type |
|
) |
| const |
|
overridevirtual |
- Returns
- void
- Parameters
-
token | [IN] filename/token string to be translated |
pfn | [OUT] string PFN of database |
type | [OUT] string filetype of database |
Definition at line 405 of file PoolSvc.cxx.
407 if (token.compare(0, 4,
"PFN:") == 0) {
409 }
else if (token.compare(0, 4,
"LFN:") == 0) {
411 }
else if (token.compare(0, 4,
"FID:") == 0) {
412 dbID = token.substr(4);
◆ patchCatalog()
◆ poolCondPath()
std::string PoolSvc::poolCondPath |
( |
const std::string & |
leaf | ) |
|
|
private |
Resolve a file using ATLAS_POOLCOND_PATH.
Definition at line 1029 of file PoolSvc.cxx.
1032 const char* cpath =
std::getenv(
"ATLAS_POOLCOND_PATH");
1033 if (cpath && strcmp(cpath,
"") != 0) {
1034 const std::string testpath = std::string(cpath) +
"/" + leaf;
1038 if (FILE*
fp = std::fopen(testpath.c_str(),
"r")) {
◆ registerForWrite()
- Returns
- a token to a Data Object written to Pool.
- Parameters
-
placement | [IN] pointer to the placement hint. |
obj | [IN] pointer to the Data Object to be written to Pool. |
classDesc | [IN] pointer to the Seal class description for the Data Object. |
Definition at line 277 of file PoolSvc.cxx.
281 const std::string& auxString = placement->
auxString();
282 if (!auxString.empty()) {
283 if (auxString.compare(0, 6,
"[CTXT=") == 0) {
284 ::sscanf(auxString.c_str(),
"[CTXT=%08X]", &contextId);
285 }
else if (auxString.compare(0, 8,
"[CLABEL=") == 0) {
289 ATH_MSG_WARNING(
"registerForWrite: Using default output Stream instead of id = " << contextId);
295 if (token ==
nullptr) {
◆ renamePfn()
void PoolSvc::renamePfn |
( |
const std::string & |
pf, |
|
|
const std::string & |
newpf |
|
) |
| |
|
overridevirtual |
- Returns
- void
- Parameters
-
pf | [IN] filename to be renamed |
newpf | [IN] new filename |
Definition at line 423 of file PoolSvc.cxx.
424 std::string dbID,
type;
◆ setAttribute() [1/2]
StatusCode PoolSvc::setAttribute |
( |
const std::string & |
optName, |
|
|
const std::string & |
data, |
|
|
long |
tech, |
|
|
const std::string & |
dbName, |
|
|
const std::string & |
contName = "" , |
|
|
unsigned int |
contextId = IPoolSvc::kOutputStream |
|
) |
| const |
|
overridevirtual |
Set POOL attributes - db/file, container/collection.
Definition at line 811 of file PoolSvc.cxx.
818 ATH_MSG_WARNING(
"setAttribute: Using default output Stream instead of id = " << contextId);
823 if (dbH ==
nullptr) {
824 ATH_MSG_DEBUG(
"Failed to get Session/DatabaseHandle to set POOL property.");
825 return(StatusCode::FAILURE);
835 bool retError =
false;
837 bool hasTTreeName = (contName.length() > 6 && contName.compare(0, 6,
"TTree=") == 0);
839 objName = hasTTreeName ? contName.substr(6) : contName;
842 }
else if(
data[
data.size() - 1] ==
'L' ) {
849 return(StatusCode::FAILURE);
853 if (contH ==
nullptr) {
854 ATH_MSG_DEBUG(
"Failed to get ContainerHandle to set POOL property.");
855 return(StatusCode::FAILURE);
857 if (
auto p = contName.find(
'(');
p != std::string::npos) {
858 objName = contName.substr(
p + 1);
859 objName.erase(objName.find(
')'));
860 }
else if (
auto p = contName.find(
"::");
p != std::string::npos) {
861 objName = contName.substr(
p + 2);
862 }
else if (
auto p = contName.find(
'_');
p != std::string::npos) {
863 objName = contName.substr(
p + 1);
864 objName.erase(objName.find(
'/'));
866 std::string::size_type off = 0;
867 while ((off = objName.find_first_of(
"<>/")) != std::string::npos) {
876 ATH_MSG_DEBUG(
"Failed to set POOL container property, " << optName <<
" for " << contName <<
" : " << objName <<
" to " <<
data);
877 return(StatusCode::FAILURE);
880 return(StatusCode::SUCCESS);
◆ setAttribute() [2/2]
Set POOL attributes - domain.
Definition at line 787 of file PoolSvc.cxx.
792 ATH_MSG_WARNING(
"setAttribute: Using default output Stream instead of id = " << contextId);
800 return(StatusCode::FAILURE);
805 return(StatusCode::FAILURE);
808 return(StatusCode::SUCCESS);
◆ setFrontierCache()
StatusCode PoolSvc::setFrontierCache |
( |
const std::string & |
conn | ) |
|
|
overridevirtual |
Setup Frontier cache for given logical or physical connection name.
Definition at line 883 of file PoolSvc.cxx.
888 std::vector<std::string> physcons;
889 if (
conn.find(
':') == std::string::npos) {
892 const std::string lookSvcStr(
"CORAL/Services/XMLLookupService");
893 coral::IHandle<coral::ILookupService> lookSvcH =
m_context->query<coral::ILookupService>();
894 if (!lookSvcH.isValid()) {
896 lookSvcH =
m_context->query<coral::ILookupService>();
898 if (!lookSvcH.isValid()) {
900 return(StatusCode::FAILURE);
902 coral::IDatabaseServiceSet* dbset = lookSvcH->lookup(
conn, coral::ReadOnly);
903 if (dbset !=
nullptr) {
904 for (
int irep = 0, nrep = dbset->numberOfReplicas(); irep < nrep; ++irep) {
905 const std::string pcon = dbset->replica(irep).connectionString();
906 if (pcon.compare(0, 9,
"frontier:") == 0) {
907 physcons.push_back(std::move(pcon));
910 delete dbset; dbset =
nullptr;
914 }
else if (
conn.compare(0, 9,
"frontier:") == 0) {
915 physcons.push_back(
conn);
918 if (physcons.size() == 0) {
919 return(StatusCode::SUCCESS);
921 coral::ConnectionService conSvcH;
925 coral::IWebCacheControl& webCache = conSvcH.webCacheControl();
926 for (
const auto& physcon : physcons) {
928 if (
std::find(refreshList.begin(), refreshList.end(), physcon) == refreshList.end()
929 &&
std::find(refreshList.begin(), refreshList.end(),
conn) == refreshList.end()) {
932 webCache.refreshTable(physcon,
"DUMMYTABLE");
935 webCache.refreshSchemaInfo(physcon);
937 ATH_MSG_DEBUG(
"Cache flag for connection " << physcon <<
" set to " << webCache.webCacheInfo(physcon).isSchemaInfoCached());
939 return(StatusCode::SUCCESS);
◆ setObjPtr()
void PoolSvc::setObjPtr |
( |
void *& |
obj, |
|
|
const Token * |
token |
|
) |
| |
|
overridevirtual |
- Returns
- void
- Parameters
-
obj | [OUT] pointer to the Data Object. |
token | [IN] token of the Data Object for which a Pool Ref is filled. |
Definition at line 301 of file PoolSvc.cxx.
303 const std::string& auxString = token->
auxString();
304 if (!auxString.empty()) {
305 if (auxString.compare(0, 6,
"[CTXT=") == 0) {
306 ::sscanf(auxString.c_str(),
"[CTXT=%08X]", &contextId);
307 }
else if (auxString.compare(0, 8,
"[CLABEL=") == 0) {
311 ATH_MSG_WARNING(
"setObjPtr: Using default input Stream instead of id = " << contextId);
315 ATH_MSG_VERBOSE(
"setObjPtr: token=" << token->
toString() <<
", auxString=" << auxString <<
", contextID=" << contextId);
319 std::map<unsigned int, unsigned int>::const_iterator maxFileIter =
m_contextMaxFile.find(contextId);
321 m_guidLists[contextId].remove(token->
dbID());
322 m_guidLists[contextId].push_back(token->
dbID());
323 while (m_guidLists[contextId].
size() > maxFileIter->second) {
◆ setShareMode()
void PoolSvc::setShareMode |
( |
bool |
shareCat | ) |
|
|
overridevirtual |
- Returns
- void
- Parameters
-
shareCat | [IN] bool to share the file catalog. |
Definition at line 397 of file PoolSvc.cxx.
◆ setupPersistencySvc()
StatusCode PoolSvc::setupPersistencySvc |
( |
| ) |
|
|
private |
Definition at line 176 of file PoolSvc.cxx.
184 return(StatusCode::FAILURE);
190 ATH_MSG_FATAL(
"Failed to enable thread safety in ROOT via PersistencySvc.");
191 return(StatusCode::FAILURE);
196 return(StatusCode::FAILURE);
208 ATH_MSG_FATAL(
"Failed to set ROOT default container type via PersistencySvc.");
209 return(StatusCode::FAILURE);
212 return(StatusCode::SUCCESS);
◆ start()
StatusCode PoolSvc::start |
( |
| ) |
|
|
overridevirtual |
Required of all Gaudi services:
Definition at line 215 of file PoolSvc.cxx.
219 ATH_MSG_FATAL(
"Failed to enable implicit multithreading in ROOT via PersistencySvc.");
220 return(StatusCode::FAILURE);
224 return(StatusCode::SUCCESS);
◆ stop()
StatusCode PoolSvc::stop |
( |
| ) |
|
|
overridevirtual |
Definition at line 227 of file PoolSvc.cxx.
229 bool retError =
false;
236 return(retError ? StatusCode::FAILURE : StatusCode::SUCCESS);
◆ ATLAS_THREAD_SAFE
std::map<unsigned int, std::list<Guid> > m_guidLists PoolSvc::ATLAS_THREAD_SAFE |
|
mutableprivate |
◆ m_attemptCatalogPatch
BooleanProperty PoolSvc::m_attemptCatalogPatch {this,"AttemptCatalogPatch",true} |
|
private |
AttemptCatalogPatch, option to create catalog: default = false.
Definition at line 249 of file PoolSvc.h.
◆ m_catalog
◆ m_connClean
BooleanProperty PoolSvc::m_connClean {this,"ConnectionCleanUp",false} |
|
private |
ConnectionCleanUp - whether to use CORAL connection management thread: default = false.
Definition at line 257 of file PoolSvc.h.
◆ m_context
coral::Context* PoolSvc::m_context {nullptr} |
|
private |
◆ m_contextMaxFile
std::map<unsigned int, unsigned int> PoolSvc::m_contextMaxFile |
|
private |
◆ m_dbAgeLimit
IntegerProperty PoolSvc::m_dbAgeLimit {this,"MaxFilesOpen",0} |
|
private |
MaxFilesOpen, option to have PoolSvc limit the number of open Input Files: default = 0 (No files are closed automatically)
Definition at line 237 of file PoolSvc.h.
◆ m_defaultROOTContainerType
StringProperty PoolSvc::m_defaultROOTContainerType {this, "DefaultContainerType", "ROOTTREEINDEX"} |
|
private |
◆ m_fileOpen
StringProperty PoolSvc::m_fileOpen {this,"FileOpen","overwrite"} |
|
private |
FileOpen, the open mode for the file ("append" or "overwrite").
Definition at line 234 of file PoolSvc.h.
◆ m_frontierComp
IntegerProperty PoolSvc::m_frontierComp {this,"FrontierCompression",5} |
|
private |
Frontier proprties, compression level and list of schemas to be refreshed: default = 5.
Definition at line 259 of file PoolSvc.h.
◆ m_frontierRefresh
StringArrayProperty PoolSvc::m_frontierRefresh {this,"FrontierRefreshSchema",{}} |
|
private |
◆ m_inputContextLabel
std::map<std::string, unsigned int> PoolSvc::m_inputContextLabel |
|
private |
◆ m_mainOutputLabel
std::string PoolSvc::m_mainOutputLabel {} |
|
private |
◆ m_outputContextLabel
std::map<std::string, unsigned int> PoolSvc::m_outputContextLabel |
|
private |
◆ m_pers_mut
◆ m_persistencySvcVec
◆ m_pool_mut
◆ m_readCatalog
StringArrayProperty PoolSvc::m_readCatalog {this,"ReadCatalog",{},"List of catalog files to read from","OrderedSet<std::string>"} |
|
private |
ReadCatalog, the list of additional POOL input file catalogs to consult: default = empty vector.
Definition at line 242 of file PoolSvc.h.
◆ m_retrialPeriod
IntegerProperty PoolSvc::m_retrialPeriod {this,"ConnectionRetrialPeriod",300} |
|
private |
ConnectionRetrialPeriod, retry period for CORAL Connection Service: default = 30 seconds.
Definition at line 251 of file PoolSvc.h.
◆ m_retrialTimeOut
IntegerProperty PoolSvc::m_retrialTimeOut {this,"ConnectionRetrialTimeOut",3600} |
|
private |
ConnectionRetrialTimeOut, the retrial time out for CORAL Connection Service: default = 300 seconds.
Definition at line 253 of file PoolSvc.h.
◆ m_shareCat
bool PoolSvc::m_shareCat {false} |
|
private |
◆ m_sortReplicas
BooleanProperty PoolSvc::m_sortReplicas {this,"SortReplicas",true} |
|
private |
◆ m_timeOut
IntegerProperty PoolSvc::m_timeOut {this,"ConnectionTimeOut",5} |
|
private |
ConnectionTimeOut, the time out for CORAL Connection Service: default = 5 seconds.
Definition at line 255 of file PoolSvc.h.
◆ m_useROOTIMT
BooleanProperty PoolSvc::m_useROOTIMT {this,"UseROOTImplicitMT",true} |
|
private |
Use ROOT Implicit MultiThreading, default = true.
Definition at line 244 of file PoolSvc.h.
◆ m_useROOTMaxTree
BooleanProperty PoolSvc::m_useROOTMaxTree {this,"UseROOTIncreaseVMaxTree",false} |
|
private |
Increase virtual TTree size to avoid backreads in multithreading, default = false.
Definition at line 246 of file PoolSvc.h.
◆ m_writeCatalog
StringProperty PoolSvc::m_writeCatalog {this,"WriteCatalog","xmlcatalog_file:PoolFileCatalog.xml"} |
|
private |
WriteCatalog, the file catalog to be used to register output files (also default input catalog): default = "" (use POOL default).
Definition at line 240 of file PoolSvc.h.
The documentation for this class was generated from the following files:
IntegerProperty m_timeOut
ConnectionTimeOut, the time out for CORAL Connection Service: default = 5 seconds.
char data[hepevt_bytes_allocation_ATLAS]
static CollectionFactory * get()
Retrieves the collection factory singleton.
static const Guid & null()
NULL-Guid: static class method.
def finalize(self)
_info( "content of StoreGate..." ) self.sg.dump()
std::pair< int, int > compare(const AmgSymMatrix(N) &m1, const AmgSymMatrix(N) &m2, double precision=1e-9, bool relative=false)
compare two matrices, returns the indices of the first element that fails the condition,...
std::map< unsigned int, std::list< Guid > > m_guidLists ATLAS_THREAD_SAFE
void lookupFileByPFN(const std::string &pfn, std::string &fid, std::string &tech) const
Get FID and filetype for a given PFN.
std::unique_ptr< pool::IDatabase > getDbHandle(unsigned int contextId, const std::string &dbName) const
Get Database handle.
static DbType getType(const std::string &name)
Access known storage type object by name.
IntegerProperty m_retrialTimeOut
ConnectionRetrialTimeOut, the retrial time out for CORAL Connection Service: default = 300 seconds.
const std::string & containerName() const
Access container name.
bool setWriteModeForNonExisting(Mode mode)
Sets the opening mode when a non existing database is opened for writing Acceptable values are RAISE_...
std::string find(const std::string &s)
return a remapped string
StringProperty m_fileOpen
FileOpen, the open mode for the file ("append" or "overwrite").
IntegerProperty m_frontierComp
Frontier proprties, compression level and list of schemas to be refreshed: default = 5.
void registerPFN(const std::string &pfn, const std::string &ftype, std::string &fid)
Register PFN, assign new FID if not given.
std::map< std::string, unsigned int > m_inputContextLabel
virtual StatusCode connect(pool::ITransaction::Type type, unsigned int contextId=IPoolSvc::kInputStream) override
Connect to a logical database unit; PersistencySvc is chosen according to transaction type (accessmod...
virtual StatusCode commit(unsigned int contextId=IPoolSvc::kInputStream) const override
Commit data for a given contextId and flush buffer.
BooleanProperty m_attemptCatalogPatch
AttemptCatalogPatch, option to create catalog: default = false.
virtual const ITechnologySpecificAttributes & technologySpecificAttributes() const =0
Returns the object holding the technology specific attributes for a given technology domain.
virtual void connectForRead()=0
Connects explicitly to the database for read operations.
const std::string & auxString() const
Access auxiliary string.
virtual const pool::IFileCatalog * catalog() const override
void renamePFN(const std::string &pfn, const std::string &newpfn)
Rename PFN.
virtual StatusCode disconnect(unsigned int contextId=IPoolSvc::kInputStream) const override
Disconnect PersistencySvc associated with a contextId.
const Guid & dbID() const
Access database identifier.
StringArrayProperty m_frontierRefresh
virtual bool disconnectAll()=0
Explicitly disconnects all the databases.
virtual const std::string & pfn()=0
Returns the physical file name of this database.
const std::string toString() const
Automatic conversion to string representation.
void commit()
Save catalog to file.
bool setAttribute(const std::string &attributeName, const T &atttibuteValue, const std::string &option="")
Templated method to set an attribute.
coral::Context * m_context
#define ATH_MSG_VERBOSE(x)
virtual StatusCode setAttribute(const std::string &optName, const std::string &data, long tech, unsigned int contextId=IPoolSvc::kOutputStream) const override
Set POOL attributes - domain.
virtual ITransaction & transaction()=0
Returns the transaction object.
virtual const std::string & fid()=0
Returns the file identifier of this database.
StringProperty m_writeCatalog
WriteCatalog, the file catalog to be used to register output files (also default input catalog): defa...
virtual OpenMode openMode() const =0
Returns the opening mode. It can be used to check whether the database is connected.
virtual Token * next()=0
Returns the pointer to next token.
BooleanProperty m_useROOTMaxTree
Increase virtual TTree size to avoid backreads in multithreading, default = false.
Type
Transaction type enumeration.
virtual const ITechnologySpecificAttributes & technologySpecificAttributes() const =0
Returns the object holding the technology specific attributes.
void lookupFileByLFN(const std::string &lfn, std::string &fid) const
Return the status of a LFName.
This class provides a token that identifies in a unique way objects on the persistent storage.
void setLevel(MsgLevel l)
std::recursive_mutex CallMutex
Token & fromString(const std::string &from)
Build from the string representation of a token.
std::vector< CallMutex * > m_pers_mut
std::string m_mainOutputLabel
virtual ITokenIterator * tokens()=0
Starts an iteration over the tokens in the container.
std::string toString(const Translation3D &translation, int precision=4)
GeoPrimitvesToStringConverter.
virtual unsigned int getOutputContext(const std::string &label) override
virtual bool commitAndHold()=0
Commits the holds transaction.
virtual void connectForWrite()=0
Connects explicitly to the database for write/update operations.
std::unique_ptr< pool::IContainer > getContainerHandle(pool::IDatabase *dbH, const std::string &contName) const
Get Container handle.
virtual const ITechnologySpecificAttributes & technologySpecificAttributes(long technology) const =0
Returns the object holding the technology specific attributes for a given technology domain.
void start()
redirect to init() for Gaudi FC
virtual bool start(Type type=READ)=0
Starts a new transaction. Returns the success of the operation.
bool setWriteModeForExisting(Mode mode)
Sets the opening mode when an existing database is opened for writing.
virtual std::unique_ptr< IDatabase > databaseHandle(const std::string &dbName, DatabaseSpecification::NameType dbNameType)=0
Returns a pointer to a database object. The user acquires ownership of that object.
virtual StatusCode disconnectDb(const std::string &connection, unsigned int contextId=IPoolSvc::kInputStream) const override
Disconnect single Database.
void setWriteCatalog(const std::string &connect)
Access to the (first) writable file catalog.
virtual bool setTechnology(long technology)=0
Sets the technology identifier for this database.
virtual void disconnect()=0
Disconnects from the database.
const std::string & auxString() const
Access auxiliary string.
void removeCatalog(const std::string &connect)
Add new catalog identified by reference to the existing ones.
bool allGood
Loop over the SDOs & Digits.
BooleanProperty m_sortReplicas
Use DBReplicaSvc to sort database connections, default = true.
StringProperty m_defaultROOTContainerType
Default ROOT container type.
pool::IFileCatalog * m_catalog
std::map< unsigned int, unsigned int > m_contextMaxFile
StringArrayProperty m_readCatalog
ReadCatalog, the list of additional POOL input file catalogs to consult: default = empty vector.
IntegerProperty m_dbAgeLimit
MaxFilesOpen, option to have PoolSvc limit the number of open Input Files: default = 0 (No files are ...
virtual const std::string toString() const
Retrieve the string representation of the token.
void patchCatalog(const std::string &pfn, pool::IDatabase &dbH) const
virtual bool commit()=0
Commits the transaction.
std::string poolCondPath(const std::string &leaf)
Resolve a file using ATLAS_POOLCOND_PATH.
T attribute(const std::string &attributeName, const std::string &option="")
Templated method to retrieve an attribute.
void getFirstPFN(const std::string &fid, std::string &pfn, std::string &tech) const
Get the first PFN + filetype for the given FID.
This class provides a encapsulation of a GUID/UUID/CLSID/IID data structure (128 bit number).
std::string getenv(const std::string &variableName)
get an environment variable
#define ATH_MSG_WARNING(x)
static std::string find_file(const std::string &logical_file_name, const std::string &search_path)
std::vector< pool::IPersistencySvc * > m_persistencySvcVec
StatusCode setupPersistencySvc()
virtual ISession & session()=0
Returns the underlying global session.
virtual IContainer * containerHandle(const std::string &name)=0
Returns a pointer to a container object. The user acquires ownership of that object.
IntegerProperty m_retrialPeriod
ConnectionRetrialPeriod, retry period for CORAL Connection Service: default = 30 seconds.
int atoi(std::string_view str)
Helper functions to unpack numbers decoded in string into integers and doubles The strings are requir...
bool isNumber(const std::string &s)
pool::IFileCatalog * createCatalog()
static std::unique_ptr< IPersistencySvc > create(IFileCatalog &catalog)
Factory for PersistencySvc.
virtual unsigned int getInputContext(const std::string &label, unsigned int maxFile=0) override
BooleanProperty m_connClean
ConnectionCleanUp - whether to use CORAL connection management thread: default = false.
void addReadCatalog(const std::string &connect)
Add new catalog identified by name to the existing ones.
virtual Type type() const =0
Returns the transaction type.
BooleanProperty m_useROOTIMT
Use ROOT Implicit MultiThreading, default = true.
virtual bool isActive() const =0
Checks if the transaction is active.
std::map< std::string, unsigned int > m_outputContextLabel