From 6da3a26079f9f1037ae6ad3f94aa91c8076b14a4 Mon Sep 17 00:00:00 2001 From: Eric Cano <Eric.Cano@cern.ch> Date: Mon, 29 Jun 2015 10:23:25 +0200 Subject: [PATCH] Added support for size in Scheduler::createArchiveToFileRequest. --- scheduler/ArchiveToFileRequest.cpp | 4 +++- scheduler/ArchiveToFileRequest.hpp | 6 ++++++ scheduler/OStoreDB/OStoreDB.cpp | 6 +++++- scheduler/Scheduler.cpp | 2 ++ scheduler/Scheduler.hpp | 4 ++-- 5 files changed, 18 insertions(+), 4 deletions(-) diff --git a/scheduler/ArchiveToFileRequest.cpp b/scheduler/ArchiveToFileRequest.cpp index a178a0fa6c..c32bb41469 100644 --- a/scheduler/ArchiveToFileRequest.cpp +++ b/scheduler/ArchiveToFileRequest.cpp @@ -36,13 +36,15 @@ cta::ArchiveToFileRequest::~ArchiveToFileRequest() throw() { cta::ArchiveToFileRequest::ArchiveToFileRequest( const std::string &remoteFile, const std::string &archiveFile, + const uint64_t size, const std::map<uint16_t, std::string> ©NbToPoolMap, const uint64_t priority, const CreationLog & creationLog): ArchiveRequest(priority, creationLog), m_remoteFile(remoteFile), m_archiveFile(archiveFile), - m_copyNbToPoolMap(copyNbToPoolMap) { + m_copyNbToPoolMap(copyNbToPoolMap), + m_size(size) { } //------------------------------------------------------------------------------ diff --git a/scheduler/ArchiveToFileRequest.hpp b/scheduler/ArchiveToFileRequest.hpp index f88762bc42..690ca09fc2 100644 --- a/scheduler/ArchiveToFileRequest.hpp +++ b/scheduler/ArchiveToFileRequest.hpp @@ -59,6 +59,7 @@ public: ArchiveToFileRequest( const std::string &remoteFile, const std::string &archiveFile, + const uint64_t size, const std::map<uint16_t, std::string> ©NbToPoolMap, const uint64_t priority, const CreationLog & creationLog); @@ -101,6 +102,11 @@ private: */ std::map<uint16_t, std::string> m_copyNbToPoolMap; + /** + * The size of the file. + */ + uint64_t m_size; + }; // class ArchiveToFileRequest } // namespace cta diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp index 1dcf24f11e..611021f5a3 100644 --- a/scheduler/OStoreDB/OStoreDB.cpp +++ b/scheduler/OStoreDB/OStoreDB.cpp @@ -415,11 +415,15 @@ void OStoreDB::queue(const cta::ArchiveToFileRequest& rqst) { ScopedSharedLock rel(re); re.fetch(); auto & cl = rqst.getCopyNbToPoolMap(); + std::list<cta::objectstore::ArchiveToFileRequest::JobDump> jl; for (auto copy=cl.begin(); copy != cl.end(); copy++) { std::string tpaddr = re.getTapePoolAddress(copy->second); atfr.addJob(copy->first, copy->second, tpaddr); + jl.push_back(cta::objectstore::ArchiveToFileRequest::JobDump()); + jl.back().copyNb = copy->first; + jl.back().tapePool = copy->second; + jl.back().tapePoolAddress = tpaddr; } - auto jl = atfr.dumpJobs(); if (!jl.size()) { throw ArchiveRequestHasNoCopies("In OStoreDB::queue: the archive to file request has no copy"); } diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp index 4d337a215d..f2cd8faf46 100644 --- a/scheduler/Scheduler.cpp +++ b/scheduler/Scheduler.cpp @@ -620,11 +620,13 @@ cta::ArchiveToFileRequest cta::Scheduler::createArchiveToFileRequest( assertStorageClassHasAtLeastOneCopy(storageClass); const auto routes = m_db.getArchivalRoutes(storageClassName); const auto copyNbToPoolMap = createCopyNbToPoolMap(routes); + const auto fileInfo = m_remoteNS.statFile(remoteFile); const CreationLog log(requester.getUser(), requester.getHost(), time(NULL), ""); return ArchiveToFileRequest( remoteFile, archiveFile, + fileInfo.getSize(), copyNbToPoolMap, priority, log); diff --git a/scheduler/Scheduler.hpp b/scheduler/Scheduler.hpp index d64d81d286..552492eb8f 100644 --- a/scheduler/Scheduler.hpp +++ b/scheduler/Scheduler.hpp @@ -614,7 +614,7 @@ private: * The name space of the remote storage system. */ RemoteNS &m_remoteNS; - + /** * Queues the specified request to archive one or more remote files to an * archive directory. @@ -642,7 +642,7 @@ private: */ void assertStorageClassHasAtLeastOneCopy( const StorageClass &storageClass) const; - + /** * Returns the list of ArchiveToFileRequest objects representing the specified * request to archive multiple files to an archive directory. -- GitLab