PHOENIX-4963 Do not throw when transitioning to PENDING_DISABLE if index is already disabled
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/1cbd79d5 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/1cbd79d5 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/1cbd79d5 Branch: refs/heads/4.x-cdh5.15 Commit: 1cbd79d520005d39b6d4376d8a0d6401d28cd573 Parents: 62c67d6 Author: Vincent Poon <vincentp...@apache.org> Authored: Wed Oct 17 00:13:11 2018 +0100 Committer: Pedro Boado <pbo...@apache.org> Committed: Wed Oct 17 22:50:43 2018 +0100 ---------------------------------------------------------------------- .../phoenix/coprocessor/MetaDataEndpointImpl.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/1cbd79d5/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java ---------------------------------------------------------------------- diff --git a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java index 83c7f4d..21370f3 100644 --- a/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java +++ b/phoenix-core/src/main/java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java @@ -3949,6 +3949,14 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso return; } } else if (currentState == PIndexState.DISABLE) { + // Index already disabled, so can't revert to PENDING_DISABLE + if (newState == PIndexState.PENDING_DISABLE) { + // returning TABLE_ALREADY_EXISTS here means the client doesn't throw an exception + builder.setReturnCode(MetaDataProtos.MutationCode.TABLE_ALREADY_EXISTS); + builder.setMutationTime(EnvironmentEdgeManager.currentTimeMillis()); + done.run(builder.build()); + return; + } // Can't transition back to INACTIVE if INDEX_DISABLE_TIMESTAMP is 0 if (newState != PIndexState.BUILDING && newState != PIndexState.DISABLE && (newState != PIndexState.INACTIVE || curTimeStampVal == 0)) { @@ -3961,13 +3969,6 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso if (newState == PIndexState.ACTIVE) { newState = PIndexState.DISABLE; } - // Can't transition from DISABLE to PENDING_DISABLE - if (newState == PIndexState.PENDING_DISABLE) { - builder.setReturnCode(MetaDataProtos.MutationCode.UNALLOWED_TABLE_MUTATION); - builder.setMutationTime(EnvironmentEdgeManager.currentTimeMillis()); - done.run(builder.build()); - return; - } } if (newState == PIndexState.PENDING_DISABLE && currentState != PIndexState.PENDING_DISABLE) { // reset count for first PENDING_DISABLE