From 492219c2414335ba43d6582379a388d52f35ddb9 Mon Sep 17 00:00:00 2001
From: Michael Davis <michael.davis@cern.ch>
Date: Thu, 4 Feb 2021 12:21:58 +0100
Subject: [PATCH] [frontend] Adds failure log messages to processCLOSEW()

---
 ReleaseNotes.md                           |  2 ++
 xroot_plugins/XrdSsiCtaRequestMessage.cpp | 14 ++++++++++----
 2 files changed, 12 insertions(+), 4 deletions(-)

diff --git a/ReleaseNotes.md b/ReleaseNotes.md
index 6da647e369..d446e974a7 100644
--- a/ReleaseNotes.md
+++ b/ReleaseNotes.md
@@ -1,3 +1,5 @@
+- cta/CTA#964 Adds failure log messages to processCLOSEW in CTA Frontend
+
 # v3.2-1
 
 ## Summary
diff --git a/xroot_plugins/XrdSsiCtaRequestMessage.cpp b/xroot_plugins/XrdSsiCtaRequestMessage.cpp
index f56eb2d298..0376369537 100644
--- a/xroot_plugins/XrdSsiCtaRequestMessage.cpp
+++ b/xroot_plugins/XrdSsiCtaRequestMessage.cpp
@@ -504,23 +504,31 @@ void RequestMessage::processCLOSEW(const cta::eos::Notification &notification, c
    request.creationLog.username   = m_cliIdentity.username;
    request.creationLog.time       = time(nullptr);
 
+   cta::log::ScopedParamContainer params(m_lc);
+   params.add("requesterInstance", notification.wf().requester_instance());
+   std::string logMessage = "In RequestMessage::processCLOSEW(): ";
+
    // CTA Archive ID is an EOS extended attribute, i.e. it is stored as a string, which
    // must be converted to a valid uint64_t
    const auto archiveFileIdItor = notification.file().xattr().find("sys.archive.file_id");
    if(notification.file().xattr().end() == archiveFileIdItor) {
+     logMessage += "sys.archive.file_id is not present in extended attributes";
+     m_lc.log(cta::log::INFO, logMessage);
      throw PbException(std::string(__FUNCTION__) + ": Failed to find the extended attribute named sys.archive.file_id");
    }
    const std::string archiveFileIdStr = archiveFileIdItor->second;
    uint64_t archiveFileId = 0;
    if((archiveFileId = strtoul(archiveFileIdStr.c_str(), nullptr, 10)) == 0)
    {
+      params.add("sys.archive.file_id", archiveFileIdStr);
+      logMessage += "sys.archive.file_id is not a positive integer";
+      m_lc.log(cta::log::INFO, logMessage);
       throw PbException("Invalid archiveFileID " + archiveFileIdStr);
    }
+   params.add("fileId", archiveFileId);
 
    cta::utils::Timer t;
 
-   cta::log::ScopedParamContainer params(m_lc);
-   std::string logMessage = "In RequestMessage::processCLOSEW(): ";
    if(request.fileSize > 0) {
      // Queue the request
      std::string archiveRequestAddr = m_scheduler.queueArchiveWithGivenId(archiveFileId, m_cliIdentity.username, request, m_lc);
@@ -535,8 +543,6 @@ void RequestMessage::processCLOSEW(const cta::eos::Notification &notification, c
    }
 
    // Create a log entry
-   params.add("fileId", archiveFileId);
-   params.add("requesterInstance", notification.wf().requester_instance());
    m_lc.log(cta::log::INFO, logMessage);
 
    // Set response type
-- 
GitLab