[ 
https://issues.apache.org/jira/browse/HBASE-28424?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Viraj Jasani resolved HBASE-28424.
----------------------------------
    Fix Version/s: 2.6.0
                   2.4.18
                   3.0.0-beta-2
                   2.5.9
     Hadoop Flags: Reviewed
       Resolution: Fixed

> Set correct Result to RegionActionResult for successful Put/Delete mutations
> ----------------------------------------------------------------------------
>
>                 Key: HBASE-28424
>                 URL: https://issues.apache.org/jira/browse/HBASE-28424
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Viraj Jasani
>            Assignee: Jing Yu
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 2.6.0, 2.4.18, 3.0.0-beta-2, 2.5.9
>
>
> While returning response of multi(), RSRpcServices build the 
> RegionActionResult with Result or Exception (ClientProtos.ResultOrException). 
> It sets the Exception to this class in all cases where the operation fails 
> with corresponding exception types e.g. NoSuchColumnFamilyException or 
> FailedSanityCheckException etc.
> In case of atomic mutations Increment and Append, we add the Result object to 
> ClientProtos.ResultOrException, which is used by client to retrieve result 
> from the batch API: {_}Table#batch(List<? extends Row> actions, Object[] 
> results){_}.
> Phoenix performs atomic mutation for Put using _preBatchMutate()_ endpoint. 
> Hence, returning Result object with ResultOrException is important for the 
> purpose of returning the result back to the client as part of the atomic 
> operation. Even if Phoenix returns the OperationStatus (with Result) to 
> MiniBatchOperationInProgress, since HBase uses the empty Result for the 
> Success case, the client would not be able to get the expected result.
> {code:java}
> case SUCCESS:
>   builder.addResultOrException(
>     getResultOrException(ClientProtos.Result.getDefaultInstance(), index));
>   break; {code}
> If OperationStatus returned by _Region#batchMutate_ has valid Result object, 
> it should be used by RSRpcServices while returning the response.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to