[ 
https://issues.apache.org/jira/browse/PHOENIX-5768?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17057293#comment-17057293
 ] 

Kadir OZDEMIR commented on PHOENIX-5768:
----------------------------------------

To me, allowing partial overwrites on immutable indexes is a broken model in 
the first place. Assuring correctness in the presence of failures does not seem 
possible without using something similar to the solution for mutable indexes. I 
am thinking about reverting 5708 for immutable indexes. This side effect of 
this revert would be that immutable indexes would inherit cells from the 
unverified rows. Please note there is a difference between returning unverified 
rows to the application and inheriting cells from the unverified rows. The 
former will not be allowed but the latter will be when the last update is 
partial and verified but the previous update is unverified. Since we rely on 
the application for the correctness of immutable indexes in case of partial 
updates assuming that the application will retry the failed updates, inheriting 
cells from unverified rows will be acceptable in this case, I think. Any 
objections for this?

> Supporting partial overwrites for immutable tables with indexes
> ---------------------------------------------------------------
>
>                 Key: PHOENIX-5768
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5768
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 5.0.0, 4.14.3
>            Reporter: Kadir OZDEMIR
>            Assignee: Kadir OZDEMIR
>            Priority: Critical
>
> Phoenix allows immutable table with indexes to be overwritten partially as 
> long as the indexed columns are not updated during partial overwrites. 
> However, there is no check/enforcement for this. The immutable index 
> mutations are prepared on the client side without reading the existing data 
> table rows. This means the index mutations prepared by the client will be 
> partial when the data table row mutations are partial. The new indexing 
> design assumes index rows are always full and all cells within an index row 
> have the same timestamp. On the read path, GlobalIndexChecker returns only 
> the cells with the most recent timestamp of the row. This means that if the 
> client updates the same row multiple times, the client will read back only 
> the most recent update which could be partial.



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

Reply via email to