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) {