phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kadir OZDEMIR (Jira)" <j...@apache.org>
Subject [jira] [Updated] (PHOENIX-5562) Simplify detection of concurrent updates on data tables with indexes
Date Thu, 07 Nov 2019 11:18:00 GMT

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

Mime
View raw message