From ffe440c9fc0bcc328c14b9b8b43d375fced2b10b Mon Sep 17 00:00:00 2001 From: zhangduo Date: Tue, 12 Mar 2019 20:51:08 +0800 Subject: [PATCH] HBASE-22039 Should add the synchronous parameter for the XXXSwitch method in AsyncAdmin --- .../hadoop/hbase/client/AsyncAdmin.java | 45 ++++++++++++++++--- .../hadoop/hbase/client/AsyncHBaseAdmin.java | 12 ++--- .../hbase/client/RawAsyncHBaseAdmin.java | 43 +++++++++--------- 3 files changed, 66 insertions(+), 34 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java index 595282152b..05cf96ea87 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncAdmin.java @@ -435,10 +435,21 @@ public interface AsyncAdmin { /** * Turn the Merge switch on or off. - * @param on + * @param enabled enabled or not * @return Previous switch value wrapped by a {@link CompletableFuture} */ - CompletableFuture mergeSwitch(boolean on); + default CompletableFuture mergeSwitch(boolean enabled) { + return mergeSwitch(enabled, false); + } + + /** + * Turn the Merge switch on or off. + * @param enabled enabled or not + * @param synchronous If true, it waits until current split() call, if outstanding, + * to return. + * @return Previous switch value wrapped by a {@link CompletableFuture} + */ + CompletableFuture mergeSwitch(boolean enabled, boolean synchronous); /** * Query the current state of the Merge switch. @@ -449,10 +460,21 @@ public interface AsyncAdmin { /** * Turn the Split switch on or off. - * @param on + * @param enabled enabled or not * @return Previous switch value wrapped by a {@link CompletableFuture} */ - CompletableFuture splitSwitch(boolean on); + default CompletableFuture splitSwitch(boolean enabled) { + return splitSwitch(enabled, false); + } + + /** + * Turn the Split switch on or off. + * @param enabled enabled or not + * @param synchronous If true, it waits until current split() call, if outstanding, + * to return. + * @return Previous switch value wrapped by a {@link CompletableFuture} + */ + CompletableFuture splitSwitch(boolean enabled, boolean synchronous); /** * Query the current state of the Split switch. @@ -1132,10 +1154,21 @@ public interface AsyncAdmin { /** * Turn the load balancer on or off. - * @param on + * @param on Set to true to enable, false to disable. + * @return Previous balancer value wrapped by a {@link CompletableFuture}. + */ + default CompletableFuture balancerSwitch(boolean on) { + return balancerSwitch(on, false); + } + + /** + * Turn the load balancer on or off. + * @param on Set to true to enable, false to disable. + * @param synchronous If true, it waits until current balance() call, if outstanding, + * to return. * @return Previous balancer value wrapped by a {@link CompletableFuture}. */ - CompletableFuture balancerSwitch(boolean on); + CompletableFuture balancerSwitch(boolean on, boolean synchronous); /** * Invoke the balancer. Will run the balancer and if regions to move, it will go ahead and do the diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncHBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncHBaseAdmin.java index 53eaec808e..6770592769 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncHBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/AsyncHBaseAdmin.java @@ -296,8 +296,8 @@ class AsyncHBaseAdmin implements AsyncAdmin { } @Override - public CompletableFuture mergeSwitch(boolean on) { - return wrap(rawAdmin.mergeSwitch(on)); + public CompletableFuture mergeSwitch(boolean enabled, boolean synchronous) { + return wrap(rawAdmin.mergeSwitch(enabled, synchronous)); } @Override @@ -306,8 +306,8 @@ class AsyncHBaseAdmin implements AsyncAdmin { } @Override - public CompletableFuture splitSwitch(boolean on) { - return wrap(rawAdmin.splitSwitch(on)); + public CompletableFuture splitSwitch(boolean enabled, boolean synchronous) { + return wrap(rawAdmin.splitSwitch(enabled, synchronous)); } @Override @@ -664,8 +664,8 @@ class AsyncHBaseAdmin implements AsyncAdmin { } @Override - public CompletableFuture balancerSwitch(boolean on) { - return wrap(rawAdmin.balancerSwitch(on)); + public CompletableFuture balancerSwitch(boolean on, boolean synchronous) { + return wrap(rawAdmin.balancerSwitch(on, synchronous)); } @Override diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java index 1092332e76..df57fa74dd 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/RawAsyncHBaseAdmin.java @@ -1176,8 +1176,8 @@ class RawAsyncHBaseAdmin implements AsyncAdmin { } @Override - public CompletableFuture mergeSwitch(boolean on) { - return setSplitOrMergeOn(on, MasterSwitchType.MERGE); + public CompletableFuture mergeSwitch(boolean enabled, boolean synchronous) { + return setSplitOrMergeOn(enabled, synchronous, MasterSwitchType.MERGE); } @Override @@ -1186,8 +1186,8 @@ class RawAsyncHBaseAdmin implements AsyncAdmin { } @Override - public CompletableFuture splitSwitch(boolean on) { - return setSplitOrMergeOn(on, MasterSwitchType.SPLIT); + public CompletableFuture splitSwitch(boolean enabled, boolean synchronous) { + return setSplitOrMergeOn(enabled, synchronous, MasterSwitchType.SPLIT); } @Override @@ -1195,16 +1195,16 @@ class RawAsyncHBaseAdmin implements AsyncAdmin { return isSplitOrMergeOn(MasterSwitchType.SPLIT); } - private CompletableFuture setSplitOrMergeOn(boolean on, MasterSwitchType switchType) { + private CompletableFuture setSplitOrMergeOn(boolean enabled, boolean synchronous, + MasterSwitchType switchType) { SetSplitOrMergeEnabledRequest request = - RequestConverter.buildSetSplitOrMergeEnabledRequest(on, false, switchType); - return this - . newMasterCaller() - .action( - (controller, stub) -> this - . call( - controller, stub, request, (s, c, req, done) -> s.setSplitOrMergeEnabled(c, req, - done), (resp) -> resp.getPrevValueList().get(0))).call(); + RequestConverter.buildSetSplitOrMergeEnabledRequest(enabled, synchronous, switchType); + return this. newMasterCaller() + .action((controller, stub) -> this + . call(controller, + stub, request, (s, c, req, done) -> s.setSplitOrMergeEnabled(c, req, done), + (resp) -> resp.getPrevValueList().get(0))) + .call(); } private CompletableFuture isSplitOrMergeOn(MasterSwitchType switchType) { @@ -3127,15 +3127,14 @@ class RawAsyncHBaseAdmin implements AsyncAdmin { } @Override - public CompletableFuture balancerSwitch(final boolean on) { - return this - . newMasterCaller() - .action( - (controller, stub) -> this - . call(controller, - stub, RequestConverter.buildSetBalancerRunningRequest(on, true), - (s, c, req, done) -> s.setBalancerRunning(c, req, done), - (resp) -> resp.getPrevBalanceValue())).call(); + public CompletableFuture balancerSwitch(boolean on, boolean synchronous) { + return this. newMasterCaller() + .action((controller, stub) -> this + . call(controller, stub, + RequestConverter.buildSetBalancerRunningRequest(on, synchronous), + (s, c, req, done) -> s.setBalancerRunning(c, req, done), + (resp) -> resp.getPrevBalanceValue())) + .call(); } @Override -- 2.17.1