[1/3] phoenix git commit: PHOENIX-4173 Ensure that the rebuild fails if an index that transitions back to disabled while rebuilding
Repository: phoenix Updated Branches: refs/heads/4.x-HBase-1.1 9ecb193f2 -> 258f47d68 PHOENIX-4173 Ensure that the rebuild fails if an index that transitions back to disabled while rebuilding Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/ed994128 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/ed994128 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/ed994128 Branch: refs/heads/4.x-HBase-1.1 Commit: ed994128a9b50b710a37c5f62adc9c47922fcd64 Parents: 9ecb193 Author: James TaylorAuthored: Wed Sep 6 12:46:34 2017 -0700 Committer: James Taylor Committed: Thu Sep 7 11:36:14 2017 -0700 -- .../end2end/index/PartialIndexRebuilderIT.java | 151 ++- 1 file changed, 143 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/ed994128/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java index cacf0fa..067f50f 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -30,7 +31,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.HBaseIOException; +import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.Mutation; @@ -38,10 +39,13 @@ import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver; import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress; +import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; +import org.apache.phoenix.query.ConnectionQueryServices; import org.apache.phoenix.query.QueryServices; +import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.PIndexState; import org.apache.phoenix.schema.PMetaData; import org.apache.phoenix.schema.PTable; @@ -634,6 +638,94 @@ public class PartialIndexRebuilderIT extends BaseUniqueNamesOwnClusterIT { } } +private final static CountDownLatch WAIT_FOR_REBUILD_TO_START = new CountDownLatch(1); +private final static CountDownLatch WAIT_FOR_INDEX_WRITE = new CountDownLatch(1); + + +@Test +public void testDisableIndexDuringRebuild() throws Throwable { +String schemaName = generateUniqueName(); +String tableName = generateUniqueName(); +String indexName = generateUniqueName(); +final String fullTableName = SchemaUtil.getTableName(schemaName, tableName); +final String fullIndexName = SchemaUtil.getTableName(schemaName, indexName); +PTableKey key = new PTableKey(null,fullTableName); +final MyClock clock = new MyClock(1000); +EnvironmentEdgeManager.injectEdge(clock); +try (Connection conn = DriverManager.getConnection(getUrl())) { +PMetaData metaCache = conn.unwrap(PhoenixConnection.class).getMetaDataCache(); +conn.createStatement().execute("CREATE TABLE " + fullTableName + "(k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR, v3 VARCHAR) COLUMN_ENCODED_BYTES = 0, STORE_NULLS=true"); +clock.time += 100; +conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + fullTableName + " (v1, v2) INCLUDE (v3)"); +clock.time += 100; +conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES('a','a','0','x')"); +conn.commit(); +clock.time += 100; +try (HTableInterface metaTable = conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME_BYTES)) { +// By using an INDEX_DISABLE_TIMESTAMP of 0, we prevent the partial index rebuilder from triggering +
[1/3] phoenix git commit: PHOENIX-4173 Ensure that the rebuild fails if an index that transitions back to disabled while rebuilding
Repository: phoenix Updated Branches: refs/heads/4.x-HBase-1.2 1fb01af6b -> 5cf07c4ce PHOENIX-4173 Ensure that the rebuild fails if an index that transitions back to disabled while rebuilding Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/3c5e48d9 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/3c5e48d9 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/3c5e48d9 Branch: refs/heads/4.x-HBase-1.2 Commit: 3c5e48d9246f44cc39181b9c1cb9b51fb60bdd32 Parents: 1fb01af Author: James TaylorAuthored: Wed Sep 6 12:46:34 2017 -0700 Committer: James Taylor Committed: Thu Sep 7 11:34:13 2017 -0700 -- .../end2end/index/PartialIndexRebuilderIT.java | 151 ++- 1 file changed, 143 insertions(+), 8 deletions(-) -- http://git-wip-us.apache.org/repos/asf/phoenix/blob/3c5e48d9/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java -- diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java index cacf0fa..067f50f 100644 --- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java +++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/PartialIndexRebuilderIT.java @@ -21,6 +21,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; +import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; @@ -30,7 +31,7 @@ import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; import org.apache.hadoop.conf.Configuration; -import org.apache.hadoop.hbase.HBaseIOException; +import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTableInterface; import org.apache.hadoop.hbase.client.Mutation; @@ -38,10 +39,13 @@ import org.apache.hadoop.hbase.coprocessor.ObserverContext; import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.coprocessor.SimpleRegionObserver; import org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress; +import org.apache.hadoop.hbase.util.Bytes; import org.apache.phoenix.end2end.BaseUniqueNamesOwnClusterIT; import org.apache.phoenix.jdbc.PhoenixConnection; import org.apache.phoenix.jdbc.PhoenixDatabaseMetaData; +import org.apache.phoenix.query.ConnectionQueryServices; import org.apache.phoenix.query.QueryServices; +import org.apache.phoenix.query.QueryServicesOptions; import org.apache.phoenix.schema.PIndexState; import org.apache.phoenix.schema.PMetaData; import org.apache.phoenix.schema.PTable; @@ -634,6 +638,94 @@ public class PartialIndexRebuilderIT extends BaseUniqueNamesOwnClusterIT { } } +private final static CountDownLatch WAIT_FOR_REBUILD_TO_START = new CountDownLatch(1); +private final static CountDownLatch WAIT_FOR_INDEX_WRITE = new CountDownLatch(1); + + +@Test +public void testDisableIndexDuringRebuild() throws Throwable { +String schemaName = generateUniqueName(); +String tableName = generateUniqueName(); +String indexName = generateUniqueName(); +final String fullTableName = SchemaUtil.getTableName(schemaName, tableName); +final String fullIndexName = SchemaUtil.getTableName(schemaName, indexName); +PTableKey key = new PTableKey(null,fullTableName); +final MyClock clock = new MyClock(1000); +EnvironmentEdgeManager.injectEdge(clock); +try (Connection conn = DriverManager.getConnection(getUrl())) { +PMetaData metaCache = conn.unwrap(PhoenixConnection.class).getMetaDataCache(); +conn.createStatement().execute("CREATE TABLE " + fullTableName + "(k VARCHAR PRIMARY KEY, v1 VARCHAR, v2 VARCHAR, v3 VARCHAR) COLUMN_ENCODED_BYTES = 0, STORE_NULLS=true"); +clock.time += 100; +conn.createStatement().execute("CREATE INDEX " + indexName + " ON " + fullTableName + " (v1, v2) INCLUDE (v3)"); +clock.time += 100; +conn.createStatement().execute("UPSERT INTO " + fullTableName + " VALUES('a','a','0','x')"); +conn.commit(); +clock.time += 100; +try (HTableInterface metaTable = conn.unwrap(PhoenixConnection.class).getQueryServices().getTable(PhoenixDatabaseMetaData.SYSTEM_CATALOG_NAME_BYTES)) { +// By using an INDEX_DISABLE_TIMESTAMP of 0, we prevent the partial index rebuilder from triggering +