PHOENIX-4694 Prevent locking of parent table when dropping view to reduce contention
Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/9168f669 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/9168f669 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/9168f669 Branch: refs/heads/system-catalog Commit: 9168f6698d6afdf12a825bd6a4e05ccb2a85b9d0 Parents: 5c637e6 Author: James Taylor <jtay...@salesforce.com> Authored: Thu Apr 19 15:09:43 2018 -0700 Committer: James Taylor <jtay...@salesforce.com> Committed: Thu Apr 26 09:55:28 2018 -0700 ---------------------------------------------------------------------- .../java/org/apache/phoenix/coprocessor/MetaDataEndpointImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/9168f669/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 ddd3ffe..29eee7e 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 @@ -2007,8 +2007,9 @@ public class MetaDataEndpointImpl extends MetaDataProtocol implements Coprocesso } List<byte[]> tableNamesToDelete = Lists.newArrayList(); List<SharedTableState> sharedTablesToDelete = Lists.newArrayList(); + // No need to lock parent table for views byte[] parentTableName = MetaDataUtil.getParentTableName(tableMetadata); - byte[] lockTableName = parentTableName == null ? tableName : parentTableName; + byte[] lockTableName = parentTableName == null || tableType.equals(PTableType.VIEW.getSerializedValue()) ? tableName : parentTableName; byte[] lockKey = SchemaUtil.getTableKey(tenantIdBytes, schemaName, lockTableName); byte[] key = parentTableName == null ? lockKey : SchemaUtil.getTableKey(tenantIdBytes,