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);
+ }
}
}