From 275e8d0c83b1878e83bc9bc48f1a1e1ecb76c80b Mon Sep 17 00:00:00 2001 From: Vakho Tsulaia <vakhtang.tsulaia@cern.ch> Date: Tue, 3 Nov 2020 22:09:44 +0100 Subject: [PATCH] Minor reorganization of the internal cache of RDBAccessSvc --- Database/RDBAccessSvc/src/RDBAccessSvc.cxx | 16 +++++----------- Database/RDBAccessSvc/src/RDBAccessSvc.h | 2 +- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Database/RDBAccessSvc/src/RDBAccessSvc.cxx b/Database/RDBAccessSvc/src/RDBAccessSvc.cxx index 18c2ca9f0ce..4378e13c897 100755 --- a/Database/RDBAccessSvc/src/RDBAccessSvc.cxx +++ b/Database/RDBAccessSvc/src/RDBAccessSvc.cxx @@ -53,7 +53,7 @@ bool RDBAccessSvc::connect(const std::string& connName) // 3. Recordset by connection m_sessions[connName] = 0; m_openConnections[connName] = 0; - m_recordsetptrs[connName] = new RecordsetPtrMap(); + m_recordsetptrs.emplace(connName,RecordsetPtrMap()); } // Use existing Connection Proxy if available @@ -166,9 +166,9 @@ IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node return IRDBRecordset_ptr(new RDBRecordset(this)); } - RecordsetPtrMap* recordsets = m_recordsetptrs[connName]; - RecordsetPtrMap::const_iterator it = recordsets->find(key); - if(it != recordsets->end()) { + RecordsetPtrMap& recordsets = m_recordsetptrs[connName]; + RecordsetPtrMap::const_iterator it = recordsets.find(key); + if(it != recordsets.end()) { ATH_MSG_DEBUG("Reusing existing recordset"); disconnect(connName); return it->second; @@ -208,7 +208,7 @@ IRDBRecordset_ptr RDBAccessSvc::getRecordsetPtr(const std::string& node ATH_MSG_ERROR("Exception caught(...)"); } - (*recordsets)[key] = rec; + recordsets.emplace(key,rec); disconnect(connName); return rec; } @@ -501,12 +501,6 @@ StatusCode RDBAccessSvc::initialize() StatusCode RDBAccessSvc::finalize() { - // Clean up all remaining recordsets - RecordsetPtrsByConn::iterator first_ptr_map = m_recordsetptrs.begin(); - RecordsetPtrsByConn::iterator last_ptr_map = m_recordsetptrs.end(); - for(;first_ptr_map!=last_ptr_map;++first_ptr_map) { - delete first_ptr_map->second; - } m_recordsetptrs.clear(); // Clear global tag lookup table diff --git a/Database/RDBAccessSvc/src/RDBAccessSvc.h b/Database/RDBAccessSvc/src/RDBAccessSvc.h index 368134440d1..31cea533b75 100755 --- a/Database/RDBAccessSvc/src/RDBAccessSvc.h +++ b/Database/RDBAccessSvc/src/RDBAccessSvc.h @@ -38,7 +38,7 @@ template <class TYPE> class SvcFactory; typedef std::map<std::string, IRDBRecordset_ptr> RecordsetPtrMap; // Pointers to recordset maps by connection name -typedef std::map<std::string, RecordsetPtrMap*> RecordsetPtrsByConn; +typedef std::map<std::string, RecordsetPtrMap> RecordsetPtrsByConn; // Session map typedef std::map<std::string, coral::ISessionProxy*> SessionMap; -- GitLab