You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2017/07/18 05:17:30 UTC

phoenix git commit: PHOENIX-4032 Reenable MutableIndexFailureIT 4.x-HBase-0.98 branch

Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-0.98 c5ae34779 -> f1e111bb0


PHOENIX-4032 Reenable MutableIndexFailureIT 4.x-HBase-0.98  branch


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

Branch: refs/heads/4.x-HBase-0.98
Commit: f1e111bb05143ff4d7f0ae10515b8811378f2e5a
Parents: c5ae347
Author: Samarth Jain <sa...@apache.org>
Authored: Mon Jul 17 22:17:12 2017 -0700
Committer: Samarth Jain <sa...@apache.org>
Committed: Mon Jul 17 22:17:12 2017 -0700

----------------------------------------------------------------------
 .../end2end/index/MutableIndexFailureIT.java    | 81 ++++++++++----------
 1 file changed, 39 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/f1e111bb/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
index ac0d6ea..4b8091c 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/MutableIndexFailureIT.java
@@ -64,7 +64,6 @@ import org.apache.phoenix.util.ReadOnlyProps;
 import org.apache.phoenix.util.SchemaUtil;
 import org.apache.phoenix.util.StringUtil;
 import org.junit.BeforeClass;
-import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 import org.junit.runner.RunWith;
@@ -81,7 +80,6 @@ import com.google.common.collect.Maps;
  * 
  */
 
-@Ignore("Not working with HBase 0.98")
 @Category(NeedsOwnMiniClusterTest.class)
 @RunWith(Parameterized.class)
 public class MutableIndexFailureIT extends BaseTest {
@@ -150,20 +148,22 @@ public class MutableIndexFailureIT extends BaseTest {
                 { false, false, true, true, true, false, null},
                 { false, false, true, true, true, false, true},
                 { false, false, false, true, true, false, null},
-                { true, false, false, true, true, false, null},
-                { true, false, true, true, true, false, null},
-                { false, true, true, true, true, false, null},
-                { false, true, false, null, null, false, null},
-                { true, true, false, true, null, false, null},
-                { true, true, true, null, true, false, null},
+                // FIXME: PHOENIX-4036 and PHOENIX-4037. Test cases with transactional or local
+                // indexes don't pass reliably.
+                //{ true, false, false, true, true, false, null},
+                //{ true, false, true, true, true, false, null},
+                //{ false, true, true, true, true, false, null},
+                //{ false, true, false, null, null, false, null},
+                //{ true, true, false, true, null, false, null},
+                //{ true, true, true, null, true, false, null},
 
                 { false, false, false, false, true, false, null},
-                { false, true, false, false, null, false, null},
+                //{ false, true, false, false, null, false, null},
                 { false, false, false, false, false, false, null},
                 { false, false, false, true, true, false, null},
                 { false, false, false, true, true, false, null},
-                { false, true, false, true, true, false, null},
-                { false, true, false, true, true, false, null},
+                //{ false, true, false, true, true, false, null},
+                //{ false, true, false, true, true, false, null},
                 { false, false, false, true, true, true, null},
                 { false, false, true, true, true, true, null},
                 { false, false, false, true, true, true, false},
@@ -287,7 +287,7 @@ public class MutableIndexFailureIT extends BaseTest {
                 FailingRegionObserver.FAIL_WRITE = false;
                 if (rebuildIndexOnWriteFailure) {
                     // wait for index to be rebuilt automatically
-                    waitForIndexToBeRebuilt(conn,indexName);
+                    waitForIndexRebuild(conn,indexName, PIndexState.ACTIVE);
                 } else {
                     // simulate replaying failed mutation
                     replayMutations();
@@ -304,36 +304,28 @@ public class MutableIndexFailureIT extends BaseTest {
                 // verify index table has correct data (note that second index has been dropped)
                 validateDataWithIndex(conn, fullTableName, fullIndexName, localIndex);
             } else {
-                try {
-                    // Wait for index to be rebuilt automatically. This should fail because
-                    // we haven't flipped the FAIL_WRITE flag to false and as a result this
-                    // should cause index rebuild to fail too.
-                    waitForIndexToBeRebuilt(conn, indexName);
-                    // verify that the index was marked as disabled and the index disable
-                    // timestamp set to 0
-                    String q =
-                            "SELECT INDEX_STATE, INDEX_DISABLE_TIMESTAMP FROM SYSTEM.CATALOG WHERE TABLE_SCHEM = '"
-                                    + schema + "' AND TABLE_NAME = '" + indexName + "'"
-                                    + " AND COLUMN_NAME IS NULL AND COLUMN_FAMILY IS NULL";
-                    try (ResultSet r = conn.createStatement().executeQuery(q)) {
-                        assertTrue(r.next());
-                        assertEquals(PIndexState.DISABLE.getSerializedValue(), r.getString(1));
-                        assertEquals(0, r.getLong(2));
-                        assertFalse(r.next());
-                    }
-                } finally {
-                    // even if the above test fails, make sure we leave the index active
-                    // as other tests might be dependent on it
-                    FAIL_WRITE = false;
-                    waitForIndexToBeRebuilt(conn, indexName);
+                // Wait for index to be rebuilt automatically. This should fail because
+                // we haven't flipped the FAIL_WRITE flag to false and as a result this
+                // should cause index rebuild to fail too.
+                waitForIndexRebuild(conn, indexName, PIndexState.DISABLE);
+                // verify that the index was marked as disabled and the index disable
+                // timestamp set to 0
+                String q =
+                        "SELECT INDEX_STATE, INDEX_DISABLE_TIMESTAMP FROM SYSTEM.CATALOG WHERE TABLE_SCHEM = '"
+                                + schema + "' AND TABLE_NAME = '" + indexName + "'"
+                                + " AND COLUMN_NAME IS NULL AND COLUMN_FAMILY IS NULL";
+                try (ResultSet r = conn.createStatement().executeQuery(q)) {
+                    assertTrue(r.next());
+                    assertEquals(PIndexState.DISABLE.getSerializedValue(), r.getString(1));
+                    assertEquals(0, r.getLong(2));
+                    assertFalse(r.next());
                 }
+
             }
-        } finally {
-            FAIL_WRITE = false;
         }
     }
 
-    private void waitForIndexToBeRebuilt(Connection conn, String index) throws InterruptedException, SQLException {
+    private void waitForIndexRebuild(Connection conn, String index, PIndexState expectedIndexState) throws InterruptedException, SQLException {
         boolean isActive = false;
         if (!transactional) {
             int maxTries = 12, nTries = 0;
@@ -342,15 +334,20 @@ public class MutableIndexFailureIT extends BaseTest {
                 String query = "SELECT CAST(" + PhoenixDatabaseMetaData.INDEX_DISABLE_TIMESTAMP + " AS BIGINT) FROM " +
                         PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME + " WHERE (" + PhoenixDatabaseMetaData.TABLE_SCHEM + "," + PhoenixDatabaseMetaData.TABLE_NAME
                         + ") = (" + "'" + schema + "','" + index + "') "
-                        + "AND " + PhoenixDatabaseMetaData.COLUMN_FAMILY + " IS NULL AND " + PhoenixDatabaseMetaData.COLUMN_NAME + " IS NULL";
+                        + "AND " + PhoenixDatabaseMetaData.COLUMN_FAMILY + " IS NULL AND " + PhoenixDatabaseMetaData.COLUMN_NAME + " IS NULL"
+                        + " AND " + PhoenixDatabaseMetaData.INDEX_STATE + " = '" + expectedIndexState.getSerializedValue() + "'";
                 ResultSet rs = conn.createStatement().executeQuery(query);
                 assertTrue(rs.next());
-                if (rs.getLong(1) == 0 && !rs.wasNull()) {
-                    isActive = true;
-                    break;
+                if (expectedIndexState == PIndexState.ACTIVE) {
+                    if (rs.getLong(1) == 0 && !rs.wasNull()) {
+                        isActive = true;
+                        break;
+                    }
                 }
             } while (++nTries < maxTries);
-            assertTrue(isActive);
+            if (expectedIndexState == PIndexState.ACTIVE) {
+                assertTrue(isActive);
+            }
         }
     }