This is an automated email from the ASF dual-hosted git repository.
zhangduo pushed a commit to branch branch-2.6
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/branch-2.6 by this push:
new 996a5222e09 HBASE-29253 Avoid allocating a new closure on every row
processed by StoreScanner (#6901)
996a5222e09 is described below
commit 996a5222e0915b868f69f17a6cea491e63265369
Author: Charles Connell <[email protected]>
AuthorDate: Sun Apr 20 04:30:28 2025 -0400
HBASE-29253 Avoid allocating a new closure on every row processed by
StoreScanner (#6901)
Signed-off-by: Duo Zhang <[email protected]>
(cherry picked from commit abc8b430d56fc338fe9f7f4e04cd1e626966878a)
---
.../apache/hadoop/hbase/regionserver/StoreScanner.java | 15 +++++++++------
1 file changed, 9 insertions(+), 6 deletions(-)
diff --git
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
index 6b552bc10f4..451ff93137a 100644
---
a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
+++
b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/StoreScanner.java
@@ -25,6 +25,7 @@ import java.util.NavigableSet;
import java.util.Optional;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.locks.ReentrantLock;
+import java.util.function.IntConsumer;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellComparator;
import org.apache.hadoop.hbase.CellUtil;
@@ -585,6 +586,13 @@ public class StoreScanner extends
NonReversedNonLazyKeyValueScanner
Optional<RpcCall> rpcCall =
matcher.isUserScan() ? RpcServer.getCurrentCall() : Optional.empty();
+ // re-useable closure to avoid allocations
+ IntConsumer recordBlockSize = blockSize -> {
+ if (rpcCall.isPresent()) {
+ rpcCall.get().incrementBlockBytesScanned(blockSize);
+ }
+ scannerContext.incrementBlockProgress(blockSize);
+ };
int count = 0;
long totalBytesRead = 0;
@@ -625,12 +633,7 @@ public class StoreScanner extends
NonReversedNonLazyKeyValueScanner
scannerContext.returnImmediately();
}
- heap.recordBlockSize(blockSize -> {
- if (rpcCall.isPresent()) {
- rpcCall.get().incrementBlockBytesScanned(blockSize);
- }
- scannerContext.incrementBlockProgress(blockSize);
- });
+ heap.recordBlockSize(recordBlockSize);
prevCell = cell;
scannerContext.setLastPeekedCell(cell);