From d60dcf5561c8102142c1c6c2a581941b491f9a78 Mon Sep 17 00:00:00 2001
From: Michael Davis <michael.davis@cern.ch>
Date: Wed, 11 Mar 2020 14:03:52 +0100
Subject: [PATCH] [frontend] Adds extra fields into failed retrieve request
 protobuf

---
 xroot_plugins/XrdCtaFailedRequestLs.hpp | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

diff --git a/xroot_plugins/XrdCtaFailedRequestLs.hpp b/xroot_plugins/XrdCtaFailedRequestLs.hpp
index c6bfda56d0..376cd776a9 100644
--- a/xroot_plugins/XrdCtaFailedRequestLs.hpp
+++ b/xroot_plugins/XrdCtaFailedRequestLs.hpp
@@ -134,11 +134,12 @@ FailedRequestLsStream::FailedRequestLsStream(const RequestMessage &requestMsg,
 template<> bool FailedRequestLsStream::
 pushRecord(XrdSsiPb::OStreamBuffer<Data> *streambuf, const common::dataStructures::ArchiveJob &item)
 {
+  auto &tapepool = m_archiveQueueItorPtr->qid();
   Data record;
 
   record.mutable_frls_item()->set_object_id("PLACEHOLDER");
   record.mutable_frls_item()->set_request_type(admin::RequestType::ARCHIVE_REQUEST);
-  record.mutable_frls_item()->set_tapepool(m_archiveQueueItorPtr->qid());
+  record.mutable_frls_item()->set_tapepool(tapepool);
   record.mutable_frls_item()->set_copy_nb(item.copyNumber);
   record.mutable_frls_item()->mutable_requester()->set_username(item.request.requester.name);
   record.mutable_frls_item()->mutable_requester()->set_groupname(item.request.requester.group);
@@ -167,11 +168,26 @@ pushRecord(XrdSsiPb::OStreamBuffer<Data> *streambuf, const common::dataStructure
 
   record.mutable_frls_item()->set_object_id("PLACEHOLDER");
   record.mutable_frls_item()->set_request_type(admin::RequestType::RETRIEVE_REQUEST);
-  record.mutable_frls_item()->mutable_tf()->set_vid(vid);
   record.mutable_frls_item()->set_copy_nb(item.tapeCopies.at(vid).first);
   record.mutable_frls_item()->mutable_requester()->set_username(item.request.requester.name);
   record.mutable_frls_item()->mutable_requester()->set_groupname(item.request.requester.group);
+  record.mutable_frls_item()->mutable_af()->set_archive_id(item.request.archiveFileID);
+  record.mutable_frls_item()->mutable_af()->set_size(item.fileSize);
   record.mutable_frls_item()->mutable_af()->mutable_df()->set_path(item.request.diskFileInfo.path);
+  record.mutable_frls_item()->mutable_af()->set_creation_time(item.request.creationLog.time);
+  record.mutable_frls_item()->mutable_tf()->set_vid(vid);
+
+  // Find the correct tape copy
+  for(auto &tapecopy : item.tapeCopies) {
+    auto &tf = tapecopy.second.second;
+    if(tf.vid == vid) {
+      record.mutable_frls_item()->mutable_tf()->set_f_seq(tf.fSeq);
+      record.mutable_frls_item()->mutable_tf()->set_block_id(tf.blockId);
+      record.mutable_frls_item()->mutable_tf()->set_superseded_by_vid(tf.supersededByVid);
+      record.mutable_frls_item()->mutable_tf()->set_superseded_by_f_seq(tf.supersededByFSeq);
+      break;
+    }
+  }
 
   if(m_isLogEntries) {
     *record.mutable_frls_item()->mutable_failurelogs() = { item.failurelogs.begin(), item.failurelogs.end() };
-- 
GitLab