virajjasani commented on a change in pull request #1933:
URL: https://github.com/apache/hbase/pull/1933#discussion_r443680050



##########
File path: 
hbase-server/src/main/java/org/apache/hadoop/hbase/master/HMaster.java
##########
@@ -1957,17 +1959,27 @@ public boolean normalizeRegions() throws IOException {
             continue;
           }
 
-          // as of this writing, `plan.execute()` is non-blocking, so there's 
no artificial rate-
-          // limiting of merge requests due to this serial loop.
+          // as of this writing, `plan.submit()` is non-blocking and uses 
Async Admin APIs to
+          // submit task , so there's no artificial rate-
+          // limiting of merge/split requests due to this serial loop.
           for (NormalizationPlan plan : plans) {
-            plan.execute(admin);
+            Future<Void> future = plan.submit(admin);
+            submittedPlanList.add(future);
             if (plan.getType() == PlanType.SPLIT) {
               splitPlanCount++;
             } else if (plan.getType() == PlanType.MERGE) {
               mergePlanCount++;
             }
           }
         }
+        for (Future<?> submittedPlan : submittedPlanList) {
+          try {
+            submittedPlan.get();

Review comment:
       True, there are either of these options we can follow:
   1. Timeout with Future.get()
   2. Perform all .get() operations asynchronously
   
   With huge no of submitted plans, do you think it makes sense to even perform 
`.get()` asynchronously by ThreadPoolExecutor and let it block until all plans 
are done and even update `normalizationPlanFailureCount` count. What do you 
think?




----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to