[ https://issues.apache.org/jira/browse/PHOENIX-3163?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15415213#comment-15415213 ]
Rajeshbabu Chintaguntla edited comment on PHOENIX-3163 at 8/10/16 12:43 PM: ---------------------------------------------------------------------------- [~sergey soldatov] I ran the test code you have given to reproduce it. I am not seeing any data loss when I handle the exceptions(NSRE) while splitting data table in main thread. Aren't you seeing the dataloss or less number of records because the java process terminating while index building in progress? was (Author: rajeshbabu): [~sergey soldatov] I ran the test code you have give to reproduce it. I am able not seeing any data loss when I handle the exceptions during split in main thread. Aren't you seeing the dataloss or less number of records because the java process terminating while index building in progress? > Split during global index creation may cause ERROR 201 error. > ------------------------------------------------------------- > > Key: PHOENIX-3163 > URL: https://issues.apache.org/jira/browse/PHOENIX-3163 > Project: Phoenix > Issue Type: Bug > Affects Versions: 4.8.0 > Reporter: Sergey Soldatov > Assignee: Sergey Soldatov > Fix For: 4.8.1 > > Attachments: PHOENIX-3163_v1.patch > > > When we create global index and split happen meanwhile there is a chance to > fail with ERROR 201: > {noformat} > 2016-08-08 15:55:17,248 INFO [Thread-6] > org.apache.phoenix.iterate.BaseResultIterators(878): Failed to execute task > during cancel > java.util.concurrent.ExecutionException: java.sql.SQLException: ERROR 201 > (22000): Illegal data. > at java.util.concurrent.FutureTask.report(FutureTask.java:122) > at java.util.concurrent.FutureTask.get(FutureTask.java:192) > at > org.apache.phoenix.iterate.BaseResultIterators.close(BaseResultIterators.java:872) > at > org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:809) > at > org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:713) > at > org.apache.phoenix.iterate.RoundRobinResultIterator.getIterators(RoundRobinResultIterator.java:176) > at > org.apache.phoenix.iterate.RoundRobinResultIterator.next(RoundRobinResultIterator.java:91) > at > org.apache.phoenix.compile.UpsertCompiler$2.execute(UpsertCompiler.java:815) > at > org.apache.phoenix.compile.DelegateMutationPlan.execute(DelegateMutationPlan.java:31) > at > org.apache.phoenix.compile.PostIndexDDLCompiler$1.execute(PostIndexDDLCompiler.java:124) > at > org.apache.phoenix.query.ConnectionQueryServicesImpl.updateData(ConnectionQueryServicesImpl.java:2823) > at > org.apache.phoenix.schema.MetaDataClient.buildIndex(MetaDataClient.java:1079) > at > org.apache.phoenix.schema.MetaDataClient.createIndex(MetaDataClient.java:1382) > at > org.apache.phoenix.compile.CreateIndexCompiler$1.execute(CreateIndexCompiler.java:85) > at > org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:343) > at > org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:331) > at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:330) > at > org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1440) > at > org.apache.phoenix.hbase.index.write.TestIndexWriter$1.run(TestIndexWriter.java:93) > Caused by: java.sql.SQLException: ERROR 201 (22000): Illegal data. > at > org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:441) > at > org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145) > at > org.apache.phoenix.schema.types.PDataType.newIllegalDataException(PDataType.java:287) > at > org.apache.phoenix.schema.types.PUnsignedSmallint$UnsignedShortCodec.decodeShort(PUnsignedSmallint.java:146) > at > org.apache.phoenix.schema.types.PSmallint.toObject(PSmallint.java:104) > at org.apache.phoenix.schema.types.PSmallint.toObject(PSmallint.java:28) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:980) > at > org.apache.phoenix.schema.types.PUnsignedSmallint.toObject(PUnsignedSmallint.java:102) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:980) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:992) > at > org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:830) > at > org.apache.phoenix.schema.types.PDecimal.coerceBytes(PDecimal.java:342) > at > org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:810) > at > org.apache.phoenix.expression.CoerceExpression.evaluate(CoerceExpression.java:149) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:69) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getBytes(PhoenixResultSet.java:308) > at > org.apache.phoenix.compile.UpsertCompiler.upsertSelect(UpsertCompiler.java:197) > at > org.apache.phoenix.compile.UpsertCompiler.access$000(UpsertCompiler.java:115) > at > org.apache.phoenix.compile.UpsertCompiler$UpsertingParallelIteratorFactory.mutate(UpsertCompiler.java:259) > at > org.apache.phoenix.compile.MutatingParallelIteratorFactory.newIterator(MutatingParallelIteratorFactory.java:59) > at > org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:112) > at > org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:103) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > org.apache.phoenix.job.JobManager$InstrumentedJobFutureTask.run(JobManager.java:183) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > java.sql.SQLException: ERROR 201 (22000): Illegal data. ERROR 201 (22000): > Illegal data. > at > org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:441) > at > org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145) > at > org.apache.phoenix.util.ServerUtil.parseRemoteException(ServerUtil.java:129) > at > org.apache.phoenix.util.ServerUtil.parseServerExceptionOrNull(ServerUtil.java:118) > at > org.apache.phoenix.util.ServerUtil.parseServerException(ServerUtil.java:107) > at > org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:768) > at > org.apache.phoenix.iterate.BaseResultIterators.getIterators(BaseResultIterators.java:713) > at > org.apache.phoenix.iterate.RoundRobinResultIterator.getIterators(RoundRobinResultIterator.java:176) > at > org.apache.phoenix.iterate.RoundRobinResultIterator.next(RoundRobinResultIterator.java:91) > at > org.apache.phoenix.compile.UpsertCompiler$2.execute(UpsertCompiler.java:815) > at > org.apache.phoenix.compile.DelegateMutationPlan.execute(DelegateMutationPlan.java:31) > at > org.apache.phoenix.compile.PostIndexDDLCompiler$1.execute(PostIndexDDLCompiler.java:124) > at > org.apache.phoenix.query.ConnectionQueryServicesImpl.updateData(ConnectionQueryServicesImpl.java:2823) > at > org.apache.phoenix.schema.MetaDataClient.buildIndex(MetaDataClient.java:1079) > at > org.apache.phoenix.schema.MetaDataClient.createIndex(MetaDataClient.java:1382) > at > org.apache.phoenix.compile.CreateIndexCompiler$1.execute(CreateIndexCompiler.java:85) > at > org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:343) > at > org.apache.phoenix.jdbc.PhoenixStatement$2.call(PhoenixStatement.java:331) > at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53) > at > org.apache.phoenix.jdbc.PhoenixStatement.executeMutation(PhoenixStatement.java:330) > at > org.apache.phoenix.jdbc.PhoenixStatement.execute(PhoenixStatement.java:1440) > at > org.apache.phoenix.hbase.index.write.TestIndexWriter$1.run(TestIndexWriter.java:93) > Caused by: java.sql.SQLException: ERROR 201 (22000): Illegal data. > at > org.apache.phoenix.exception.SQLExceptionCode$Factory$1.newException(SQLExceptionCode.java:441) > at > org.apache.phoenix.exception.SQLExceptionInfo.buildException(SQLExceptionInfo.java:145) > at > org.apache.phoenix.schema.types.PDataType.newIllegalDataException(PDataType.java:287) > at > org.apache.phoenix.schema.types.PUnsignedSmallint$UnsignedShortCodec.decodeShort(PUnsignedSmallint.java:146) > at > org.apache.phoenix.schema.types.PSmallint.toObject(PSmallint.java:104) > at org.apache.phoenix.schema.types.PSmallint.toObject(PSmallint.java:28) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:980) > at > org.apache.phoenix.schema.types.PUnsignedSmallint.toObject(PUnsignedSmallint.java:102) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:980) > at > org.apache.phoenix.schema.types.PDataType.toObject(PDataType.java:992) > at > org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:830) > at > org.apache.phoenix.schema.types.PDecimal.coerceBytes(PDecimal.java:342) > at > org.apache.phoenix.schema.types.PDataType.coerceBytes(PDataType.java:810) > at > org.apache.phoenix.expression.CoerceExpression.evaluate(CoerceExpression.java:149) > at > org.apache.phoenix.compile.ExpressionProjector.getValue(ExpressionProjector.java:69) > at > org.apache.phoenix.jdbc.PhoenixResultSet.getBytes(PhoenixResultSet.java:308) > at > org.apache.phoenix.compile.UpsertCompiler.upsertSelect(UpsertCompiler.java:197) > at > org.apache.phoenix.compile.UpsertCompiler.access$000(UpsertCompiler.java:115) > at > org.apache.phoenix.compile.UpsertCompiler$UpsertingParallelIteratorFactory.mutate(UpsertCompiler.java:259) > at > org.apache.phoenix.compile.MutatingParallelIteratorFactory.newIterator(MutatingParallelIteratorFactory.java:59) > at > org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:112) > at > org.apache.phoenix.iterate.ParallelIterators$1.call(ParallelIterators.java:103) > at java.util.concurrent.FutureTask.run(FutureTask.java:266) > at > org.apache.phoenix.job.JobManager$InstrumentedJobFutureTask.run(JobManager.java:183) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) > at java.lang.Thread.run(Thread.java:745) > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)