This is an automated email from the ASF dual-hosted git repository.

kturner pushed a commit to branch 1451-external-compactions-feature
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to 
refs/heads/1451-external-compactions-feature by this push:
     new a69d617  Fix queue summary class
a69d617 is described below

commit a69d6171076244386e7405a1edb39870c4194e93
Author: Keith Turner <ktur...@apache.org>
AuthorDate: Tue Apr 20 10:06:56 2021 -0400

    Fix queue summary class
---
 .../apache/accumulo/coordinator/QueueSummaries.java   | 19 +++++++++++--------
 .../accumulo/coordinator/QueueSummariesTest.java      |  8 ++++++++
 2 files changed, 19 insertions(+), 8 deletions(-)

diff --git 
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/QueueSummaries.java
 
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/QueueSummaries.java
index e1caa8f..0d0fe9a 100644
--- 
a/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/QueueSummaries.java
+++ 
b/server/compaction-coordinator/src/main/java/org/apache/accumulo/coordinator/QueueSummaries.java
@@ -56,16 +56,13 @@ public class QueueSummaries {
     while (iter.hasNext()) {
       Entry<Long,TreeSet<TServerInstance>> next = iter.next();
       if (next.getValue().isEmpty()) {
-        iter.remove();
-      } else {
-        return next;
+        throw new IllegalStateException(
+            "Unexpected empty tserver set for queue " + queue + " and prio " + 
next.getKey());
       }
+      return next;
     }
 
-    QUEUES.remove(queue);
-
-    return null;
-
+    throw new IllegalStateException("Unexpected empty map for queue " + queue);
   }
 
   static class PrioTserver {
@@ -187,7 +184,13 @@ public class QueueSummaries {
         if (null != m) {
           TreeSet<TServerInstance> tservers = m.get(qp.getPriority());
           if (null != tservers) {
-            tservers.remove(tsi);
+            if (tservers.remove(tsi) && tservers.isEmpty()) {
+              m.remove(qp.getPriority());
+            }
+
+            if (m.isEmpty()) {
+              QUEUES.remove(qp.getQueue());
+            }
           }
         }
       });
diff --git 
a/server/compaction-coordinator/src/test/java/org/apache/accumulo/coordinator/QueueSummariesTest.java
 
b/server/compaction-coordinator/src/test/java/org/apache/accumulo/coordinator/QueueSummariesTest.java
index d480a87..88d40ca 100644
--- 
a/server/compaction-coordinator/src/test/java/org/apache/accumulo/coordinator/QueueSummariesTest.java
+++ 
b/server/compaction-coordinator/src/test/java/org/apache/accumulo/coordinator/QueueSummariesTest.java
@@ -180,5 +180,13 @@ public class QueueSummariesTest {
       Assert.assertNull(queueSum.getNextTserver("q2"));
       Assert.assertNull(queueSum.getNextTserver("q3"));
     }
+
+    queueSum.remove(Set.of(ntsi("ts1")));
+
+    for (int i = 0; i < 3; i++) {
+      Assert.assertNull(queueSum.getNextTserver("q1"));
+      Assert.assertNull(queueSum.getNextTserver("q2"));
+      Assert.assertNull(queueSum.getNextTserver("q3"));
+    }
   }
 }

Reply via email to