[
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)