You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2014/12/19 07:37:26 UTC

[2/5] accumulo git commit: ACCUMULO-3440 Bin assingment log messages

ACCUMULO-3440 Bin assingment log messages

Don't spam log messages about assignments, but
also don't make huge log messages. Nice sized
log messages that are managable.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/c558211e
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/c558211e
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/c558211e

Branch: refs/heads/master
Commit: c558211ea6cfcd38991e9e8a264773e73b0a2af6
Parents: 27d79c2
Author: Josh Elser <el...@apache.org>
Authored: Fri Dec 19 01:18:33 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Fri Dec 19 01:18:33 2014 -0500

----------------------------------------------------------------------
 .../accumulo/master/TabletGroupWatcher.java     | 28 ++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/c558211e/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
----------------------------------------------------------------------
diff --git a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
index f5ed941..72a96bd 100644
--- a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
+++ b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
@@ -87,7 +87,10 @@ import org.apache.thrift.TException;
 import com.google.common.collect.Iterators;
 
 class TabletGroupWatcher extends Daemon {
-  
+  // Constants used to make sure assignment logging isn't excessive in quantity or size
+  private static final String ASSIGNMENT_BUFFER_SEPARATOR = ", ";
+  private static final int ASSINGMENT_BUFFER_MAX_LENGTH = 4096;
+
   private final Master master;
   final TabletStateStore store;
   final TabletGroupWatcher dependentWatcher;
@@ -722,6 +725,7 @@ class TabletGroupWatcher extends Daemon {
     
     if (!currentTServers.isEmpty()) {
       Map<KeyExtent,TServerInstance> assignedOut = new HashMap<KeyExtent,TServerInstance>();
+      final StringBuilder builder = new StringBuilder(64);
       this.master.tabletBalancer.getAssignments(Collections.unmodifiableSortedMap(currentTServers), Collections.unmodifiableMap(unassigned), assignedOut);
       for (Entry<KeyExtent,TServerInstance> assignment : assignedOut.entrySet()) {
         if (unassigned.containsKey(assignment.getKey())) {
@@ -730,13 +734,33 @@ class TabletGroupWatcher extends Daemon {
               Master.log.warn("balancer assigned " + assignment.getKey() + " to a tablet server that is not current " + assignment.getValue() + " ignoring");
               continue;
             }
-            Master.log.debug(store.name() + " assigning tablet " + assignment);
+
+            if (builder.length() > 0) {
+              builder.append(ASSIGNMENT_BUFFER_SEPARATOR);
+            }
+
+            builder.append(assignment);
+
+            // Don't let the log message get too gigantic
+            if (builder.length() > ASSINGMENT_BUFFER_MAX_LENGTH) {
+              builder.append("]");
+              Master.log.debug(store.name() + " assigning tablets: [" + builder.toString());
+              builder.setLength(0);
+            }
+
             assignments.add(new Assignment(assignment.getKey(), assignment.getValue()));
           }
         } else {
           Master.log.warn(store.name() + " load balancer assigning tablet that was not nominated for assignment " + assignment.getKey());
         }
       }
+
+      if (builder.length() > 0) {
+        // Make sure to log any leftover assignments
+        builder.append("]");
+        Master.log.debug(store.name() + " assigning tablets: [" + builder.toString());
+      }
+
       if (!unassigned.isEmpty() && assignedOut.isEmpty())
         Master.log.warn("Load balancer failed to assign any tablets");
     }