Robin Infant A created HBASE-28599:
--------------------------------------

             Summary: 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.8, 2.5.7, 2.5.6, 2.5.5
            Reporter: Robin Infant A
         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