diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java index 7ac0a7e..e53e8d3 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/coprocessor/RegionObserver.java @@ -958,13 +958,12 @@ public interface RegionObserver { * @param ctx the environment provided by the region server * @param stagingFamilyPaths pairs of { CF, HFile path } submitted for bulk load * @param finalPaths Map of CF to List of file paths for the loaded files - * @param hasLoaded whether the bulkLoad was successful - * @return the new value of hasLoaded + * @param hasLoaded whether the bulkLoad was successful. bulkload is done by the time this hook is called. + * Value of false doesn't rollback or cancel the load */ - default boolean postBulkLoadHFile(ObserverContext ctx, + default void postBulkLoadHFile(ObserverContext ctx, List> stagingFamilyPaths, Map> finalPaths, boolean hasLoaded) throws IOException { - return hasLoaded; } /** 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 58e2970..087106e 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 @@ -2250,17 +2250,17 @@ public class RSRpcServices implements HBaseRPCErrorHandler, } } finally { if (region.getCoprocessorHost() != null) { - loaded = region.getCoprocessorHost().postBulkLoadHFile(familyPaths, map, loaded); + region.getCoprocessorHost().postBulkLoadHFile(familyPaths, map, loaded); } } } else { // secure bulk load map = regionServer.secureBulkLoadManager.secureBulkLoadHFiles(region, request); + if (map != null) { + loaded = true; + } } BulkLoadHFileResponse.Builder builder = BulkLoadHFileResponse.newBuilder(); - if (map != null) { - loaded = true; - } builder.setLoaded(loaded); return builder.build(); } catch (IOException ie) { diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java index 2188300..af70aba 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.java @@ -1628,16 +1628,16 @@ public class RegionCoprocessorHost * @return the possibly modified value of hasLoaded * @throws IOException */ - public boolean postBulkLoadHFile(final List> familyPaths, + public void postBulkLoadHFile(final List> familyPaths, Map> map, boolean result) throws IOException { if (this.coprocEnvironments.isEmpty()) { - return result; + return; } - return execOperationWithResult( - new ObserverOperationWithResult(regionObserverGetter, result) { + execOperation(coprocEnvironments.isEmpty()? null: + new RegionObserverOperationWithoutResult() { @Override - public Boolean call(RegionObserver observer) throws IOException { - return observer.postBulkLoadHFile(this, familyPaths, map, getResult()); + public void call(RegionObserver observer) throws IOException { + observer.postBulkLoadHFile(this, familyPaths, map, result); } }); }