[ https://issues.apache.org/jira/browse/HBASE-28599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17847675#comment-17847675 ]
youngju kim edited comment on HBASE-28599 at 5/19/24 12:53 PM: --------------------------------------------------------------- Hello, [~zhangduo] Could you review this PR? [https://github.com/apache/hbase/pull/5927] was (Author: JIRAUSER300939): Hello, [~zhangduo] Could you review this PR? [https://github.com/apache/hbase/pull/5927] > 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 > Assignee: youngju kim > Priority: Major > Labels: pull-request-available > 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)