[
https://issues.apache.org/jira/browse/PHOENIX-5266?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16835027#comment-16835027
]
Abhishek Singh Chouhan commented on PHOENIX-5266:
-------------------------------------------------
[~mihir6692] Any particular reason of setting replay writes only on the first
batch? If an index write failure happens for some batch in the middle of the
list we should put the replay attribute only for that batch and retry that and
continue normally afterwards?
FYI - [~vincentpoon]
> 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)