[
https://issues.apache.org/jira/browse/PHOENIX-5073?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16729410#comment-16729410
]
Thomas D'Silva commented on PHOENIX-5073:
-----------------------------------------
[~kiran.maturi] Thanks for pointing that out. The index state of the cached
version of the PTable varies depending on whether an old or new client made the
first request. I think it would work if we move the two checks where we
translate the index state for requests from older client and create a copy of
the PTable with the updated index state and use this for creating the PTable
proto that is returned to the client. Then we wouldn't always have to rebuild
the PTable and could use the cached version if available.
> Invalid PIndexState during rolling upgrade from 4.13 to 4.14
> ------------------------------------------------------------
>
> Key: PHOENIX-5073
> URL: https://issues.apache.org/jira/browse/PHOENIX-5073
> Project: Phoenix
> Issue Type: Bug
> Affects Versions: 4.14.0
> Reporter: Kiran Kumar Maturi
> Assignee: Kiran Kumar Maturi
> Priority: Major
> Attachments: PHOENIX-5073-4.x-HBase-1.3.001.patch
>
>
> While doing a rolling upgrade from 4.13 to 4.14 we are seeing this exception.
> {code:java}
> 2018-08-20 09:00:34,980 WARN [pool-1-thread-1] workload.WriteWorkload -
> java.util.concurrent.ExecutionException: java.sql.SQLException:
> java.lang.IllegalArgumentException: Unable to PIndexState enum for serialized
> value of 'w'
> at java.util.concurrent.FutureTask.report(FutureTask.java:122)
> at java.util.concurrent.FutureTask.get(FutureTask.java:192)
> at
> org.apache.phoenix.pherf.workload.WriteWorkload.waitForBatches(WriteWorkload.java:233)
> at
> org.apache.phoenix.pherf.workload.WriteWorkload.exec(WriteWorkload.java:183)
> at
> org.apache.phoenix.pherf.workload.WriteWorkload.access$100(WriteWorkload.java:56)
> at
> org.apache.phoenix.pherf.workload.WriteWorkload$1.run(WriteWorkload.java:159)
> at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
> at java.util.concurrent.FutureTask.run(FutureTask.java:266)
> 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)
> Caused by: java.sql.SQLException: java.lang.IllegalArgumentException: Unable
> to PIndexState enum for serialized value of 'w'
> at
> org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1322)
> at
> org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1284)
> at
> org.apache.phoenix.query.ConnectionQueryServicesImpl.getTable(ConnectionQueryServicesImpl.java:1501)
> at
> org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:581)
> at
> org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:504)
> at
> org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:496)
> at
> org.apache.phoenix.schema.MetaDataClient.updateCache(MetaDataClient.java:492)
> at
> org.apache.phoenix.execute.MutationState.validate(MutationState.java:780)
> at
> org.apache.phoenix.execute.MutationState.validateAll(MutationState.java:768)
> at org.apache.phoenix.execute.MutationState.send(MutationState.java:980)
> at org.apache.phoenix.execute.MutationState.send(MutationState.java:1469)
> at
> org.apache.phoenix.execute.MutationState.commit(MutationState.java:1301)
> at
> org.apache.phoenix.jdbc.PhoenixConnection$3.call(PhoenixConnection.java:539)
> at
> org.apache.phoenix.jdbc.PhoenixConnection$3.call(PhoenixConnection.java:536)
> at org.apache.phoenix.call.CallRunner.run(CallRunner.java:53)
> at
> org.apache.phoenix.jdbc.PhoenixConnection.commit(PhoenixConnection.java:536)
> at
> org.apache.phoenix.pherf.workload.WriteWorkload$2.call(WriteWorkload.java:291)
> at
> org.apache.phoenix.pherf.workload.WriteWorkload$2.call(WriteWorkload.java:250)
> ... 4 more
> Caused by: java.lang.IllegalArgumentException: Unable to PIndexState enum for
> serialized value of 'w'
> at
> org.apache.phoenix.schema.PIndexState.fromSerializedValue(PIndexState.java:81)
> at
> org.apache.phoenix.schema.PTableImpl.createFromProto(PTableImpl.java:1222)
> at
> org.apache.phoenix.schema.PTableImpl.createFromProto(PTableImpl.java:1246)
> at
> org.apache.phoenix.coprocessor.MetaDataProtocol$MetaDataMutationResult.constructFromProto(MetaDataProtocol.java:330)
> at
> org.apache.phoenix.query.ConnectionQueryServicesImpl.metaDataCoprocessorExec(ConnectionQueryServicesImpl.java:1314){code}
>
> Steps to reproduce.
> # Start the server on 4.14
> # Start load with both 4.13 and 4.14 clients
> # 4.13 client will show the above error (it will only when Index state
> transtition to PENDING_DISABLE , this state is not defined in 4.13)
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)