Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Not A Problem
-
None
-
None
-
None
Description
prakul and I noticed that when running ImmutableIndexIT on its own, the test testCreateIndexDuringUpsertSelect fails for parameters localIndex = true and transactional = false. The failure stacktrace is:
java.sql.SQLTimeoutException: Operation timed out. at org.apache.phoenix.exception.SQLExceptionCode$15.newException(SQLExceptionCode.java:376) at org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145) at org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:805) at org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:719) at org.apache.phoenix.iterate.ConcatResultIterator.getIterators(ConcatResultIterator.java:50) at org.apache.phoenix.iterate.ConcatResultIterator.currentIterator(ConcatResultIterator.java:97) at org.apache.phoenix.iterate.ConcatResultIterator.next(ConcatResultIterator.java:117) at org.apache.phoenix.compile.UpsertCompiler$2.execute(UpsertCompiler.java:810) at org.apache.phoenix.jdbc.PhoenixStatement$3.call(PhoenixStatement.java:340) at org.apache.phoenix.jdbc.PhoenixStatement$3.call(PhoenixStatement.java:1) at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) at org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:327) at org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1388) at org.apache.phoenix.end2end.index.ImmutableIndexIT.testCreateIndexDuringUpsertSelect(ImmutableIndexIT.java:180)
My first guess is that the UPSERT SELECT running for building the local index isn't setting timestamp correctly. This is probably causing the select part to read the records that are being upserted. FYI, rajeshbabu. The reason we are not seeing this error in jenkins is because the co-processor CreateIndexRegionObserver isn't getting installed. Because the co-processor is a server side property, the test class needs to extend BaseOwnClusterHBaseManagedTimeIT and not BaseHBaseManagedTimeIT. This will make the test class run in its own mini-cluster. FYI, tdsilva - it doesn't look like your race condition test is getting exercised when running test suite via maven.