You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by ma...@apache.org on 2016/02/02 05:00:01 UTC
[27/50] [abbrv] phoenix git commit: PHOENIX-2621 ImmutableIndexIT is
failing
PHOENIX-2621 ImmutableIndexIT is failing
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo
Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/79d109e7
Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/79d109e7
Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/79d109e7
Branch: refs/heads/calcite
Commit: 79d109e782b400af3006f5dc3dc810e3df4bd15e
Parents: a138cfe
Author: James Taylor <jt...@salesforce.com>
Authored: Fri Jan 22 00:58:46 2016 -0800
Committer: James Taylor <jt...@salesforce.com>
Committed: Fri Jan 22 00:58:46 2016 -0800
----------------------------------------------------------------------
.../phoenix/end2end/index/ImmutableIndexIT.java | 70 ++++++++++----------
1 file changed, 36 insertions(+), 34 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/phoenix/blob/79d109e7/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
index c18e4ab..ced3ac8 100644
--- a/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
+++ b/phoenix-core/src/it/java/org/apache/phoenix/end2end/index/ImmutableIndexIT.java
@@ -72,20 +72,19 @@ import com.google.common.collect.Maps;
public class ImmutableIndexIT extends BaseHBaseManagedTimeIT {
private final boolean localIndex;
- private final boolean transactional;
private final String tableDDLOptions;
private final String tableName;
private final String indexName;
private final String fullTableName;
private final String fullIndexName;
+ private volatile boolean stopThreads = false;
private static String TABLE_NAME;
private static String INDEX_DDL;
- public static final AtomicInteger NUM_ROWS = new AtomicInteger(1);
+ public static final AtomicInteger NUM_ROWS = new AtomicInteger(0);
public ImmutableIndexIT(boolean localIndex, boolean transactional) {
this.localIndex = localIndex;
- this.transactional = transactional;
StringBuilder optionBuilder = new StringBuilder("IMMUTABLE_ROWS=true");
if (transactional) {
optionBuilder.append(", TRANSACTIONAL=true");
@@ -210,8 +209,8 @@ public class ImmutableIndexIT extends BaseHBaseManagedTimeIT {
}
}
- private static class UpsertRunnable implements Runnable {
- private static final int NUM_ROWS_IN_BATCH = 1000;
+ private class UpsertRunnable implements Runnable {
+ private static final int NUM_ROWS_IN_BATCH = 10;
private final String fullTableName;
public UpsertRunnable(String fullTableName) {
@@ -222,18 +221,19 @@ public class ImmutableIndexIT extends BaseHBaseManagedTimeIT {
public void run() {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- while (true) {
+ while (!stopThreads) {
// write a large batch of rows
boolean fistRowInBatch = true;
- for (int i=0; i<NUM_ROWS_IN_BATCH; ++i) {
- BaseTest.upsertRow(conn, fullTableName, NUM_ROWS.intValue(), fistRowInBatch);
- NUM_ROWS.incrementAndGet();
+ for (int i=0; i<NUM_ROWS_IN_BATCH && !stopThreads; ++i) {
+ BaseTest.upsertRow(conn, fullTableName, NUM_ROWS.incrementAndGet(), fistRowInBatch);
fistRowInBatch = false;
}
conn.commit();
+ Thread.sleep(10);
}
} catch (SQLException e) {
throw new RuntimeException(e);
+ } catch (InterruptedException e) {
}
}
}
@@ -242,56 +242,58 @@ public class ImmutableIndexIT extends BaseHBaseManagedTimeIT {
public void testCreateIndexWhileUpsertingData() throws Exception {
Properties props = PropertiesUtil.deepCopy(TEST_PROPERTIES);
String ddl ="CREATE TABLE " + fullTableName + BaseTest.TEST_TABLE_SCHEMA + tableDDLOptions;
- String indexDDL = "CREATE " + (localIndex ? "LOCAL" : "") + " INDEX IF NOT EXISTS " + indexName + " ON " + fullTableName
+ String indexDDL = "CREATE " + (localIndex ? "LOCAL" : "") + " INDEX " + indexName + " ON " + fullTableName
+ " (long_pk, varchar_pk)"
+ " INCLUDE (long_col1, long_col2)";
- int numThreads = 3;
+ int numThreads = 2;
+ ExecutorService executorService = Executors.newFixedThreadPool(numThreads, new ThreadFactory() {
+ @Override
+ public Thread newThread(Runnable r) {
+ Thread t = Executors.defaultThreadFactory().newThread(r);
+ t.setDaemon(true);
+ t.setPriority(Thread.MIN_PRIORITY);
+ return t;
+ }
+ });
try (Connection conn = DriverManager.getConnection(getUrl(), props)) {
- conn.setAutoCommit(false);
+ conn.setAutoCommit(true);
Statement stmt = conn.createStatement();
stmt.execute(ddl);
- ExecutorService executorService = Executors.newFixedThreadPool(numThreads, new ThreadFactory() {
- @Override
- public Thread newThread(Runnable r) {
- Thread t = Executors.defaultThreadFactory().newThread(r);
- t.setDaemon(true);
- return t;
- }
- });
+ ResultSet rs;
+ rs = conn.createStatement().executeQuery("SELECT /*+ NO_INDEX */ COUNT(*) FROM " + fullTableName);
+ assertTrue(rs.next());
+ int dataTableRowCount = rs.getInt(1);
+ assertEquals(0,dataTableRowCount);
+
List<Future<?>> futureList = Lists.newArrayListWithExpectedSize(numThreads);
for (int i =0; i<numThreads; ++i) {
futureList.add(executorService.submit(new UpsertRunnable(fullTableName)));
}
// upsert some rows before creating the index
- Thread.sleep(500);
+ Thread.sleep(100);
// create the index
try (Connection conn2 = DriverManager.getConnection(getUrl(), props)) {
- conn2.setAutoCommit(false);
- Statement stmt2 = conn2.createStatement();
- stmt2.execute(indexDDL);
- conn2.commit();
+ conn2.createStatement().execute(indexDDL);
}
// upsert some rows after creating the index
- Thread.sleep(100);
+ Thread.sleep(50);
// cancel the running threads
- for (Future<?> future : futureList) {
- future.cancel(true);
- }
- executorService.shutdownNow();
- executorService.awaitTermination(30, TimeUnit.SECONDS);
- Thread.sleep(100);
+ stopThreads = true;
+ executorService.shutdown();
+ assertTrue(executorService.awaitTermination(30, TimeUnit.SECONDS));
- ResultSet rs;
rs = conn.createStatement().executeQuery("SELECT /*+ NO_INDEX */ COUNT(*) FROM " + fullTableName);
assertTrue(rs.next());
- int dataTableRowCount = rs.getInt(1);
+ dataTableRowCount = rs.getInt(1);
rs = conn.createStatement().executeQuery("SELECT COUNT(*) FROM " + fullIndexName);
assertTrue(rs.next());
int indexTableRowCount = rs.getInt(1);
assertEquals("Data and Index table should have the same number of rows ", dataTableRowCount, indexTableRowCount);
+ } finally {
+ executorService.shutdownNow();
}
}