Huginn-kio opened a new pull request, #8662: URL: https://github.com/apache/hbase/pull/8662
## HBASE-30390 ### Summary Avoid copying previous cell values during data block encoding. JIRA: https://issues.apache.org/jira/browse/HBASE-30390 ### Root cause `EncodingState.beforeShipped()` copies the complete previous cell with `KeyValueUtil.copyToNewKeyValue()`. `FastDiffDeltaEncoder` then uses that copied cell for previous-value length and content comparison. This allocates and copies value bytes even though the encoded value is already in the writer buffer. ### Fix - Keep previous key metadata stable with a key-only materialization. - Track previous value length separately. - Compare FAST_DIFF values against the encoded writer buffer after shipping. - Add focused regression coverage for shipped cells, reused buffers, and failed encoding paths. ### Testing - `JAVA_HOME=$(/usr/libexec/java_home -v 17) mvn -pl hbase-common -am -Dtest=TestFastDiffEncodingState -Dsurefire.failIfNoSpecifiedTests=false -DskipITs test` - Passed: 6 tests, 0 failures, 0 errors, 0 skipped. - `JAVA_HOME=$(/usr/libexec/java_home -v 17) mvn -pl hbase-server -am -DskipTests -Dcheckstyle.skip=true -Drat.skip=true -Dspotbugs.skip=true compile` - Passed: server reactor compilation completed successfully. - Scoped Checkstyle for the two new state classes and the regression test passed. - `apache-rat:check` and `spotbugs:check` passed for `hbase-common`. The full reactor Checkstyle command is currently blocked by existing `InterfaceIsType` violations in the `hbase-annotations` test-classification interfaces; none of the reported lines are part of this change. ### Compatibility - No public API impact; changes are internal. - No configuration impact. - No persisted-format or wire-format impact; encoded output semantics are unchanged. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
