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

Robin Infant A updated HBASE-28599:
-----------------------------------
    Environment:     (was: hbase 2.5.5)

> RowTooBigException is thrown when duplicate increment RPC call is attempted
> ---------------------------------------------------------------------------
>
>                 Key: HBASE-28599
>                 URL: https://issues.apache.org/jira/browse/HBASE-28599
>             Project: HBase
>          Issue Type: Bug
>          Components: regionserver
>    Affects Versions: 2.5.5, 2.5.6, 2.5.7, 2.5.8
>            Reporter: Robin Infant A
>            Priority: Major
>         Attachments: RowTooBig_trace.txt
>
>
> *Issue:*
> `RowTooBigException` is thrown when a duplicate increment RPC call is 
> attempted.
> *Expected Behavior:*
> 1. The initial RPC increment call should time out for some reason.
> 2. The duplicate RPC call should be converted to a GET request and fetch the 
> result that I am trying to increment.
> 3. The result should contain only the qualifier that I am attempting to 
> increment.
> *Actual Behavior:*
> 1. The initial RPC increment call timed out, which is expected.
> 2. The duplicate RPC call is converted to a GET request but fails to clone 
> the qualifier into the GET request.
> 3. Hence, the GET request attempts to retrieve all qualifiers for the given 
> row and columnfamily, resulting in a `RowTooBigException`.
> *Steps to Reproduce:*
> 1. Ensure a row with a total value size exceeding `hbase.table.max.rowsize` 
> (default = 1073741824) exists.
> 2. Nonce property should be enabled `hbase.client.nonces.enabled` which is 
> actually defaulted to true.
> 3. Attempt to increment a qualifier against the same row.
> 4. In my case, I am using a postIncrement co-processor which may cause a 
> delay (longer than the RPC timeout property).
> 5. A duplicate increment call should be triggered, which tries to get the 
> value rather than increment it.
> 6. The GET request actually tries to retrieve all the qualifiers for the row, 
> resulting in a `RowTooBigException`.
> *Insights:*
> Upon further debugging, I found that qualifiers are not cloned into the GET 
> instance due to incorrect usage of 
> [CellScanner.advance|https://github.com/apache/hbase/blob/7ebd4381261fefd78fc2acf258a95184f4147cee/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/HRegion.java#L3833]
> *Fix Suggestion:*
> Removing the `!` operation from `while (!CellScanner.advance)` may resolve 
> the issue.
> Attached Exception Stack Trace for reference.



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

Reply via email to