You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2015/02/02 23:53:02 UTC
[1/2] accumulo git commit: ACCUMULO-3549 periodically clear the
locator cache
Repository: accumulo
Updated Branches:
refs/heads/1.6 a88299fbf -> c5d2bd54a
ACCUMULO-3549 periodically clear the locator cache
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/ed12e1f3
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/ed12e1f3
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/ed12e1f3
Branch: refs/heads/1.6
Commit: ed12e1f380736f3fcb897b95561ef94eba075aee
Parents: a88299f
Author: Eric C. Newton <er...@gmail.com>
Authored: Fri Jan 30 18:01:05 2015 -0500
Committer: Eric C. Newton <er...@gmail.com>
Committed: Fri Jan 30 19:31:49 2015 -0500
----------------------------------------------------------------------
.../apache/accumulo/tserver/TabletServer.java | 25 ++++++++++++++++++++
1 file changed, 25 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/ed12e1f3/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index dfec999..948d0f0 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -38,6 +38,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.Random;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
@@ -64,11 +65,13 @@ import javax.management.StandardMBean;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
+import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.impl.CompressedIterators;
import org.apache.accumulo.core.client.impl.CompressedIterators.IterConfig;
import org.apache.accumulo.core.client.impl.ScannerImpl;
import org.apache.accumulo.core.client.impl.Tables;
+import org.apache.accumulo.core.client.impl.TabletLocator;
import org.apache.accumulo.core.client.impl.TabletType;
import org.apache.accumulo.core.client.impl.Translator;
import org.apache.accumulo.core.client.impl.Translator.TKeyExtentTranslator;
@@ -252,6 +255,7 @@ public class TabletServer extends AbstractMetricsImpl implements org.apache.accu
private static final long MAX_TIME_TO_WAIT_FOR_SCAN_RESULT_MILLIS = 1000;
private static final long RECENTLY_SPLIT_MILLIES = 60 * 1000;
private static final long TIME_BETWEEN_GC_CHECKS = 5000;
+ private static final long TIME_BETWEEN_LOCATOR_CACHE_CLEARS = 60 * 60 * 1000;
private TabletServerLogger logger;
@@ -280,6 +284,27 @@ public class TabletServer extends AbstractMetricsImpl implements org.apache.accu
}
}
}, TIME_BETWEEN_GC_CHECKS, TIME_BETWEEN_GC_CHECKS);
+ SimpleTimer.getInstance().schedule(new Runnable() {
+ @Override
+ public void run() {
+ try {
+ SystemCredentials creds = SystemCredentials.get();
+ Connector connector = instance.getConnector(creds.getPrincipal(), creds.getToken());
+ for (String id : connector.tableOperations().tableIdMap().values()) {
+ TabletLocator locator = TabletLocator.getLocator(instance, new Text(id));
+ locator.invalidateCache();
+ }
+ } catch (Exception ex) {
+ log.error("Error clearing locator cache, ignoring", ex);
+ }
+ }
+ }, jitter(TIME_BETWEEN_LOCATOR_CACHE_CLEARS), jitter(TIME_BETWEEN_LOCATOR_CACHE_CLEARS));
+ }
+
+ private static long jitter(long ms) {
+ Random r = new Random();
+ // add a random 10% wait
+ return (long)(1. + (r.nextDouble() / 10) * ms);
}
private synchronized static void logGCInfo(AccumuloConfiguration conf) {
[2/2] accumulo git commit: ACCUMULO-3549 updated with [~kturner]'s
comments
Posted by ec...@apache.org.
ACCUMULO-3549 updated with [~kturner]'s comments
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/c5d2bd54
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/c5d2bd54
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/c5d2bd54
Branch: refs/heads/1.6
Commit: c5d2bd54a961ce59946304c6d440b42caa9bdbbb
Parents: ed12e1f
Author: Eric C. Newton <er...@gmail.com>
Authored: Mon Feb 2 17:37:17 2015 -0500
Committer: Eric C. Newton <er...@gmail.com>
Committed: Mon Feb 2 17:37:17 2015 -0500
----------------------------------------------------------------------
.../accumulo/core/client/impl/TabletLocator.java | 4 ++++
.../org/apache/accumulo/tserver/TabletServer.java | 14 ++------------
2 files changed, 6 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/c5d2bd54/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
index 1d35af0..5f30ddc 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/TabletLocator.java
@@ -92,6 +92,10 @@ public abstract class TabletLocator {
private static HashMap<LocatorKey,TabletLocator> locators = new HashMap<LocatorKey,TabletLocator>();
+ public static synchronized void clearLocators() {
+ locators.clear();
+ }
+
public static synchronized TabletLocator getLocator(Instance instance, Text tableId) {
LocatorKey key = new LocatorKey(instance.getInstanceID(), tableId);
http://git-wip-us.apache.org/repos/asf/accumulo/blob/c5d2bd54/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 948d0f0..dbececd 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -65,7 +65,6 @@ import javax.management.StandardMBean;
import org.apache.accumulo.core.Constants;
import org.apache.accumulo.core.client.AccumuloException;
import org.apache.accumulo.core.client.AccumuloSecurityException;
-import org.apache.accumulo.core.client.Connector;
import org.apache.accumulo.core.client.Instance;
import org.apache.accumulo.core.client.impl.CompressedIterators;
import org.apache.accumulo.core.client.impl.CompressedIterators.IterConfig;
@@ -287,16 +286,7 @@ public class TabletServer extends AbstractMetricsImpl implements org.apache.accu
SimpleTimer.getInstance().schedule(new Runnable() {
@Override
public void run() {
- try {
- SystemCredentials creds = SystemCredentials.get();
- Connector connector = instance.getConnector(creds.getPrincipal(), creds.getToken());
- for (String id : connector.tableOperations().tableIdMap().values()) {
- TabletLocator locator = TabletLocator.getLocator(instance, new Text(id));
- locator.invalidateCache();
- }
- } catch (Exception ex) {
- log.error("Error clearing locator cache, ignoring", ex);
- }
+ TabletLocator.clearLocators();
}
}, jitter(TIME_BETWEEN_LOCATOR_CACHE_CLEARS), jitter(TIME_BETWEEN_LOCATOR_CACHE_CLEARS));
}
@@ -304,7 +294,7 @@ public class TabletServer extends AbstractMetricsImpl implements org.apache.accu
private static long jitter(long ms) {
Random r = new Random();
// add a random 10% wait
- return (long)(1. + (r.nextDouble() / 10) * ms);
+ return (long)((1. + (r.nextDouble() / 10)) * ms);
}
private synchronized static void logGCInfo(AccumuloConfiguration conf) {