You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by pa...@apache.org on 2022/04/15 06:04:34 UTC
[hbase] branch master updated: HBASE-26944 Possible resource leak while creating new region scanner (#4339)
This is an automated email from the ASF dual-hosted git repository.
pankajkumar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hbase.git
The following commit(s) were added to refs/heads/master by this push:
new 62e3efccef HBASE-26944 Possible resource leak while creating new region scanner (#4339)
62e3efccef is described below
commit 62e3efccef766e580642a8b7cb5654c96e47687d
Author: Pankaj <pa...@apache.org>
AuthorDate: Fri Apr 15 11:34:25 2022 +0530
HBASE-26944 Possible resource leak while creating new region scanner (#4339)
* HBASE-26944 Possible resource leak while creating new region scanner
Signed-off-by: Duo Zhang <zh...@apache.org>
---
.../org/apache/hadoop/hbase/regionserver/RSRpcServices.java | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
index 814f43eb17..8fe2efc41f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java
@@ -3203,8 +3203,16 @@ public class RSRpcServices extends HBaseRpcServicesBase<HRegionServer>
RegionScannerImpl coreScanner = region.getScanner(scan);
Shipper shipper = coreScanner;
RegionScanner scanner = coreScanner;
- if (region.getCoprocessorHost() != null) {
- scanner = region.getCoprocessorHost().postScannerOpen(scan, scanner);
+ try {
+ if (region.getCoprocessorHost() != null) {
+ scanner = region.getCoprocessorHost().postScannerOpen(scan, scanner);
+ }
+ } catch (Exception e) {
+ // Although region coprocessor is for advanced users and they should take care of the
+ // implementation to not damage the HBase system, closing the scanner on exception here does
+ // not have any bad side effect, so let's do it
+ scanner.close();
+ throw e;
}
long scannerId = scannerIdGenerator.generateNewScannerId();
builder.setScannerId(scannerId);