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 2013/12/24 07:18:35 UTC

[1/7] git commit: ACCUMULO-2082 Add in some better logging for the randomwalk Bulk tests.

Updated Branches:
  refs/heads/master 2d8a2ecb8 -> 00bcb0cb0


ACCUMULO-2082 Add in some better logging for the randomwalk Bulk tests.


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

Branch: refs/heads/master
Commit: 92bd40c6ee5ce095321d5e876591874abc0b462e
Parents: 3aace98
Author: Josh Elser <el...@apache.org>
Authored: Mon Dec 23 19:55:54 2013 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Mon Dec 23 19:55:54 2013 -0500

----------------------------------------------------------------------
 .../java/org/apache/accumulo/test/randomwalk/bulk/Compact.java | 6 ++++--
 .../java/org/apache/accumulo/test/randomwalk/bulk/Split.java   | 1 +
 2 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/92bd40c6/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java
index fb2e23e..86dae5c 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Compact.java
@@ -23,9 +23,11 @@ public class Compact extends BulkTest {
   
   @Override
   protected void runLater(State state) throws Exception {
-    Text[] points = Merge.getRandomTabletRange(state);
-    log.info("Compacting " + Merge.rangeToString(points));
+    final Text[] points = Merge.getRandomTabletRange(state);
+    final String rangeString = Merge.rangeToString(points);
+    log.info("Compacting " + rangeString);
     state.getConnector().tableOperations().compact(Setup.getTableName(), points[0], points[1], false, true);
+    log.info("Compaction " + rangeString + " finished");
   }
   
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/92bd40c6/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java
index bbad74a..157e2ab 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/bulk/Split.java
@@ -34,6 +34,7 @@ public class Split extends BulkTest {
       splits.add(new Text(String.format(BulkPlusOne.FMT, (rand.nextLong() & 0x7fffffffffffffffl) % BulkPlusOne.LOTS)));
     log.info("splitting " + splits);
     state.getConnector().tableOperations().addSplits(Setup.getTableName(), splits);
+    log.info("split for " + splits + " finished");
   }
   
 }


[3/7] git commit: ACCUMULO-2087 Check for the null result from zk and throw something slightly more meaningful.

Posted by kt...@apache.org.
ACCUMULO-2087 Check for the null result from zk and throw something slightly more meaningful.


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

Branch: refs/heads/master
Commit: 744f06bfbf23f1cf3f8b0f8b785decd04e69842f
Parents: e8c9aae
Author: Josh Elser <el...@apache.org>
Authored: Mon Dec 23 22:51:32 2013 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Mon Dec 23 22:51:32 2013 -0500

----------------------------------------------------------------------
 .../apache/accumulo/core/client/impl/Tables.java  | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/744f06bf/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
index 45db491..ba11f1e 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
@@ -30,6 +30,7 @@ import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.core.client.TableNotFoundException;
 import org.apache.accumulo.core.master.state.tables.TableState;
 import org.apache.accumulo.core.metadata.MetadataTable;
+import org.apache.accumulo.core.util.ArgumentChecker;
 import org.apache.accumulo.core.util.Pair;
 import org.apache.accumulo.core.zookeeper.ZooUtil;
 import org.apache.accumulo.fate.zookeeper.ZooCache;
@@ -195,9 +196,24 @@ public class Tables {
     return new Pair<String,String>(defaultNamespace, tableName);
   }
 
-  public static String getNamespace(Instance instance, String tableId) {
+  /**
+   * Returns the namespace for a given table ID.
+   * @param instance The Accumulo Instance
+   * @param tableId The tableId
+   * @return The namespace which this table resides in.
+   * @throws IllegalArgumentException if the table doesn't exist in ZooKeeper
+   */
+  public static String getNamespace(Instance instance, String tableId) throws IllegalArgumentException {
+    ArgumentChecker.notNull(instance, tableId);
+    
     ZooCache zc = getZooCache(instance);
     byte[] n = zc.get(ZooUtil.getRoot(instance) + Constants.ZTABLES + "/" + tableId + Constants.ZTABLE_NAMESPACE);
+    
+    // We might get null out of ZooCache if this tableID doesn't exist
+    if (null == n) {
+      throw new IllegalArgumentException("Table with id " + tableId + " does not exist");
+    }
+    
     return new String(n, Constants.UTF8);
   }
 }


[5/7] git commit: ACCUMULO-2087 ACCUMULO-2086 Fixing formatting.

Posted by kt...@apache.org.
ACCUMULO-2087 ACCUMULO-2086 Fixing formatting.


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

Branch: refs/heads/master
Commit: 0d294ad64ed5a12c44e1c33bc5561897e3aef512
Parents: 31f4fbf
Author: Josh Elser <el...@apache.org>
Authored: Mon Dec 23 23:55:35 2013 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Mon Dec 23 23:55:35 2013 -0500

----------------------------------------------------------------------
 .../accumulo/core/client/impl/Tables.java       | 16 ++++++-----
 .../test/randomwalk/security/TableOp.java       | 28 ++++++++++----------
 2 files changed, 24 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/0d294ad6/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
index ba11f1e..7cf5ccc 100644
--- a/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
+++ b/core/src/main/java/org/apache/accumulo/core/client/impl/Tables.java
@@ -198,22 +198,26 @@ public class Tables {
 
   /**
    * Returns the namespace for a given table ID.
-   * @param instance The Accumulo Instance
-   * @param tableId The tableId
+   * 
+   * @param instance
+   *          The Accumulo Instance
+   * @param tableId
+   *          The tableId
    * @return The namespace which this table resides in.
-   * @throws IllegalArgumentException if the table doesn't exist in ZooKeeper
+   * @throws IllegalArgumentException
+   *           if the table doesn't exist in ZooKeeper
    */
   public static String getNamespace(Instance instance, String tableId) throws IllegalArgumentException {
     ArgumentChecker.notNull(instance, tableId);
-    
+
     ZooCache zc = getZooCache(instance);
     byte[] n = zc.get(ZooUtil.getRoot(instance) + Constants.ZTABLES + "/" + tableId + Constants.ZTABLE_NAMESPACE);
-    
+
     // We might get null out of ZooCache if this tableID doesn't exist
     if (null == n) {
       throw new IllegalArgumentException("Table with id " + tableId + " does not exist");
     }
-    
+
     return new String(n, Constants.UTF8);
   }
 }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/0d294ad6/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
index 0215365..347be89 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
@@ -50,11 +50,11 @@ import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.io.Text;
 
 public class TableOp extends Test {
-  
+
   @Override
   public void visit(State state, Properties props) throws Exception {
     Connector conn = state.getInstance().getConnector(WalkingSecurity.get(state).getTabUserName(), WalkingSecurity.get(state).getTabToken());
-    
+
     String action = props.getProperty("action", "_random");
     TablePermission tp;
     if ("_random".equalsIgnoreCase(action)) {
@@ -63,23 +63,23 @@ public class TableOp extends Test {
     } else {
       tp = TablePermission.valueOf(action);
     }
-    
+
     final boolean tableExists = WalkingSecurity.get(state).getTableExists();
     final String tableName = WalkingSecurity.get(state).getTableName();
     final String tableId = conn.tableOperations().tableIdMap().get(tableName);
-    
+
     if (null == tableId) {
       log.error("Could not determine tableID from name " + tableName);
       return;
     }
-    
+
     switch (tp) {
       case READ: {
         boolean canRead = WalkingSecurity.get(state).canScan(WalkingSecurity.get(state).getTabCredentials(), tableId);
         Authorizations auths = WalkingSecurity.get(state).getUserAuthorizations(WalkingSecurity.get(state).getTabCredentials());
         boolean ambiguousZone = WalkingSecurity.get(state).inAmbiguousZone(conn.whoami(), tp);
         boolean ambiguousAuths = WalkingSecurity.get(state).ambiguousAuthorizations(conn.whoami());
-        
+
         Scanner scan = null;
         try {
           scan = conn.createScanner(tableName, conn.securityOperations().getUserAuthorizations(conn.whoami()));
@@ -133,22 +133,22 @@ public class TableOp extends Test {
             else
               throw new AccumuloException("Mismatched authorizations! ", re.getCause());
           }
-          
+
           throw new AccumuloException("Unexpected exception!", re);
         } finally {
           if (scan != null) {
             scan.close();
             scan = null;
           }
-          
+
         }
-        
+
         break;
       }
       case WRITE:
         boolean canWrite = WalkingSecurity.get(state).canWrite(WalkingSecurity.get(state).getTabCredentials(), tableId);
         boolean ambiguousZone = WalkingSecurity.get(state).inAmbiguousZone(conn.whoami(), tp);
-        
+
         String key = WalkingSecurity.get(state).getLastKey() + "1";
         Mutation m = new Mutation(new Text(key));
         for (String s : WalkingSecurity.get(state).getAuthsArray()) {
@@ -172,7 +172,7 @@ public class TableOp extends Test {
             // For now, just wait a second and go again if they can write!
             if (!canWrite)
               return;
-            
+
             if (ambiguousZone) {
               Thread.sleep(1000);
               try {
@@ -233,7 +233,7 @@ public class TableOp extends Test {
           WalkingSecurity.get(state).increaseAuthMap(s, 1);
         fs.delete(dir, true);
         fs.delete(fail, true);
-        
+
         if (!WalkingSecurity.get(state).canBulkImport(WalkingSecurity.get(state).getTabCredentials(), tableId))
           throw new AccumuloException("Bulk Import succeeded when it should have failed: " + dir + " table " + tableName);
         break;
@@ -241,7 +241,7 @@ public class TableOp extends Test {
         AlterTable.renameTable(conn, state, tableName, tableName + "plus",
             WalkingSecurity.get(state).canAlterTable(WalkingSecurity.get(state).getTabCredentials(), tableId), tableExists);
         break;
-      
+
       case GRANT:
         props.setProperty("task", "grant");
         props.setProperty("perm", "random");
@@ -249,7 +249,7 @@ public class TableOp extends Test {
         props.setProperty("target", "system");
         AlterTablePerm.alter(state, props);
         break;
-      
+
       case DROP_TABLE:
         props.setProperty("source", "table");
         DropTable.dropTable(state, props);


[2/7] git commit: ACCUMULO-2086 Use the tableID instead of the tableName where necessary.

Posted by kt...@apache.org.
ACCUMULO-2086 Use the tableID instead of the tableName where necessary.


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

Branch: refs/heads/master
Commit: e8c9aae904380f22e55a31e3a7422ecd4597b0b0
Parents: 92bd40c
Author: Josh Elser <el...@apache.org>
Authored: Mon Dec 23 20:39:31 2013 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Mon Dec 23 20:39:31 2013 -0500

----------------------------------------------------------------------
 .../test/randomwalk/security/TableOp.java       | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/e8c9aae9/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
index a636355..0215365 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/security/TableOp.java
@@ -64,12 +64,18 @@ public class TableOp extends Test {
       tp = TablePermission.valueOf(action);
     }
     
-    boolean tableExists = WalkingSecurity.get(state).getTableExists();
-    String tableName = WalkingSecurity.get(state).getTableName();
+    final boolean tableExists = WalkingSecurity.get(state).getTableExists();
+    final String tableName = WalkingSecurity.get(state).getTableName();
+    final String tableId = conn.tableOperations().tableIdMap().get(tableName);
+    
+    if (null == tableId) {
+      log.error("Could not determine tableID from name " + tableName);
+      return;
+    }
     
     switch (tp) {
       case READ: {
-        boolean canRead = WalkingSecurity.get(state).canScan(WalkingSecurity.get(state).getTabCredentials(), tableName);
+        boolean canRead = WalkingSecurity.get(state).canScan(WalkingSecurity.get(state).getTabCredentials(), tableId);
         Authorizations auths = WalkingSecurity.get(state).getUserAuthorizations(WalkingSecurity.get(state).getTabCredentials());
         boolean ambiguousZone = WalkingSecurity.get(state).inAmbiguousZone(conn.whoami(), tp);
         boolean ambiguousAuths = WalkingSecurity.get(state).ambiguousAuthorizations(conn.whoami());
@@ -140,7 +146,7 @@ public class TableOp extends Test {
         break;
       }
       case WRITE:
-        boolean canWrite = WalkingSecurity.get(state).canWrite(WalkingSecurity.get(state).getTabCredentials(), tableName);
+        boolean canWrite = WalkingSecurity.get(state).canWrite(WalkingSecurity.get(state).getTabCredentials(), tableId);
         boolean ambiguousZone = WalkingSecurity.get(state).inAmbiguousZone(conn.whoami(), tp);
         
         String key = WalkingSecurity.get(state).getLastKey() + "1";
@@ -214,7 +220,7 @@ public class TableOp extends Test {
           return;
         } catch (AccumuloSecurityException ae) {
           if (ae.getSecurityErrorCode().equals(SecurityErrorCode.PERMISSION_DENIED)) {
-            if (WalkingSecurity.get(state).canBulkImport(WalkingSecurity.get(state).getTabCredentials(), tableName))
+            if (WalkingSecurity.get(state).canBulkImport(WalkingSecurity.get(state).getTabCredentials(), tableId))
               throw new AccumuloException("Bulk Import failed when it should have worked: " + tableName);
             return;
           } else if (ae.getSecurityErrorCode().equals(SecurityErrorCode.BAD_CREDENTIALS)) {
@@ -228,12 +234,12 @@ public class TableOp extends Test {
         fs.delete(dir, true);
         fs.delete(fail, true);
         
-        if (!WalkingSecurity.get(state).canBulkImport(WalkingSecurity.get(state).getTabCredentials(), tableName))
+        if (!WalkingSecurity.get(state).canBulkImport(WalkingSecurity.get(state).getTabCredentials(), tableId))
           throw new AccumuloException("Bulk Import succeeded when it should have failed: " + dir + " table " + tableName);
         break;
       case ALTER_TABLE:
         AlterTable.renameTable(conn, state, tableName, tableName + "plus",
-            WalkingSecurity.get(state).canAlterTable(WalkingSecurity.get(state).getTabCredentials(), tableName), tableExists);
+            WalkingSecurity.get(state).canAlterTable(WalkingSecurity.get(state).getTabCredentials(), tableId), tableExists);
         break;
       
       case GRANT:


[4/7] git commit: ACCUMULO-2085 Also catch NamespaceNotEmptyException when deleting a namespace.

Posted by kt...@apache.org.
ACCUMULO-2085 Also catch NamespaceNotEmptyException when deleting a namespace.


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

Branch: refs/heads/master
Commit: 31f4fbf791935270d1e8094cc539f5eb1932ef92
Parents: 744f06b
Author: Josh Elser <el...@apache.org>
Authored: Mon Dec 23 22:59:16 2013 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Mon Dec 23 22:59:16 2013 -0500

----------------------------------------------------------------------
 .../accumulo/test/randomwalk/concurrent/DeleteNamespace.java      | 3 +++
 1 file changed, 3 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/31f4fbf7/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java
----------------------------------------------------------------------
diff --git a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java
index c31e6b5..333af3d 100644
--- a/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java
+++ b/test/src/main/java/org/apache/accumulo/test/randomwalk/concurrent/DeleteNamespace.java
@@ -21,6 +21,7 @@ import java.util.Properties;
 import java.util.Random;
 
 import org.apache.accumulo.core.client.Connector;
+import org.apache.accumulo.core.client.NamespaceNotEmptyException;
 import org.apache.accumulo.core.client.NamespaceNotFoundException;
 import org.apache.accumulo.test.randomwalk.State;
 import org.apache.accumulo.test.randomwalk.Test;
@@ -43,6 +44,8 @@ public class DeleteNamespace extends Test {
       log.debug("Deleted namespace " + namespace);
     } catch (NamespaceNotFoundException e) {
       log.debug("Delete namespace " + namespace + " failed, doesnt exist");
+    } catch (NamespaceNotEmptyException e) {
+      log.debug("Delete namespace " + namespace + " failed, not empty");
     }
   }
 }


[6/7] git commit: ACCUMULO-2082 fixed bug that allowed multiple threads to attempt to compact a single tablet

Posted by kt...@apache.org.
ACCUMULO-2082 fixed bug that allowed multiple threads to attempt to compact a single tablet


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

Branch: refs/heads/master
Commit: db746960fbcafb1651c15ec2e5493d56acb5065c
Parents: 0d294ad
Author: Keith Turner <kt...@apache.org>
Authored: Tue Dec 24 01:13:06 2013 -0500
Committer: Keith Turner <kt...@apache.org>
Committed: Tue Dec 24 01:16:59 2013 -0500

----------------------------------------------------------------------
 .../org/apache/accumulo/tserver/Tablet.java     | 51 +++++++++++---------
 1 file changed, 27 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/db746960/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java
----------------------------------------------------------------------
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java
index f0fb524..3c62a86 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java
@@ -3368,32 +3368,35 @@ public class Tablet {
         majorCompactionInProgress = true;
       }
 
-      majCStats = _majorCompact(reason);
-      if (reason == MajorCompactionReason.CHOP) {
-        MetadataTableUtil.chopped(getExtent(), this.tabletServer.getLock());
-        tabletServer.enqueueMasterMessage(new TabletStatusMessage(TabletLoadState.CHOPPED, extent));
-      }
-    } catch (CompactionCanceledException mcce) {
-      log.debug("Major compaction canceled, extent = " + getExtent());
-      throw new RuntimeException(mcce);
-    } catch (Throwable t) {
-      log.error("MajC Failed, extent = " + getExtent());
-      log.error("MajC Failed, message = " + (t.getMessage() == null ? t.getClass().getName() : t.getMessage()), t);
-      throw new RuntimeException(t);
-    } finally {
-      // ensure we always reset boolean, even
-      // when an exception is thrown
-      synchronized (this) {
-        majorCompactionInProgress = false;
-        this.notifyAll();
-      }
+      try {
+        majCStats = _majorCompact(reason);
+        if (reason == MajorCompactionReason.CHOP) {
+          MetadataTableUtil.chopped(getExtent(), this.tabletServer.getLock());
+          tabletServer.enqueueMasterMessage(new TabletStatusMessage(TabletLoadState.CHOPPED, extent));
+        }
+      } catch (CompactionCanceledException mcce) {
+        log.debug("Major compaction canceled, extent = " + getExtent());
+        throw new RuntimeException(mcce);
+      } catch (Throwable t) {
+        log.error("MajC Failed, extent = " + getExtent());
+        log.error("MajC Failed, message = " + (t.getMessage() == null ? t.getClass().getName() : t.getMessage()), t);
+        throw new RuntimeException(t);
+      } finally {
+        // ensure we always reset boolean, even
+        // when an exception is thrown
+        synchronized (this) {
+          majorCompactionInProgress = false;
+          this.notifyAll();
+        }
 
-      Span curr = Trace.currentTrace();
-      curr.data("extent", "" + getExtent());
-      if (majCStats != null) {
-        curr.data("read", "" + majCStats.getEntriesRead());
-        curr.data("written", "" + majCStats.getEntriesWritten());
+        Span curr = Trace.currentTrace();
+        curr.data("extent", "" + getExtent());
+        if (majCStats != null) {
+          curr.data("read", "" + majCStats.getEntriesRead());
+          curr.data("written", "" + majCStats.getEntriesWritten());
+        }
       }
+    } finally {
       span.stop();
     }
 


[7/7] git commit: Merge remote-tracking branch 'origin/1.6.0-SNAPSHOT'

Posted by kt...@apache.org.
Merge remote-tracking branch 'origin/1.6.0-SNAPSHOT'


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

Branch: refs/heads/master
Commit: 00bcb0cb0293f4902aecd7eba5bd4d6f121f9f60
Parents: 2d8a2ec db74696
Author: Keith Turner <kt...@apache.org>
Authored: Tue Dec 24 01:19:13 2013 -0500
Committer: Keith Turner <kt...@apache.org>
Committed: Tue Dec 24 01:19:13 2013 -0500

----------------------------------------------------------------------
 .../accumulo/core/client/impl/Tables.java       | 22 ++++++++-
 .../org/apache/accumulo/tserver/Tablet.java     | 51 +++++++++++---------
 .../accumulo/test/randomwalk/bulk/Compact.java  |  6 ++-
 .../accumulo/test/randomwalk/bulk/Split.java    |  1 +
 .../randomwalk/concurrent/DeleteNamespace.java  |  3 ++
 .../test/randomwalk/security/TableOp.java       | 46 ++++++++++--------
 6 files changed, 82 insertions(+), 47 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/00bcb0cb/server/tserver/src/main/java/org/apache/accumulo/tserver/Tablet.java
----------------------------------------------------------------------