From cac4ff8076b322381e01ae2dd753829dd3d81ca1 Mon Sep 17 00:00:00 2001 From: Cedric CAFFY <cedric.caffy@hotmail.fr> Date: Fri, 1 Feb 2019 10:58:23 -0500 Subject: [PATCH] Started to implement the method to get the RetrieveRequest from the RetrieveQueueToReportToSuccessForRepack queue --- scheduler/OStoreDB/OStoreDB.cpp | 6 ++++++ scheduler/OStoreDB/OStoreDB.hpp | 2 ++ scheduler/OStoreDB/OStoreDBFactory.hpp | 4 ++++ scheduler/Scheduler.cpp | 10 +++++----- scheduler/Scheduler.hpp | 20 +++++++++----------- scheduler/SchedulerDatabase.hpp | 1 + scheduler/SchedulerTest.cpp | 3 +++ 7 files changed, 30 insertions(+), 16 deletions(-) diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp index c246e1d4d3..bfd518e9b0 100644 --- a/scheduler/OStoreDB/OStoreDB.cpp +++ b/scheduler/OStoreDB/OStoreDB.cpp @@ -3155,4 +3155,10 @@ void OStoreDB::RetrieveJob::checkReportSucceedForRepack(){ m_jobSucceedForRepackReporter->wait(); } +std::list<std::unique_ptr<cta::SchedulerDatabase::RetrieveJob>> OStoreDB::getNextSucceededRetrieveRequestForRepackBatch(uint64_t filesRequested, log::LogContext& lc) +{ + std::list<std::unique_ptr<cta::SchedulerDatabase::RetrieveJob>> ret; + //TODO : Use Algorithms to retrieve the jobs from the RetrieveQueueToReportToRepackForSuccess + return ret; +} } // namespace cta diff --git a/scheduler/OStoreDB/OStoreDB.hpp b/scheduler/OStoreDB/OStoreDB.hpp index e1cf471b35..5a6b2160e1 100644 --- a/scheduler/OStoreDB/OStoreDB.hpp +++ b/scheduler/OStoreDB/OStoreDB.hpp @@ -309,6 +309,8 @@ public: std::list<std::unique_ptr<SchedulerDatabase::RetrieveJob>> getNextRetrieveJobsFailedBatch(uint64_t filesRequested, log::LogContext &logContext) override; + std::list<std::unique_ptr<cta::SchedulerDatabase::RetrieveJob>> getNextSucceededRetrieveRequestForRepackBatch(uint64_t filesRequested, log::LogContext& lc) override; + /* === Repack requests handling =========================================== */ void queueRepack(const std::string& vid, const std::string& bufferURL, common::dataStructures::RepackInfo::Type repackType, log::LogContext &logContext) override; diff --git a/scheduler/OStoreDB/OStoreDBFactory.hpp b/scheduler/OStoreDB/OStoreDBFactory.hpp index 2bad25ac44..b4434486c5 100644 --- a/scheduler/OStoreDB/OStoreDBFactory.hpp +++ b/scheduler/OStoreDB/OStoreDBFactory.hpp @@ -146,6 +146,10 @@ public: return m_OStoreDB.getNextRetrieveJobsFailedBatch(filesRequested, lc); } + std::list<std::unique_ptr<RetrieveJob>> getNextSucceededRetrieveRequestForRepackBatch(uint64_t filesRequested, log::LogContext& lc) override { + return m_OStoreDB.getNextSucceededRetrieveRequestForRepackBatch(filesRequested,lc); + } + void setJobBatchReported(std::list<cta::SchedulerDatabase::ArchiveJob*>& jobsBatch, log::TimingList & timingList, utils::Timer & t, log::LogContext& lc) override { m_OStoreDB.setJobBatchReported(jobsBatch, timingList, t, lc); diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp index a0fedf915f..f05b67d218 100644 --- a/scheduler/Scheduler.cpp +++ b/scheduler/Scheduler.cpp @@ -237,11 +237,6 @@ void Scheduler::queueRetrieve( lc.log(log::INFO, "Queued retrieve request"); } -void Scheduler::queueRetrieveRequestForRepack(const std::string &instanceName, const cta::common::dataStructures::RetrieveRequest &request, - std::list<uint64_t> copyNbs, log::LogContext &lc) -{ - -} //------------------------------------------------------------------------------ // deleteArchive @@ -325,6 +320,11 @@ void Scheduler::queueRepack(const common::dataStructures::SecurityIdentity &cliI lc.log(log::INFO, "In Scheduler::queueRepack(): success."); } +std::list<std::unique_ptr<cta::SchedulerDatabase::RetrieveJob>> Scheduler::getNextSucceededRetrieveRequestForRepackBatch(uint64_t filesRequested, log::LogContext& lc) +{ + return m_db.getNextSucceededRetrieveRequestForRepackBatch(filesRequested,lc); +} + //------------------------------------------------------------------------------ // cancelRepack //------------------------------------------------------------------------------ diff --git a/scheduler/Scheduler.hpp b/scheduler/Scheduler.hpp index 0d99c5638c..e4f1bfc588 100644 --- a/scheduler/Scheduler.hpp +++ b/scheduler/Scheduler.hpp @@ -48,6 +48,7 @@ #include "scheduler/TapeMount.hpp" #include "scheduler/SchedulerDatabase.hpp" #include "scheduler/RepackRequest.hpp" +#include "objectstore/RetrieveRequest.hpp" #include "eos/DiskReporter.hpp" #include "eos/DiskReporterFactory.hpp" @@ -142,17 +143,6 @@ public: void queueRetrieve(const std::string &instanceName, const cta::common::dataStructures::RetrieveRequest &request, log::LogContext &lc); - - /** - * Queue a retrieve request specific for Repack - * @param instanceName - * @param request - * @param copyNbs - * @param lc - */ - void queueRetrieveRequestForRepack(const std::string &instanceName, const cta::common::dataStructures::RetrieveRequest &request, - std::list<uint64_t> copyNbs, log::LogContext &lc); - /** * Delete an archived file or a file which is in the process of being archived. * Throws a UserError exception in case of wrong request parameters (ex. unknown file id) @@ -208,6 +198,14 @@ public: std::list<cta::common::dataStructures::RepackInfo> getRepacks(); cta::common::dataStructures::RepackInfo getRepack(const std::string &vid); + /** + * Return the list of all RetrieveRequests that are in the RetrieveQueueToReportToRepackForSuccess + * @param nbRequests : The number of request we would like to return + * @param lc + * @return The list of all RetrieveRequests that are queued in the RetrieveQueueToReportToRepackForSuccess + */ + std::list<std::unique_ptr<cta::SchedulerDatabase::RetrieveJob>> getNextSucceededRetrieveRequestForRepackBatch(uint64_t nbRequests, log::LogContext& lc); + void shrink(const cta::common::dataStructures::SecurityIdentity &cliIdentity, const std::string &tapepool); // removes extra tape copies from a specific pool(usually an "_2" pool) diff --git a/scheduler/SchedulerDatabase.hpp b/scheduler/SchedulerDatabase.hpp index 027d3fa736..d2f907750f 100644 --- a/scheduler/SchedulerDatabase.hpp +++ b/scheduler/SchedulerDatabase.hpp @@ -433,6 +433,7 @@ public: */ virtual std::list<std::unique_ptr<RetrieveJob>> getNextRetrieveJobsToReportBatch(uint64_t filesRequested, log::LogContext &logContext) = 0; virtual std::list<std::unique_ptr<RetrieveJob>> getNextRetrieveJobsFailedBatch(uint64_t filesRequested, log::LogContext &logContext) = 0; + virtual std::list<std::unique_ptr<RetrieveJob>> getNextSucceededRetrieveRequestForRepackBatch(uint64_t filesRequested, log::LogContext& logContext) = 0; /*============ Label management: user side =================================*/ // TODO diff --git a/scheduler/SchedulerTest.cpp b/scheduler/SchedulerTest.cpp index 2364e93273..fc7d80d3b6 100644 --- a/scheduler/SchedulerTest.cpp +++ b/scheduler/SchedulerTest.cpp @@ -1331,6 +1331,9 @@ TEST_P(SchedulerTest, expandRepackRequest) { } } } + scheduler.waitSchedulerDbSubthreadsComplete(); + scheduler.getNextSucceededRetrieveRequestForRepackBatch(5,lc); + //scheduler.transformRetrieveRequestsToArchiveForRepack(lc); } #undef TEST_MOCK_DB -- GitLab