[ 
https://issues.apache.org/jira/browse/PHOENIX-5562?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kadir OZDEMIR updated PHOENIX-5562:
-----------------------------------
    Summary: Simplify detection of concurrent updates on data tables with 
indexes  (was: The last concurrent update can complete the last write phase)

> Simplify detection of concurrent updates on data tables with indexes
> --------------------------------------------------------------------
>
>                 Key: PHOENIX-5562
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5562
>             Project: Phoenix
>          Issue Type: Improvement
>    Affects Versions: 5.1.0
>            Reporter: Kadir OZDEMIR
>            Assignee: Kadir OZDEMIR
>            Priority: Major
>         Attachments: PHOENIX-5562.master.001.patch
>
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> From the consistent secondary indexing design (PHOENIX-5156) perspective, two 
> or more updates on the same row are concurrent updates if and only if all of 
> them have acquired the row lock for reading the data table row before any of 
> of them acquires the row lock the second time for updating the data table. In 
> other words, all of them are in the first update phase concurrently.
> In the current implementation, these updates can detect the existence of each 
> other in two places
> (1) after acquiring the lock to read the existing row on the data table 
> (2) after acquiring the row lock to update the data table
> This allows all the concurrent updates to detect each other and complete 
> first two update phases but skip the last update phase. This means the data 
> table row will be updated by these updates but the corresponding index table 
> rows will be left with the unverified status. Then, the read repair process 
> will repair these unverified index rows during scans. Although this behavior 
> leads to the correct end result, ideally we would like to see that the 
> concurrent update with most recent timestamp proceeds with the last phase 
> instead of leaving the index rows in the unverified status. This would reduce 
> the number of unverified rows due to concurrent updates.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to