[
https://issues.apache.org/jira/browse/PHOENIX-5562?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Kadir OZDEMIR updated PHOENIX-5562:
-----------------------------------
Attachment: (was: PHOENIX-5562.master.001.patch)
> 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
> 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.
> The detection of concurrent updates can be simplified and done one in one
> place, i.e., after acquiring the row lock to update the data table.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)