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,

Reply via email to