phoenix-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vincent Poon (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PHOENIX-5266) Client can only write on Index Table and skip data table if failure happens because of region split/move etc
Date Tue, 07 May 2019 23:24:00 GMT

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

Vincent Poon commented on PHOENIX-5266:
---------------------------------------

Actually looking at it further, we would still need to set the serverTimestamp, otherwise
the retried write would be seen as an update by the Indexer.  And if we need to do that, I
guess we might as well do option 1 above.

> Client can only write on Index Table and skip data table if failure happens because of
region split/move etc
> ------------------------------------------------------------------------------------------------------------
>
>                 Key: PHOENIX-5266
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-5266
>             Project: Phoenix
>          Issue Type: Bug
>    Affects Versions: 4.15.0, 4.14.1, 5.1.0, 4.14.2
>            Reporter: Mihir Monani
>            Assignee: Mihir Monani
>            Priority: Blocker
>             Fix For: 4.14.2
>
>         Attachments: PHOENIX-5266-4.x-HBase-1.3.01.patch, PHOENIX-5266.patch, PHOENIX-5266.patch
>
>
> With Phoenix 4.14.1 client, There is a scenario where client would skip data table write
but do successful index table write. In this case, we should treat it as Data loss scenario.
>  
> Relevant code path :-
> [https://github.com/apache/phoenix/blob/4.x-HBase-1.3/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java#L994-L1043]
> [https://github.com/apache/phoenix/blob/4.x-HBase-1.3/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java#L1089-L1109]
>  
> Here is what happens :-
>  * Consider below assumptions for scenario :- 
>  ** max no row in single batch = 100
>  ** max size of batch = 2 MB
>  * When client faces SQLException Code 1121, it sets variable shouldRetryIndexedMutation=true.
>  * In scenarios where client sends batch of 100 rows only as per configuration, but batch
size is >2 MB, MutationState.java#991 will split this 100 row batch into multiple smaller
batches which are <2MB.
>  ** MutationState.java#991 :- [https://github.com/apache/phoenix/blob/4.x-HBase-1.3/phoenix-core/src/main/java/org/apache/phoenix/execute/MutationState.java#L991]
>  * Suppose there are 5 batches of 20 rows but client faces 1121 SQLExceptionCode on 2nd
batch , then it will set shouldRetryIndexedMutation=true and it will retry all 5 batches again
with only Index updates. This will results in rows missing from Data table.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Mime
View raw message