[ https://issues.apache.org/jira/browse/PHOENIX-4799?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16554596#comment-16554596 ]
ASF GitHub Bot commented on PHOENIX-4799: ----------------------------------------- GitHub user twdsilva opened a pull request: https://github.com/apache/phoenix/pull/313 PHOENIX-4799 Write cells using checkAndMutate to prevent conflicting … …changes @vincentpoon @karanmehta93 @ChinmaySKulkarni Can you please review? With this patch, when we add a column we write a cell to SYSTEM.CHILD_LINK with row key (tenantId, schemaName, physicalTableName, columnName) to prevent conflicting concurrent modifications. While dropping a table or creating a view we also write a cell to SYSTEM.CHILD_LINK with row key (tenantId, schemaName, physicalTableName). This is done in MetadataClient before we make an rpc to create view / drop table / add column. You can merge this pull request into a Git repository by running: $ git pull https://github.com/twdsilva/phoenix PHOENIX-4799 Alternatively you can review and apply these changes as the patch at: https://github.com/apache/phoenix/pull/313.patch To close this pull request, make a commit to your master/trunk branch with (at least) the following in the commit message: This closes #313 ---- commit 421888f914db3307906aa4424e24e202834b3e08 Author: Thomas D'Silva <tdsilva@...> Date: 2018-07-24T17:49:31Z PHOENIX-4799 Write cells using checkAndMutate to prevent conflicting changes ---- > Write cells using checkAndMutate to prevent conflicting changes > --------------------------------------------------------------- > > Key: PHOENIX-4799 > URL: https://issues.apache.org/jira/browse/PHOENIX-4799 > Project: Phoenix > Issue Type: Sub-task > Reporter: Thomas D'Silva > Assignee: Thomas D'Silva > Priority: Major > > In order to prevent race conditions when multiple client try to mutate the > same column before sending the request to mutate the column to the server do > a checkAndMutate with the column name being added/dropped. Also: > 1. When a view is created do a checkAndMutate with the columns in the view > where clause. > 2. When an index on a view is created do a checkAndMutate with the indexed > columns. > > To prevent a race condition in the DROP TABLE CASCADE case, when a table is > dropped do a checkAndMutate with the rowkey of the base table name. If a view > is created it also does a checkAndMutate with the same rowkey. -- This message was sent by Atlassian JIRA (v7.6.3#76005)