diff --git a/cmdline/CtaAdminTextFormatter.cpp b/cmdline/CtaAdminTextFormatter.cpp index 22ef5fec5f8d075991a2edba5cd113dbdc832c8b..f1c21580ca44ab38f490b92f2947a92ca528660e 100644 --- a/cmdline/CtaAdminTextFormatter.cpp +++ b/cmdline/CtaAdminTextFormatter.cpp @@ -705,7 +705,7 @@ void TextFormatter::print(const ShowQueuesItem &sq_item) { std::string minAge; std::string maxDrivesAllowed; - if(sq_item.mount_type() == ARCHIVE_FOR_USER || + if(sq_item.mount_type() == ARCHIVE_FOR_USER || sq_item.mount_type() == ARCHIVE_FOR_REPACK || sq_item.mount_type() == RETRIEVE) { priority = std::to_string(sq_item.priority()); minAge = std::to_string(sq_item.min_age()); diff --git a/common/dataStructures/QueueAndMountSummary.cpp b/common/dataStructures/QueueAndMountSummary.cpp index c636d5dda528232df75dd436a0f3d9872eb05321..4b7c81cea533bc6baed0ffb0dda3543cd122ed39 100644 --- a/common/dataStructures/QueueAndMountSummary.cpp +++ b/common/dataStructures/QueueAndMountSummary.cpp @@ -30,15 +30,15 @@ QueueAndMountSummary &QueueAndMountSummary::getOrCreateEntry(std::list<QueueAndM const common::dataStructures::VidToTapeMap &vid_to_tapeinfo) { for (auto & summary: summaryList) { - if ((mountType==MountType::ArchiveForUser && summary.tapePool==tapePool) || + if (((mountType==MountType::ArchiveForUser || mountType==MountType::ArchiveForRepack) && summary.tapePool==tapePool) || (mountType==MountType::Retrieve && summary.vid==vid)) return summary; } - if (std::set<MountType>({MountType::ArchiveForUser, MountType::Retrieve}).count(mountType)) { + if (std::set<MountType>({MountType::ArchiveForUser, MountType::Retrieve, MountType::ArchiveForRepack}).count(mountType)) { summaryList.push_back(QueueAndMountSummary()); summaryList.back().mountType=mountType; summaryList.back().tapePool=tapePool; - if (MountType::ArchiveForUser==mountType) { + if (MountType::ArchiveForUser==mountType || MountType::ArchiveForRepack == mountType) { summaryList.back().vid="-"; summaryList.back().logicalLibrary="-"; } else { diff --git a/scheduler/OStoreDB/OStoreDB.cpp b/scheduler/OStoreDB/OStoreDB.cpp index 6622d61a38ccc0d67fbc3f97d827ad718a7c4cfc..ff904950d12a0f6895706cd3444ba3a2a0122f80 100644 --- a/scheduler/OStoreDB/OStoreDB.cpp +++ b/scheduler/OStoreDB/OStoreDB.cpp @@ -3212,6 +3212,7 @@ std::unique_ptr<SchedulerDatabase::ArchiveMount> am.mountInfo.vendor = vendor; am.mountInfo.mountId = m_schedulerGlobalLock->getIncreaseCommitMountId(); am.mountInfo.capacityInBytes = capacityInBytes; + am.mountInfo.mountType = type; m_schedulerGlobalLock->commit(); am.mountInfo.tapePool = tape.tapePool; am.mountInfo.logicalLibrary = logicalLibrary; @@ -3225,7 +3226,7 @@ std::unique_ptr<SchedulerDatabase::ArchiveMount> driveInfo.logicalLibrary=logicalLibrary; driveInfo.host=hostName; ReportDriveStatusInputs inputs; - inputs.mountType = common::dataStructures::MountType::ArchiveForUser; + inputs.mountType = type;// common::dataStructures::MountType::ArchiveForUser; inputs.byteTransferred = 0; inputs.filesTransferred = 0; inputs.latestBandwidth = 0; @@ -3678,7 +3679,7 @@ void OStoreDB::ArchiveMount::setDriveStatus(cta::common::dataStructures::DriveSt driveInfo.logicalLibrary=mountInfo.logicalLibrary; driveInfo.host=mountInfo.host; ReportDriveStatusInputs inputs; - inputs.mountType = common::dataStructures::MountType::ArchiveForUser; + inputs.mountType = m_queueType == JobQueueType::JobsToTransferForUser ? common::dataStructures::MountType::ArchiveForUser : common::dataStructures::MountType::ArchiveForRepack; inputs.mountSessionId = mountInfo.mountId; inputs.reportTime = completionTime; inputs.status = status; diff --git a/scheduler/Scheduler.cpp b/scheduler/Scheduler.cpp index 8d561cc92ed42f21ca935969d13adbe27b3b9f7f..eb40949d9d05deb89c5b7a9816c604ab1cbefbc9 100644 --- a/scheduler/Scheduler.cpp +++ b/scheduler/Scheduler.cpp @@ -1333,6 +1333,7 @@ std::list<common::dataStructures::QueueAndMountSummary> Scheduler::getQueuesAndM auto &summary = common::dataStructures::QueueAndMountSummary::getOrCreateEntry(ret, pm.type, pm.tapePool, pm.vid, vid_to_tapeinfo); switch (pm.type) { case common::dataStructures::MountType::ArchiveForUser: + case common::dataStructures::MountType::ArchiveForRepack: summary.mountPolicy.archivePriority = pm.priority; summary.mountPolicy.archiveMinRequestAge = pm.minRequestAge; summary.mountPolicy.maxDrivesAllowed = pm.maxDrivesAllowed; @@ -1357,6 +1358,7 @@ std::list<common::dataStructures::QueueAndMountSummary> Scheduler::getQueuesAndM auto &summary = common::dataStructures::QueueAndMountSummary::getOrCreateEntry(ret, em.type, em.tapePool, em.vid, vid_to_tapeinfo); switch (em.type) { case common::dataStructures::MountType::ArchiveForUser: + case common::dataStructures::MountType::ArchiveForRepack: case common::dataStructures::MountType::Retrieve: if (em.currentMount) summary.currentMounts++; @@ -1373,7 +1375,7 @@ std::list<common::dataStructures::QueueAndMountSummary> Scheduler::getQueuesAndM mountDecisionInfo.reset(); // Add the tape information where useful (archive queues). for (auto & mountOrQueue: ret) { - if (common::dataStructures::MountType::ArchiveForUser==mountOrQueue.mountType) { + if (common::dataStructures::MountType::ArchiveForUser==mountOrQueue.mountType || common::dataStructures::MountType::ArchiveForRepack==mountOrQueue.mountType) { // Get all the tape for this pool cta::catalogue::TapeSearchCriteria tsc; tsc.tapePool = mountOrQueue.tapePool; diff --git a/scheduler/SchedulerDatabase.hpp b/scheduler/SchedulerDatabase.hpp index dc021f69c2f7def9555f4c1bf602323530ed4d17..23dde264afe4ed7c9af32d5d81b84fae51e9f860 100644 --- a/scheduler/SchedulerDatabase.hpp +++ b/scheduler/SchedulerDatabase.hpp @@ -157,6 +157,7 @@ public: std::string host; uint64_t mountId; uint64_t capacityInBytes; + cta::common::dataStructures::MountType mountType; } mountInfo; virtual const MountInfo & getMountInfo() = 0; virtual std::list<std::unique_ptr<ArchiveJob>> getNextJobBatch(uint64_t filesRequested, diff --git a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp index 66806fa0f41061ab8e87f57926f87088c540e351..00946f255692412687b12c5a6b993f8d4bd73d54 100644 --- a/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp +++ b/tapeserver/castor/tape/tapeserver/daemon/DataTransferSession.cpp @@ -544,7 +544,8 @@ const char *castor::tape::tapeserver::daemon::DataTransferSession:: mountTypeToString(const cta::common::dataStructures::MountType mountType) const throw() { switch(mountType) { case cta::common::dataStructures::MountType::Retrieve: return "Retrieve"; - case cta::common::dataStructures::MountType::ArchiveForUser : return "Archive"; + case cta::common::dataStructures::MountType::ArchiveForUser : return "ArchiveForUser"; + case cta::common::dataStructures::MountType::ArchiveForRepack : return "ArchiveForRepack"; case cta::common::dataStructures::MountType::Label: return "Label"; default : return "UNKNOWN"; } diff --git a/xroot_plugins/XrdCtaShowQueues.hpp b/xroot_plugins/XrdCtaShowQueues.hpp index f53cb48e1d501ed111d07eff90691a38b1d610b7..72bfd88cabe01439be4705414fa8277085350b23 100644 --- a/xroot_plugins/XrdCtaShowQueues.hpp +++ b/xroot_plugins/XrdCtaShowQueues.hpp @@ -77,6 +77,7 @@ int ShowQueuesStream::fillBuffer(XrdSsiPb::OStreamBuffer<Data> *streambuf) { auto sq_item = record.mutable_sq_item(); switch(sq.mountType) { + case common::dataStructures::MountType::ArchiveForRepack: case common::dataStructures::MountType::ArchiveForUser: sq_item->set_priority(sq.mountPolicy.archivePriority); sq_item->set_min_age(sq.mountPolicy.archiveMinRequestAge);