You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by kt...@apache.org on 2015/06/24 00:38:17 UTC

[2/5] accumulo git commit: ACCUMULO-3141 removed CheckBalance node from RW

ACCUMULO-3141 removed CheckBalance node from RW


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

Branch: refs/heads/master
Commit: 35095474f7ae0b096117313273b57f7a1ed05226
Parents: c3bb4c6
Author: Keith Turner <kt...@apache.org>
Authored: Tue Jun 23 16:31:56 2015 -0400
Committer: Keith Turner <kt...@apache.org>
Committed: Tue Jun 23 16:49:04 2015 -0400

----------------------------------------------------------------------
 .../randomwalk/concurrent/CheckBalance.java     | 109 -------------------
 .../concurrent/ConcurrentFixture.java           |   2 -
 .../randomwalk/conf/modules/Concurrent.xml      |   5 -
 3 files changed, 116 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/35095474/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckBalance.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckBalance.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckBalance.java
deleted file mode 100644
index 6a20bfc..0000000
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/CheckBalance.java
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.accumulo.test.randomwalk.concurrent;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Properties;
-
-import org.apache.accumulo.core.client.Scanner;
-import org.apache.accumulo.core.data.Key;
-import org.apache.accumulo.core.data.Value;
-import org.apache.accumulo.core.metadata.MetadataTable;
-import org.apache.accumulo.core.metadata.schema.MetadataSchema.TabletsSection;
-import org.apache.accumulo.core.security.Authorizations;
-import org.apache.accumulo.test.randomwalk.State;
-import org.apache.accumulo.test.randomwalk.Test;
-
-/**
- *
- */
-public class CheckBalance extends Test {
-
-  static final String LAST_UNBALANCED_TIME = "lastUnbalancedTime";
-  static final String UNBALANCED_COUNT = "unbalancedCount";
-
-  @Override
-  public void visit(State state, Properties props) throws Exception {
-    log.debug("checking balance");
-    Map<String,Long> counts = new HashMap<String,Long>();
-    Scanner scanner = state.getConnector().createScanner(MetadataTable.NAME, Authorizations.EMPTY);
-    scanner.fetchColumnFamily(TabletsSection.CurrentLocationColumnFamily.NAME);
-    for (Entry<Key,Value> entry : scanner) {
-      String location = entry.getKey().getColumnQualifier().toString();
-      Long count = counts.get(location);
-      if (count == null)
-        count = Long.valueOf(0);
-      counts.put(location, count + 1);
-    }
-    double total = 0.;
-    for (Long count : counts.values()) {
-      total += count.longValue();
-    }
-    final double average = total / counts.size();
-    final double sd = stddev(counts.values(), average);
-    log.debug("average " + average + ", standard deviation " + sd);
-
-    // Check for balanced # of tablets on each node
-    double maxDifference = 2.0 * sd;
-    String unbalancedLocation = null;
-    long lastCount = 0L;
-    boolean balanced = true;
-    for (Entry<String,Long> entry : counts.entrySet()) {
-      long thisCount = entry.getValue().longValue();
-      if (Math.abs(thisCount - average) > maxDifference) {
-        balanced = false;
-        log.debug("unbalanced: " + entry.getKey() + " has " + entry.getValue() + " tablets and the average is " + average);
-        unbalancedLocation = entry.getKey();
-        lastCount = thisCount;
-      }
-    }
-
-    // It is expected that the number of tablets will be uneven for short
-    // periods of time. Don't complain unless we've seen it only unbalanced
-    // over a 15 minute period and it's been at least three checks.
-    if (!balanced) {
-      Long last = state.getLong(LAST_UNBALANCED_TIME);
-      if (last != null && System.currentTimeMillis() - last > 15 * 60 * 1000) {
-        Integer count = state.getInteger(UNBALANCED_COUNT);
-        if (count == null)
-          count = Integer.valueOf(0);
-        if (count > 3)
-          throw new Exception("servers are unbalanced! location " + unbalancedLocation + " count " + lastCount + " too far from average " + average);
-        count++;
-        state.set(UNBALANCED_COUNT, count);
-      }
-      if (last == null)
-        state.set(LAST_UNBALANCED_TIME, System.currentTimeMillis());
-    } else {
-      state.remove(LAST_UNBALANCED_TIME);
-      state.remove(UNBALANCED_COUNT);
-    }
-  }
-
-  private static double stddev(Collection<Long> samples, double avg) {
-    int num = samples.size();
-    double sqrtotal = 0.0;
-    for (Long s : samples) {
-      double diff = s.doubleValue() - avg;
-      sqrtotal += diff * diff;
-    }
-    return Math.sqrt(sqrtotal / num);
-  }
-}

http://git-wip-us.apache.org/repos/asf/accumulo/blob/35095474/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java
index e8b6cf4..7963c8b 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/ConcurrentFixture.java
@@ -37,8 +37,6 @@ public class ConcurrentFixture extends Fixture {
 
   @Override
   public void tearDown(State state) throws Exception {
-    state.remove(CheckBalance.LAST_UNBALANCED_TIME);
-    state.remove(CheckBalance.UNBALANCED_COUNT);
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/accumulo/blob/35095474/test/system/randomwalk/conf/modules/Concurrent.xml
----------------------------------------------------------------------
diff --git a/test/system/randomwalk/conf/modules/Concurrent.xml b/test/system/randomwalk/conf/modules/Concurrent.xml
index 96fbbce..f45f244 100644
--- a/test/system/randomwalk/conf/modules/Concurrent.xml
+++ b/test/system/randomwalk/conf/modules/Concurrent.xml
@@ -44,7 +44,6 @@
   <edge id="ct.ChangeAuthorizations" weight="1000"/>
   <edge id="ct.ChangePermissions" weight="1000"/>
   <edge id="ct.CheckPermission" weight="1000"/>
-  <edge id="ct.CheckBalance" weight="1000"/>
   <edge id="ct.StopTabletServer" weight="100"/>
   <edge id="ct.StartAll" weight="1000"/>
   <edge id="ct.Shutdown" weight="10"/>
@@ -142,10 +141,6 @@
   <edge id="dummy.ToAll" weight="1"/>
 </node>
 
-<node id="ct.CheckBalance">
-  <edge id="dummy.ToAll" weight="1"/>
-</node>
-
 <node id="ct.StopTabletServer">
   <edge id="dummy.ToAll" weight="1"/>
 </node>