You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2015/02/13 00:39:27 UTC

[04/11] accumulo git commit: ACCUMULO-3583 Always return information about merges

ACCUMULO-3583 Always return information about merges

Fix broken tests and ensure that TabletStateChangeIterator always returns
tablets for tables involved in merges.


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

Branch: refs/heads/1.6
Commit: e5086f90863f21787b66dcb82b900ca14144900a
Parents: 958f264
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Feb 12 17:00:37 2015 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Feb 12 17:00:37 2015 -0500

----------------------------------------------------------------------
 .../server/master/state/TabletStateChangeIterator.java    |  4 +++-
 .../org/apache/accumulo/server/master/TestMergeState.java |  7 +++----
 .../java/org/apache/accumulo/test/ShellServerTest.java    | 10 ++++++++--
 3 files changed, 14 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/e5086f90/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
----------------------------------------------------------------------
diff --git a/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java b/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
index b11809c..a3402df 100644
--- a/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
+++ b/server/src/main/java/org/apache/accumulo/server/master/state/TabletStateChangeIterator.java
@@ -129,9 +129,11 @@ public class TabletStateChangeIterator extends SkippingIterator {
       }
       // we always want data about merges
       MergeInfo merge = merges.get(tls.extent.getTableId());
-      if (merge != null && merge.getRange() != null && merge.getRange().overlaps(tls.extent)) {
+      if (merge != null) {
+        // could make this smarter by only returning if the tablet is involved in the merge
         return;
       }
+
       // is the table supposed to be online or offline?
       boolean shouldBeOnline = onlineTables.contains(tls.extent.getTableId().toString());
 

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e5086f90/server/src/test/java/org/apache/accumulo/server/master/TestMergeState.java
----------------------------------------------------------------------
diff --git a/server/src/test/java/org/apache/accumulo/server/master/TestMergeState.java b/server/src/test/java/org/apache/accumulo/server/master/TestMergeState.java
index 3c0fae3..bb6294b 100644
--- a/server/src/test/java/org/apache/accumulo/server/master/TestMergeState.java
+++ b/server/src/test/java/org/apache/accumulo/server/master/TestMergeState.java
@@ -45,7 +45,6 @@ import org.apache.accumulo.server.master.state.MergeStats;
 import org.apache.accumulo.server.master.state.MetaDataStateStore;
 import org.apache.accumulo.server.master.state.TServerInstance;
 import org.apache.accumulo.server.master.state.TabletLocationState;
-import org.apache.accumulo.server.master.state.TabletState;
 import org.apache.hadoop.io.Text;
 import org.junit.Assert;
 import org.junit.Test;
@@ -119,10 +118,10 @@ public class TestMergeState {
     MetaDataStateStore metaDataStateStore = new MetaDataStateStore(instance, auths, state);
     int count = 0;
     for (TabletLocationState tss : metaDataStateStore) {
-      Assert.assertEquals(TabletState.HOSTED, tss.getState(state.onlineTabletServers()));
-      count++;
+      if (tss != null)
+        count++;
     }
-    Assert.assertEquals(splits.length + 1, count);
+    Assert.assertEquals(0, count); // the normal case is to skip tablets in a good state
 
     // Create the hole
     // Split the tablet at one end of the range

http://git-wip-us.apache.org/repos/asf/accumulo/blob/e5086f90/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java
----------------------------------------------------------------------
diff --git a/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java b/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java
index 1dfb5ae..aaa2f55 100644
--- a/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java
+++ b/test/src/test/java/org/apache/accumulo/test/ShellServerTest.java
@@ -100,6 +100,7 @@ public class ShellServerTest {
   private static class NoOpErrorMessageCallback extends ErrorMessageCallback {
     private static final String empty = "";
 
+    @Override
     public String getErrorMessage() {
       return empty;
     }
@@ -108,7 +109,8 @@ public class ShellServerTest {
   private static final NoOpErrorMessageCallback noop = new NoOpErrorMessageCallback();
 
   private static String secret = "superSecret";
-  public static TemporaryFolder folder = new TemporaryFolder();
+  private static File baseDir = new File(System.getProperty("user.dir") + File.separator + "target" + File.separator + ShellServerTest.class.getName());
+  public static TemporaryFolder folder;
   public static MiniAccumuloCluster cluster;
   public TestOutputStream output;
   public Shell shell;
@@ -182,6 +184,8 @@ public class ShellServerTest {
 
   @BeforeClass
   public static void setUpBeforeClass() throws Exception {
+    baseDir.mkdirs();
+    folder = new TemporaryFolder(baseDir);
     folder.create();
     MiniAccumuloConfig cfg = new MiniAccumuloConfig(folder.newFolder("miniAccumulo"), secret);
     cluster = new MiniAccumuloCluster(cfg);
@@ -215,7 +219,6 @@ public class ShellServerTest {
   public static void tearDownAfterClass() throws Exception {
     cluster.stop();
     traceProcess.destroy();
-    folder.delete();
   }
 
   @Test(timeout = 60000)
@@ -453,6 +456,7 @@ public class ShellServerTest {
     for (int i = 0; i < 9 && !success; i++) {
       try {
         exec("insert a b c d -l foo", false, "does not have authorization", true, new ErrorMessageCallback() {
+          @Override
           public String getErrorMessage() {
             try {
               Connector c = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()).getConnector("root", new PasswordToken(secret));
@@ -470,6 +474,7 @@ public class ShellServerTest {
     // If we still couldn't do it, try again and let it fail
     if (!success) {
       exec("insert a b c d -l foo", false, "does not have authorization", true, new ErrorMessageCallback() {
+        @Override
         public String getErrorMessage() {
           try {
             Connector c = new ZooKeeperInstance(cluster.getInstanceName(), cluster.getZooKeepers()).getConnector("root", new PasswordToken(secret));
@@ -872,6 +877,7 @@ public class ShellServerTest {
     s.addScanIterator(cfg);
 
     Thread thread = new Thread() {
+      @Override
       public void run() {
         try {
           for (@SuppressWarnings("unused")