From afdca78f7c94289f047a27bf1aa9d2295e3115fc Mon Sep 17 00:00:00 2001
From: Eric Cano <Eric.Cano@cern.ch>
Date: Tue, 27 Jun 2017 17:16:32 +0200
Subject: [PATCH] Added a counter for map rebuilds events in ArchiveQueue.

Fixed missing decrement of size total when dequeueing ArchiveRequest.
---
 objectstore/ArchiveQueue.cpp | 4 ++++
 objectstore/cta.proto        | 1 +
 2 files changed, 5 insertions(+)

diff --git a/objectstore/ArchiveQueue.cpp b/objectstore/ArchiveQueue.cpp
index 93f12e6751..70e30cdf6a 100644
--- a/objectstore/ArchiveQueue.cpp
+++ b/objectstore/ArchiveQueue.cpp
@@ -58,6 +58,8 @@ void ArchiveQueue::initialize(const std::string& name) {
   // set the archive jobs counter to zero
   m_payload.set_archivejobstotalsize(0);
   m_payload.set_oldestjobcreationtime(0);
+  // set the initial summary map rebuild count to zero
+  m_payload.set_mapsrebuildcount(0);
   // This object is good to go (to storage)
   m_payloadInterpreted = true;
 }
@@ -79,6 +81,7 @@ void ArchiveQueue::commit() {
       priorityMap.incCount(m_payload.pendingarchivejobs(i).priority());
       minArchiveRequestAgeMap.incCount(m_payload.pendingarchivejobs(i).priority());
     }
+    m_payload.set_mapsrebuildcount(m_payload.mapsrebuildcount()+1);
   }
   ObjectOps<serializers::ArchiveQueue, serializers::ArchiveQueue_t>::commit();
 }
@@ -241,6 +244,7 @@ void ArchiveQueue::removeJob(const std::string& archiveToFileAddress) {
         priorityMap.decCount(jl->Get(i).priority());
         ValueCountMap minArchiveRequestAgeMap(m_payload.mutable_minarchiverequestagemap());
         minArchiveRequestAgeMap.decCount(jl->Get(i).minarchiverequestage());
+        m_payload.set_archivejobstotalsize(m_payload.archivejobstotalsize() - jl->Get(i).size());
         while (i+1 < (size_t)jl->size()) {
           jl->SwapElements(i, i+1);
           i++;
diff --git a/objectstore/cta.proto b/objectstore/cta.proto
index f15999b92b..e074bbc704 100644
--- a/objectstore/cta.proto
+++ b/objectstore/cta.proto
@@ -386,6 +386,7 @@ message ArchiveQueue {
   repeated ValueCountPair maxdrivesallowedmap = 10033;
   required uint64 archivejobstotalsize = 10040;
   required uint64 oldestjobcreationtime = 10050;
+  required uint64 mapsrebuildcount = 10060;
 }
 
 message RetrieveQueue {
-- 
GitLab