From 4e0dcb020fd236ea09a619aa8dd3a9b31cbc0762 Mon Sep 17 00:00:00 2001 From: Michael Davis <michael.davis@cern.ch> Date: Mon, 10 Sep 2018 10:39:14 +0200 Subject: [PATCH] [os-generic-queues] Renames ArchiveQueue to ArchiveQueueToTransfer --- objectstore/AlgorithmsTest.cpp | 8 ++++---- objectstore/ArchiveQueue.hpp | 5 +++++ objectstore/ArchiveQueueAlgorithms.hpp | 4 ++-- ...ms.cpp => ArchiveQueueToTransferAlgorithms.cpp} | 14 +++++++------- objectstore/CMakeLists.txt | 4 ++-- objectstore/GarbageCollector.cpp | 2 +- objectstore/ObjectOps.hpp | 5 ++++- scheduler/OStoreDB/OStoreDB.cpp | 4 ++-- 8 files changed, 27 insertions(+), 19 deletions(-) rename objectstore/{ArchiveQueueAlgorithms.cpp => ArchiveQueueToTransferAlgorithms.cpp} (81%) diff --git a/objectstore/AlgorithmsTest.cpp b/objectstore/AlgorithmsTest.cpp index 5755b388dd..994ba2ced8 100644 --- a/objectstore/AlgorithmsTest.cpp +++ b/objectstore/AlgorithmsTest.cpp @@ -116,7 +116,7 @@ TEST(ObjectStore, ArchiveQueueAlgorithms) { rel.release(); agent.initialize(); agent.insertAndRegisterSelf(lc); - ContainerAlgorithms<ArchiveQueue,ArchiveQueue>::InsertedElement::list requests; + ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer>::InsertedElement::list requests; std::list<std::unique_ptr<cta::objectstore::ArchiveRequest>> archiveRequests; for (size_t i=0; i<10; i++) { std::string arAddr = agentRef.nextId("ArchiveRequest"); @@ -135,7 +135,7 @@ TEST(ObjectStore, ArchiveQueueAlgorithms) { aFile.fileSize = 667; aFile.storageClass = "sc"; archiveRequests.emplace_back(new cta::objectstore::ArchiveRequest(arAddr, be)); - requests.emplace_back(ContainerAlgorithms<ArchiveQueue,ArchiveQueue>::InsertedElement{archiveRequests.back().get(), 1, aFile, mp, + requests.emplace_back(ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer>::InsertedElement{archiveRequests.back().get(), 1, aFile, mp, cta::nullopt}); auto & ar=*requests.back().archiveRequest; auto copyNb = requests.back().copyNb; @@ -150,10 +150,10 @@ TEST(ObjectStore, ArchiveQueueAlgorithms) { ar.setEntryLog(cta::common::dataStructures::EntryLog("user0", "host0", time(nullptr))); ar.insert(); } - ContainerAlgorithms<ArchiveQueue,ArchiveQueue> archiveAlgos(be, agentRef); + ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> archiveAlgos(be, agentRef); archiveAlgos.referenceAndSwitchOwnership("Tapepool", QueueType::JobsToTransfer, requests, lc); // Now get the requests back - ContainerTraits<ArchiveQueue,ArchiveQueue>::PopCriteria popCriteria; + ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PopCriteria popCriteria; popCriteria.bytes = std::numeric_limits<decltype(popCriteria.bytes)>::max(); popCriteria.files = 100; auto poppedJobs = archiveAlgos.popNextBatch("Tapepool", QueueType::JobsToTransfer, popCriteria, lc); diff --git a/objectstore/ArchiveQueue.hpp b/objectstore/ArchiveQueue.hpp index 39496420d3..316614e8ba 100644 --- a/objectstore/ArchiveQueue.hpp +++ b/objectstore/ArchiveQueue.hpp @@ -138,6 +138,11 @@ public: static const uint64_t c_maxShardSize = 25000; }; +class ArchiveQueueToTransfer: public ArchiveQueue { +public: + template<typename...Ts> ArchiveQueueToTransfer(Ts&...args): ArchiveQueue(args...) {} +}; + class ArchiveQueueToReport: public ArchiveQueue { public: template<typename...Ts> ArchiveQueueToReport(Ts&...args): ArchiveQueue(args...) {} diff --git a/objectstore/ArchiveQueueAlgorithms.hpp b/objectstore/ArchiveQueueAlgorithms.hpp index bf73ebdd5f..8000d515d7 100644 --- a/objectstore/ArchiveQueueAlgorithms.hpp +++ b/objectstore/ArchiveQueueAlgorithms.hpp @@ -437,7 +437,7 @@ getElementSummary(const PoppedElement& poppedElement) -> PoppedElementsSummary { // ArchiveQueue full specialisations for ContainerTraits. template<> -struct ContainerTraits<ArchiveQueue,ArchiveQueue>::PopCriteria { +struct ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PopCriteria { uint64_t files; uint64_t bytes; PopCriteria(uint64_t f = 0, uint64_t b = 0) : files(f), bytes(b) {} @@ -450,7 +450,7 @@ struct ContainerTraits<ArchiveQueue,ArchiveQueue>::PopCriteria { }; template<> -struct ContainerTraits<ArchiveQueue,ArchiveQueue>::PoppedElementsSummary { +struct ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PoppedElementsSummary { uint64_t files; uint64_t bytes; PoppedElementsSummary(uint64_t f = 0, uint64_t b = 0) : files(f), bytes(b) {} diff --git a/objectstore/ArchiveQueueAlgorithms.cpp b/objectstore/ArchiveQueueToTransferAlgorithms.cpp similarity index 81% rename from objectstore/ArchiveQueueAlgorithms.cpp rename to objectstore/ArchiveQueueToTransferAlgorithms.cpp index 11187d64d8..bc2cdb574c 100644 --- a/objectstore/ArchiveQueueAlgorithms.cpp +++ b/objectstore/ArchiveQueueToTransferAlgorithms.cpp @@ -24,13 +24,13 @@ namespace cta { namespace objectstore { // ArchiveQueue full specialisations for ContainerTraits. template<> -const std::string ContainerTraits<ArchiveQueue,ArchiveQueue>::c_containerTypeName = "ArchiveQueue"; +const std::string ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::c_containerTypeName = "ArchiveQueueToTransfer"; template<> -const std::string ContainerTraits<ArchiveQueue,ArchiveQueue>::c_identifierType = "tapepool"; +const std::string ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::c_identifierType = "tapepool"; template<> -auto ContainerTraits<ArchiveQueue,ArchiveQueue>:: +auto ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>:: getContainerSummary(Container& cont) -> ContainerSummary { ContainerSummary ret; ret.JobsSummary::operator=(cont.getJobsSummary()); @@ -38,7 +38,7 @@ getContainerSummary(Container& cont) -> ContainerSummary { } template<> -auto ContainerTraits<ArchiveQueue,ArchiveQueue>:: +auto ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>:: getPoppingElementsCandidates(Container &cont, PopCriteria &unfulfilledCriteria, ElementsToSkipSet &elemtsToSkip, log::LogContext& lc) -> PoppedElementsBatch { @@ -54,7 +54,7 @@ getPoppingElementsCandidates(Container &cont, PopCriteria &unfulfilledCriteria, } template<> -auto ContainerTraits<ArchiveQueue,ArchiveQueue>:: +auto ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>:: getElementSummary(const PoppedElement& poppedElement) -> PoppedElementsSummary { PoppedElementsSummary ret; ret.bytes = poppedElement.bytes; @@ -63,14 +63,14 @@ getElementSummary(const PoppedElement& poppedElement) -> PoppedElementsSummary { } template<> -void ContainerTraits<ArchiveQueue,ArchiveQueue>::PoppedElementsBatch:: +void ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>::PoppedElementsBatch:: addToLog(log::ScopedParamContainer ¶ms) { params.add("bytes", summary.bytes) .add("files", summary.files); } template<> -void ContainerTraits<ArchiveQueue,ArchiveQueue>:: +void ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>:: trimContainerIfNeeded(Container &cont, ScopedExclusiveLock &contLock, const ContainerIdentifier &cId, log::LogContext &lc) { diff --git a/objectstore/CMakeLists.txt b/objectstore/CMakeLists.txt index f9191d871f..e2fd1247e3 100644 --- a/objectstore/CMakeLists.txt +++ b/objectstore/CMakeLists.txt @@ -60,9 +60,9 @@ add_library (ctaobjectstore SHARED AgentWatchdog.cpp ArchiveQueue.cpp ArchiveQueueShard.cpp - ArchiveQueueAlgorithms.cpp - ArchiveQueueFailedAlgorithms.cpp + ArchiveQueueToTransferAlgorithms.cpp ArchiveQueueToReportAlgorithms.cpp + ArchiveQueueFailedAlgorithms.cpp RetrieveQueue.cpp RetrieveQueueShard.cpp RetrieveQueueAlgorithms.cpp diff --git a/objectstore/GarbageCollector.cpp b/objectstore/GarbageCollector.cpp index a31ee5d1a8..8f5fa13d50 100644 --- a/objectstore/GarbageCollector.cpp +++ b/objectstore/GarbageCollector.cpp @@ -399,7 +399,7 @@ void GarbageCollector::OwnedObjectSorter::lockFetchAndUpdateArchiveJobs(Agent& a requestsList.pop_front(); } utils::Timer t; - typedef ContainerAlgorithms<ArchiveQueue,ArchiveQueue> AqAlgos; + typedef ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> AqAlgos; AqAlgos aqcl(objectStore, agentReference); decltype(aqcl)::InsertedElement::list jobsToAdd; for (auto & ar: currentJobBatch) { diff --git a/objectstore/ObjectOps.hpp b/objectstore/ObjectOps.hpp index 6d760f5b5d..79aa62a7ac 100644 --- a/objectstore/ObjectOps.hpp +++ b/objectstore/ObjectOps.hpp @@ -33,7 +33,10 @@ class AgentReference; class ScopedLock; class ScopedExclusiveLock; template<typename Q,typename C> struct ContainerTraits; + +// Defined queue types struct ArchiveQueue; +struct ArchiveQueueToTransfer; struct ArchiveQueueToReport; struct ArchiveQueueFailed; struct RetrieveQueue; @@ -44,7 +47,7 @@ class ObjectOpsBase { friend class ScopedExclusiveLock; friend class GenericObject; friend class Helpers; - friend ContainerTraits<ArchiveQueue,ArchiveQueue>; + friend ContainerTraits<ArchiveQueue,ArchiveQueueToTransfer>; friend ContainerTraits<ArchiveQueue,ArchiveQueueToReport>; friend ContainerTraits<ArchiveQueue,ArchiveQueueFailed>; friend ContainerTraits<RetrieveQueue,RetrieveQueue>; diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp index 57bc414836..95f56877de 100644 --- a/scheduler/OStoreDB/OStoreDB.cpp +++ b/scheduler/OStoreDB/OStoreDB.cpp @@ -1742,7 +1742,7 @@ const SchedulerDatabase::ArchiveMount::MountInfo& OStoreDB::ArchiveMount::getMou //------------------------------------------------------------------------------ std::list<std::unique_ptr<SchedulerDatabase::ArchiveJob> > OStoreDB::ArchiveMount::getNextJobBatch(uint64_t filesRequested, uint64_t bytesRequested, log::LogContext& logContext) { - typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueue> AQAlgos; + typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> AQAlgos; AQAlgos aqAlgos(m_oStoreDB.m_objectStore, *m_oStoreDB.m_agentReference); AQAlgos::PopCriteria popCriteria(filesRequested, bytesRequested); auto jobs = aqAlgos.popNextBatch(mountInfo.tapePool, objectstore::QueueType::JobsToTransfer, popCriteria, logContext); @@ -2137,7 +2137,7 @@ void OStoreDB::ArchiveJob::failTransfer(const std::string& failureReason, log::L auto retryStatus = m_archiveRequest.getRetryStatus(tapeFile.copyNb); m_archiveRequest.commit(); arl.release(); - typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueue> CaAqtr; + typedef objectstore::ContainerAlgorithms<ArchiveQueue,ArchiveQueueToTransfer> CaAqtr; CaAqtr caAqtr(m_oStoreDB.m_objectStore, *m_oStoreDB.m_agentReference); CaAqtr::InsertedElement::list insertedElements; insertedElements.push_back(CaAqtr::InsertedElement{&m_archiveRequest, tapeFile.copyNb, archiveFile, cta::nullopt, cta::nullopt }); -- GitLab