diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp index 6d6f01a3e88d7ea271cb0fa54a7e3e7aee03215f..a2d6c3cd0f81a5bd51566f0c8ab0c463dfdf67c3 100644 --- a/scheduler/OStoreDB/OStoreDB.cpp +++ b/scheduler/OStoreDB/OStoreDB.cpp @@ -19,7 +19,6 @@ #include "OStoreDB.hpp" #include "MemQueues.hpp" #include "common/dataStructures/SecurityIdentity.hpp" -#include "objectstore/RootEntry.hpp" #include "objectstore/ArchiveQueue.hpp" #include "objectstore/RetrieveQueue.hpp" #include "objectstore/DriveRegister.hpp" @@ -506,16 +505,27 @@ OStoreDB::ArchiveToFileRequestCancelation::~ArchiveToFileRequestCancelation() { } } +//------------------------------------------------------------------------------ +// OStoreDB::getArchiveQueues() +//------------------------------------------------------------------------------ +std::list<objectstore::RootEntry::ArchiveQueueDump> OStoreDB::getArchiveQueues() const { + objectstore::RootEntry re(m_objectStore); + objectstore::ScopedSharedLock rel(re); + re.fetch(); + auto tpl = re.dumpArchiveQueues(); + rel.release(); + + return tpl; +} + //------------------------------------------------------------------------------ // OStoreDB::getArchiveJobs() //------------------------------------------------------------------------------ std::list<cta::common::dataStructures::ArchiveJob> OStoreDB::getArchiveJobs(const std::string& tapePoolName) const { - objectstore::RootEntry re(m_objectStore); - objectstore::ScopedSharedLock rel(re); - re.fetch(); - auto tpl = re.dumpArchiveQueues(); - rel.release(); + + auto tpl = getArchiveQueues(); + for (auto & tpp:tpl) { if (tpp.tapePool != tapePoolName) continue; std::list<cta::common::dataStructures::ArchiveJob> ret; @@ -566,11 +576,9 @@ std::list<cta::common::dataStructures::ArchiveJob> //------------------------------------------------------------------------------ std::map<std::string, std::list<common::dataStructures::ArchiveJob> > OStoreDB::getArchiveJobs() const { - objectstore::RootEntry re(m_objectStore); - objectstore::ScopedSharedLock rel(re); - re.fetch(); - auto tpl = re.dumpArchiveQueues(); - rel.release(); + + auto tpl = getArchiveQueues(); + std::map<std::string, std::list<common::dataStructures::ArchiveJob> > ret; for (auto & tpp:tpl) { objectstore::ArchiveQueue osaq(tpp.address, m_objectStore); diff --git a/scheduler/OStoreDB/OStoreDB.hpp b/scheduler/OStoreDB/OStoreDB.hpp index 14b71be42b8357a64a5e22409b8212130d2c333e..965f8c84bf73a0bb08eac9fbb9d6ac84bf1896a9 100644 --- a/scheduler/OStoreDB/OStoreDB.hpp +++ b/scheduler/OStoreDB/OStoreDB.hpp @@ -26,6 +26,7 @@ #include "objectstore/ArchiveRequest.hpp" #include "objectstore/DriveRegister.hpp" #include "objectstore/RetrieveRequest.hpp" +#include "objectstore/RootEntry.hpp" #include "objectstore/SchedulerGlobalLock.hpp" #include "catalogue/Catalogue.hpp" #include "common/log/Logger.hpp" @@ -280,6 +281,9 @@ public: * information. */ private: + /** Returns the current list of archive queues */ + std::list<objectstore::RootEntry::ArchiveQueueDump> getArchiveQueues() const; + /** Collection of smaller scale parts of reportDriveStatus */ struct ReportDriveStatusInputs { common::dataStructures::DriveStatus status;