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