From 81f6ceff944bb89a3e107539e0ada816cdbecc6c Mon Sep 17 00:00:00 2001
From: Tigran Mkrtchyan <tigran.mkrtchyan@desy.de>
Date: Fri, 29 Oct 2021 13:41:07 +0200
Subject: [PATCH] cta-dcache: use ScopedParamContainer to push debug context
 into logs

---
 cta-dcache/gRPC/FrontendGRpcSvc.cpp | 43 +++++++++++++++++++++++++++--
 1 file changed, 41 insertions(+), 2 deletions(-)

diff --git a/cta-dcache/gRPC/FrontendGRpcSvc.cpp b/cta-dcache/gRPC/FrontendGRpcSvc.cpp
index 98fd4a7a60..51486bba8e 100644
--- a/cta-dcache/gRPC/FrontendGRpcSvc.cpp
+++ b/cta-dcache/gRPC/FrontendGRpcSvc.cpp
@@ -33,6 +33,10 @@ Status CtaRpcImpl::Archive(::grpc::ServerContext* context, const ::cta::dcache::
 
     m_log->log(cta::log::INFO, "Archive request");
 
+    cta::log::ScopedParamContainer sp(*m_log);
+    sp.add("remoteHost", context->peer());
+    sp.add("request", "archive");
+
     const std::string storageClass = request->file().storageclass();
     m_log->log(cta::log::DEBUG, "Archive request for storageClass: " + storageClass);
 
@@ -42,8 +46,16 @@ Status CtaRpcImpl::Archive(::grpc::ServerContext* context, const ::cta::dcache::
 
     auto instance = request->instance().name();
 
+    sp.add("instance", instance);
+    sp.add("username", request->cli().user().username());
+    sp.add("groupname", request->cli().user().groupname());
+
+    sp.add("storageClass", storageClass);
+    sp.add("fileID", request->file().fid());
+
     try {
         uint64_t archiveFileId = m_scheduler->checkAndGetNextArchiveFileId(instance, storageClass, requester, *m_log);
+        sp.add("archiveID", archiveFileId);
 
         cta::common::dataStructures::ArchiveRequest archiveRequest;
         cta::checksum::ProtobufToChecksumBlob(request->file().csb(), archiveRequest.checksumBlob);
@@ -63,9 +75,11 @@ Status CtaRpcImpl::Archive(::grpc::ServerContext* context, const ::cta::dcache::
         archiveRequest.creationLog.time = time(nullptr);
 
         std::string reqId = m_scheduler->queueArchiveWithGivenId(archiveFileId, instance, archiveRequest, *m_log);
+        sp.add("reqId", reqId);
+
         m_log->log(cta::log::INFO, "Archive request for storageClass: " + storageClass
             + " archiveFileId: " + std::to_string(archiveFileId)
-            + "RequestID: " + reqId);
+            + " RequestID: " + reqId);
 
         response->set_fid(archiveFileId);
         response->set_reqid(reqId);
@@ -81,13 +95,24 @@ Status CtaRpcImpl::Archive(::grpc::ServerContext* context, const ::cta::dcache::
 
 Status CtaRpcImpl::Delete(::grpc::ServerContext* context, const ::cta::dcache::rpc::DeleteRequest* request, ::google::protobuf::Empty* response) {
 
+    cta::log::ScopedParamContainer sp(*m_log);
+    sp.add("remoteHost", context->peer());
+
     m_log->log(cta::log::DEBUG, "Delete request");
+    sp.add("request", "delete");
+
     auto instance = request->instance().name();
     // Unpack message
     cta::common::dataStructures::DeleteArchiveRequest deleteRequest;
     deleteRequest.requester.name    = request->cli().user().username();
     deleteRequest.requester.group   = request->cli().user().groupname();
 
+    sp.add("instance", instance);
+    sp.add("username", request->cli().user().username());
+    sp.add("groupname", request->cli().user().groupname());
+    sp.add("fileID", request->file().fid());
+
+
     deleteRequest.diskFilePath          = "/" + request->file().fid();
     deleteRequest.diskFileId = request->file().fid();
     deleteRequest.diskInstance = instance;
@@ -112,11 +137,22 @@ Status CtaRpcImpl::Delete(::grpc::ServerContext* context, const ::cta::dcache::r
 Status CtaRpcImpl::Retrieve(::grpc::ServerContext* context, const ::cta::dcache::rpc::RetrieveRequest* request, ::cta::dcache::rpc::RetrieveResponse *response) {
 
 
+    cta::log::ScopedParamContainer sp(*m_log);
+    sp.add("remoteHost", context->peer());
+    sp.add("request", "retrieve");
+
     const std::string storageClass = request->file().storageclass();
     m_log->log(cta::log::DEBUG, "Retrieve request for storageClass: " + storageClass);
 
     auto instance = request->instance().name();
 
+    sp.add("instance", instance);
+    sp.add("username", request->cli().user().username());
+    sp.add("groupname", request->cli().user().groupname());
+    sp.add("storageClass", storageClass);
+    sp.add("archiveID", request->archiveid());
+    sp.add("fileID", request->file().fid());
+
     // Unpack message
     cta::common::dataStructures::RetrieveRequest retrieveRequest;
     retrieveRequest.requester.name         = request->cli().user().username();
@@ -132,14 +168,17 @@ Status CtaRpcImpl::Retrieve(::grpc::ServerContext* context, const ::cta::dcache:
     retrieveRequest.isVerifyOnly           = false;
 
     retrieveRequest.archiveFileID = request->archiveid();
+    sp.add("archiveID", request->archiveid());
+    sp.add("fileID", request->file().fid());
 
     cta::utils::Timer t;
 
     // Queue the request
     std::string reqId = m_scheduler->queueRetrieve(instance, retrieveRequest, *m_log);
+    sp.add("reqId", reqId);
     m_log->log(cta::log::INFO, "Retrieve request for storageClass: " + storageClass
                                + " archiveFileId: " + std::to_string(retrieveRequest.archiveFileID)
-                               + "RequestID: " + reqId);
+                               + " RequestID: " + reqId);
 
     response->set_reqid(reqId);
     return Status::OK;
-- 
GitLab