ChinmaySKulkarni commented on a change in pull request #550: PHOENIX-5348: Fix
flaky test: testIndexRebuildTask
URL: https://github.com/apache/phoenix/pull/550#discussion_r307523980
##########
File path:
phoenix-core/src/it/java/org/apache/phoenix/end2end/IndexRebuildTaskIT.java
##########
@@ -129,43 +128,48 @@ public void testIndexRebuildTask() throws Throwable {
Task.addTask(conn.unwrap(PhoenixConnection.class),
PTable.TaskType.INDEX_REBUILD,
TENANT1, null, viewName,
PTable.TaskStatus.CREATED.toString(), data, null, startTs,
null, true);
-
-
task.run();
+ waitForTaskState(conn, PTable.TaskType.INDEX_REBUILD, viewName,
PTable.TaskStatus.COMPLETED);
String viewIndexTableName =
MetaDataUtil.getViewIndexPhysicalName(baseTable);
ConnectionQueryServices queryServices =
conn.unwrap(PhoenixConnection.class).getQueryServices();
int count =
getUtility().countRows(queryServices.getTable(Bytes.toBytes(viewIndexTableName)));
assertTrue(count == numOfValues);
-
// Remove index contents and try again
Admin admin = queryServices.getAdmin();
TableName tableName = TableName.valueOf(viewIndexTableName);
admin.disableTable(tableName);
- admin.truncateTable(tableName, false);
+ admin.truncateTable(tableName, true);
data = "{IndexName:" + indexName + ", DisableBefore:true}";
- // Add a new task (update status to created) to System.Task to
rebuild indexes
+ // Add a new task to System.Task to rebuild indexes
+ conn.createStatement().execute("DELETE " + " FROM " +
PhoenixDatabaseMetaData.SYSTEM_TASK_NAME
+ + " WHERE TABLE_NAME ='" + viewName + "'");
+ conn.commit();
+ Thread.sleep(1);
+ startTs = new
Timestamp(EnvironmentEdgeManager.currentTimeMillis());
Task.addTask(conn.unwrap(PhoenixConnection.class),
PTable.TaskType.INDEX_REBUILD,
TENANT1, null, viewName,
PTable.TaskStatus.CREATED.toString(), data, null, startTs,
null, true);
+ conn.commit();
task.run();
Table systemHTable=
queryServices.getTable(Bytes.toBytes("SYSTEM."+PhoenixDatabaseMetaData.SYSTEM_TASK_TABLE));
count = getUtility().countRows(systemHTable);
assertEquals(1, count);
// Check task status and other column values.
- waitForTaskState(conn, PTable.TaskType.INDEX_REBUILD,
PTable.TaskStatus.COMPLETED);
+ waitForTaskState(conn, PTable.TaskType.INDEX_REBUILD, viewName,
PTable.TaskStatus.COMPLETED);
// See that index is rebuilt and confirm index has rows
Table htable=
queryServices.getTable(Bytes.toBytes(viewIndexTableName));
count = getUtility().countRows(htable);
assertEquals(numOfValues, count);
} finally {
- conn.createStatement().execute("DELETE " + " FROM " +
PhoenixDatabaseMetaData.SYSTEM_TASK_NAME);
+ conn.createStatement().execute("DELETE " + " FROM " +
PhoenixDatabaseMetaData.SYSTEM_TASK_NAME
+ + " WHERE TABLE_NAME ='" + viewName + "'");
Review comment:
This should all be inside the `if(conn != null)` block. Also, instead of
doing this in a finally block, does it make sense to have an `@After` method to
clean up the SYSTEM.TASK table? That way, if we add more tests here, we don't
have to repeat this code.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services