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>