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/02 21:37:00 UTC

[12/50] [abbrv] accumulo git commit: ACCUMULO-3167 Get Accumulo3047IT running again.

ACCUMULO-3167 Get Accumulo3047IT running again.

Added another log message to the SimpleGarbageCollector to help in debugging things.


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

Branch: refs/heads/metrics2
Commit: 2f108c9fb956de33981b235b79c77ff24124ccb9
Parents: 3c5b2f4
Author: Josh Elser <el...@apache.org>
Authored: Wed Nov 19 19:37:07 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Mon Nov 24 18:08:17 2014 -0500

----------------------------------------------------------------------
 .../accumulo/gc/SimpleGarbageCollector.java     |  1 +
 .../apache/accumulo/test/Accumulo3047IT.java    | 54 +++++++++++++++++++-
 2 files changed, 53 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/2f108c9f/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
----------------------------------------------------------------------
diff --git a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
index 55548e3..8d8cc42 100644
--- a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
+++ b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
@@ -515,6 +515,7 @@ public class SimpleGarbageCollector implements Iface {
 
     // Sleep for an initial period, giving the master time to start up and
     // old data files to be unused
+    log.info("Trying to acquire ZooKeeper lock for garbage collector");
 
     try {
       getZooLock(startStatsService());

http://git-wip-us.apache.org/repos/asf/accumulo/blob/2f108c9f/test/src/test/java/org/apache/accumulo/test/Accumulo3047IT.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/Accumulo3047IT.java b/test/src/test/java/org/apache/accumulo/test/Accumulo3047IT.java
index 848c51a..cc12668 100644
--- a/test/src/test/java/org/apache/accumulo/test/Accumulo3047IT.java
+++ b/test/src/test/java/org/apache/accumulo/test/Accumulo3047IT.java
@@ -21,7 +21,9 @@ import java.util.Map.Entry;
 import java.util.SortedSet;
 import java.util.TreeSet;
 
+import org.apache.accumulo.core.Constants;
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.Instance;
 import org.apache.accumulo.core.client.Scanner;
 import org.apache.accumulo.core.client.admin.InstanceOperations;
 import org.apache.accumulo.core.conf.Property;
@@ -31,6 +33,9 @@ import org.apache.accumulo.core.metadata.MetadataTable;
 import org.apache.accumulo.core.metadata.schema.MetadataSchema;
 import org.apache.accumulo.core.security.Authorizations;
 import org.apache.accumulo.core.util.UtilWaitThread;
+import org.apache.accumulo.core.zookeeper.ZooUtil;
+import org.apache.accumulo.fate.zookeeper.ZooCache;
+import org.apache.accumulo.fate.zookeeper.ZooLock;
 import org.apache.accumulo.harness.AccumuloClusterIT;
 import org.apache.accumulo.minicluster.ServerType;
 import org.apache.accumulo.minicluster.impl.MiniAccumuloConfigImpl;
@@ -78,8 +83,40 @@ public class Accumulo3047IT extends AccumuloClusterIT {
     Map<String,String> config = iops.getSystemConfiguration();
     gcCycleDelay = config.get(Property.GC_CYCLE_DELAY.getKey());
     gcCycleStart = config.get(Property.GC_CYCLE_START.getKey());
+    iops.setProperty(Property.GC_CYCLE_DELAY.getKey(), "1s");
+    iops.setProperty(Property.GC_CYCLE_START.getKey(), "0s");
+    log.info("Restarting garbage collector");
+
     getCluster().getClusterControl().stopAllServers(ServerType.GARBAGE_COLLECTOR);
+
+    Instance instance = getConnector().getInstance();
+    ZooCache zcache = new ZooCache(instance.getZooKeepers(), instance.getZooKeepersSessionTimeOut());
+    zcache.clear();
+    String path = ZooUtil.getRoot(instance) + Constants.ZGC_LOCK;
+    byte[] gcLockData;
+    do {
+      gcLockData = ZooLock.getLockData(zcache, path, null);
+      if (null != gcLockData) {
+        log.info("Waiting for GC ZooKeeper lock to expire");
+        Thread.sleep(2000);
+      }
+    } while (null != gcLockData);
+
+    log.info("GC lock was lost");
+
     getCluster().getClusterControl().startAllServers(ServerType.GARBAGE_COLLECTOR);
+    log.info("Garbage collector was restarted");
+
+    gcLockData = null;
+    do {
+      gcLockData = ZooLock.getLockData(zcache, path, null);
+      if (null == gcLockData) {
+        log.info("Waiting for GC ZooKeeper lock to be acquired");
+        Thread.sleep(2000);
+      }
+    } while (null == gcLockData);
+
+    log.info("GC lock was acquired");
   }
 
   @After
@@ -91,8 +128,10 @@ public class Accumulo3047IT extends AccumuloClusterIT {
     if (null != gcCycleStart) {
       iops.setProperty(Property.GC_CYCLE_START.getKey(), gcCycleStart);
     }
+    log.info("Restarting garbage collector");
     getCluster().getClusterControl().stopAllServers(ServerType.GARBAGE_COLLECTOR);
     getCluster().getClusterControl().startAllServers(ServerType.GARBAGE_COLLECTOR);
+    log.info("Garbage collector was restarted");
   }
 
   @Test
@@ -100,7 +139,11 @@ public class Accumulo3047IT extends AccumuloClusterIT {
     // make a table
     String tableName = getUniqueNames(1)[0];
     Connector c = getConnector();
+    log.info("Creating table to be deleted");
     c.tableOperations().create(tableName);
+    final String tableId = c.tableOperations().tableIdMap().get(tableName);
+    Assert.assertNotNull("Expected to find a tableId", tableId);
+
     // add some splits
     SortedSet<Text> splits = new TreeSet<Text>();
     for (int i = 0; i < 10; i++) {
@@ -111,13 +154,20 @@ public class Accumulo3047IT extends AccumuloClusterIT {
     c.tableOperations().deleteRows(tableName, null, null);
     // get rid of the table
     c.tableOperations().delete(tableName);
+    log.info("Sleeping to let garbage collector run");
     // let gc run
-    UtilWaitThread.sleep(timeoutFactor * 5 * 1000);
+    UtilWaitThread.sleep(timeoutFactor * 15 * 1000);
+    log.info("Verifying that delete markers were deleted");
     // look for delete markers
     Scanner scanner = c.createScanner(MetadataTable.NAME, Authorizations.EMPTY);
     scanner.setRange(MetadataSchema.DeletesSection.getRange());
     for (Entry<Key,Value> entry : scanner) {
-      Assert.fail(entry.getKey().getRow().toString());
+      String row = entry.getKey().getRow().toString();
+      if (!row.contains("/" + tableId + "/")) {
+        log.info("Ignoring delete entry for a table other than the one we deleted");
+        continue;
+      }
+      Assert.fail("Delete entry should have been deleted by the garbage collector: " + entry.getKey().getRow().toString());
     }
   }