From f8a916fef54d26f647cf99d18b795f627da7c93a Mon Sep 17 00:00:00 2001
From: Michael Davis <michael.davis@cern.ch>
Date: Wed, 11 Mar 2020 14:46:29 +0100
Subject: [PATCH] [frontend] Sends ObjectStore Id along with failed requests

---
 common/dataStructures/ArchiveJob.hpp    | 1 +
 common/dataStructures/RetrieveJob.hpp   | 1 +
 scheduler/OStoreDB/QueueItor.cpp        | 2 ++
 xroot_plugins/XrdCtaFailedRequestLs.hpp | 4 ++--
 4 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/common/dataStructures/ArchiveJob.hpp b/common/dataStructures/ArchiveJob.hpp
index 5073d6c975..637769507f 100644
--- a/common/dataStructures/ArchiveJob.hpp
+++ b/common/dataStructures/ArchiveJob.hpp
@@ -45,6 +45,7 @@ struct ArchiveJob {
   std::string instanceName;
   uint32_t copyNumber;
   uint64_t archiveFileID;
+  std::string objectId; //!< Objectstore address, provided when reporting a failed job
   std::list<std::string> failurelogs;
 
 }; // struct ArchiveJob
diff --git a/common/dataStructures/RetrieveJob.hpp b/common/dataStructures/RetrieveJob.hpp
index c1958bc656..b0c37de28b 100644
--- a/common/dataStructures/RetrieveJob.hpp
+++ b/common/dataStructures/RetrieveJob.hpp
@@ -44,6 +44,7 @@ struct RetrieveJob {
   RetrieveRequest request;
   uint64_t fileSize;
   std::map<std::string,std::pair<uint32_t,TapeFile>> tapeCopies;
+  std::string objectId; //!< Objectstore address, provided when reporting a failed job
   std::list<std::string> failurelogs;
 
 }; // struct RetrieveJob
diff --git a/scheduler/OStoreDB/QueueItor.cpp b/scheduler/OStoreDB/QueueItor.cpp
index 457c93abcc..2173d35d79 100644
--- a/scheduler/OStoreDB/QueueItor.cpp
+++ b/scheduler/OStoreDB/QueueItor.cpp
@@ -118,6 +118,7 @@ getQueueJobs(const jobQueue_t &jobQueueChunk)
         job.request.srcURL           = osar.first.getSrcURL();
         job.request.archiveReportURL = osar.first.getArchiveReportURL();
         job.request.storageClass     = osar.first.getArchiveFile().storageClass;
+        job.objectId                 = osar.first.getAddressIfSet();
         job.failurelogs              = osar.first.getFailures();
 
         m_jobCache.push_back(job);
@@ -209,6 +210,7 @@ getQueueJobs(const jobQueue_t &jobQueueChunk)
         job.request            = osrr.first.getSchedulerRequest();
         job.fileSize           = osrr.first.getArchiveFile().fileSize;
         job.tapeCopies[tf.vid] = std::make_pair(tf.copyNb, tf);
+        job.objectId           = osrr.first.getAddressIfSet();
         job.failurelogs        = osrr.first.getFailures();
 
         m_jobCache.push_back(job);
diff --git a/xroot_plugins/XrdCtaFailedRequestLs.hpp b/xroot_plugins/XrdCtaFailedRequestLs.hpp
index 376cd776a9..c3e844068e 100644
--- a/xroot_plugins/XrdCtaFailedRequestLs.hpp
+++ b/xroot_plugins/XrdCtaFailedRequestLs.hpp
@@ -137,7 +137,7 @@ pushRecord(XrdSsiPb::OStreamBuffer<Data> *streambuf, const common::dataStructure
   auto &tapepool = m_archiveQueueItorPtr->qid();
   Data record;
 
-  record.mutable_frls_item()->set_object_id("PLACEHOLDER");
+  record.mutable_frls_item()->set_object_id(item.objectId);
   record.mutable_frls_item()->set_request_type(admin::RequestType::ARCHIVE_REQUEST);
   record.mutable_frls_item()->set_tapepool(tapepool);
   record.mutable_frls_item()->set_copy_nb(item.copyNumber);
@@ -166,7 +166,7 @@ pushRecord(XrdSsiPb::OStreamBuffer<Data> *streambuf, const common::dataStructure
 
   Data record;
 
-  record.mutable_frls_item()->set_object_id("PLACEHOLDER");
+  record.mutable_frls_item()->set_object_id(item.objectId);
   record.mutable_frls_item()->set_request_type(admin::RequestType::RETRIEVE_REQUEST);
   record.mutable_frls_item()->set_copy_nb(item.tapeCopies.at(vid).first);
   record.mutable_frls_item()->mutable_requester()->set_username(item.request.requester.name);
-- 
GitLab