You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2015/10/23 16:47:54 UTC

[40/50] [abbrv] ambari git commit: AMBARI-12702: Express Upgrade: Parallelize restarts (jluniya)

AMBARI-12702: Express Upgrade: Parallelize restarts (jluniya)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/b4468ce4
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/b4468ce4
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/b4468ce4

Branch: refs/heads/branch-dev-patch-upgrade
Commit: b4468ce44b28bc72a64681e6dc7617b4a2812792
Parents: 049934f
Author: Jayush Luniya <jl...@hortonworks.com>
Authored: Thu Oct 22 19:31:32 2015 -0700
Committer: Jayush Luniya <jl...@hortonworks.com>
Committed: Thu Oct 22 19:31:32 2015 -0700

----------------------------------------------------------------------
 .../ambari/server/state/UpgradeHelper.java      | 38 +++++++++++---------
 .../state/stack/upgrade/ClusterGrouping.java    |  2 +-
 .../state/stack/upgrade/ColocatedGrouping.java  |  2 +-
 .../server/state/stack/upgrade/Grouping.java    | 19 +++++++---
 .../stack/upgrade/ServiceCheckGrouping.java     |  2 +-
 .../stack/upgrade/StageWrapperBuilder.java      |  2 +-
 .../stack/upgrade/StageWrapperBuilderTest.java  |  2 +-
 7 files changed, 40 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/b4468ce4/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
index fd92d21..ddfc36e 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/UpgradeHelper.java
@@ -286,10 +286,26 @@ public class UpgradeHelper {
         groupHolder.skippable = true;
       }
 
+      // Attempt to get the function of the group, during a NonRolling Upgrade
+      Task.Type functionName = null;
+      boolean scheduleInParallel = false;
       // NonRolling defaults to not performing service checks on a group.
       // Of course, a Service Check Group does indeed run them.
       if (upgradePack.getType() == UpgradeType.NON_ROLLING) {
         group.performServiceCheck = false;
+
+        if (RestartGrouping.class.isInstance(group)) {
+          functionName = ((RestartGrouping) group).getFunction();
+          scheduleInParallel = true;
+        }
+        if (StartGrouping.class.isInstance(group)) {
+          functionName = ((StartGrouping) group).getFunction();
+          scheduleInParallel = true;
+        }
+        if (StopGrouping.class.isInstance(group)) {
+          functionName = ((StopGrouping) group).getFunction();
+          scheduleInParallel = true;
+        }
       }
 
       StageWrapperBuilder builder = group.getBuilder();
@@ -311,19 +327,7 @@ public class UpgradeHelper {
         if (upgradePack.getType() == UpgradeType.ROLLING && !allTasks.containsKey(service.serviceName)) {
           continue;
         }
-        
-        // Attempt to get the function of the group, during a NonRolling Upgrade
-        Task.Type functionName = null;
 
-        if (RestartGrouping.class.isInstance(group)) {
-          functionName = ((RestartGrouping) group).getFunction();
-        }
-        if (StartGrouping.class.isInstance(group)) {
-          functionName = ((StartGrouping) group).getFunction();
-        }
-        if (StopGrouping.class.isInstance(group)) {
-          functionName = ((StopGrouping) group).getFunction();
-        }
 
         for (String component : service.components) {
           // Rolling Upgrade has exactly one task for a Component.
@@ -392,7 +396,7 @@ public class UpgradeHelper {
                   hostsType.hosts = order;
 
                   builder.add(context, hostsType, service.serviceName,
-                      svc.isClientOnlyService(), pc, null);
+                      svc.isClientOnlyService(), pc, null, false);
                 }
                 break;
               case NON_ROLLING:
@@ -417,21 +421,21 @@ public class UpgradeHelper {
 
 
                   builder.add(context, ht1, service.serviceName,
-                      svc.isClientOnlyService(), pc, h1Params);
+                      svc.isClientOnlyService(), pc, h1Params, false);
 
                   builder.add(context, ht2, service.serviceName,
-                      svc.isClientOnlyService(), pc, h2Params);
+                      svc.isClientOnlyService(), pc, h2Params, false);
                 } else {
                   // If no NameNode HA, then don't need to change hostsType.hosts since there should be exactly one.
                   builder.add(context, hostsType, service.serviceName,
-                      svc.isClientOnlyService(), pc, null);
+                      svc.isClientOnlyService(), pc, null, false);
                 }
 
                 break;
             }
           } else {
             builder.add(context, hostsType, service.serviceName,
-                svc.isClientOnlyService(), pc, null);
+                svc.isClientOnlyService(), pc, null, scheduleInParallel);
           }
         }
       }

http://git-wip-us.apache.org/repos/asf/ambari/blob/b4468ce4/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
index 0e9d2c8..6137285 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
@@ -108,7 +108,7 @@ public class ClusterGrouping extends Grouping {
 
     @Override
     public void add(UpgradeContext ctx, HostsType hostsType, String service,
-        boolean clientOnly, ProcessingComponent pc, Map<String, String> params) {
+        boolean clientOnly, ProcessingComponent pc, Map<String, String> params, boolean scheduleInParallel) {
       // !!! no-op in this case
     }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/b4468ce4/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
index 11e9267..8218162 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ColocatedGrouping.java
@@ -81,7 +81,7 @@ public class ColocatedGrouping extends Grouping {
 
     @Override
     public void add(UpgradeContext ctx, HostsType hostsType, String service,
-        boolean clientOnly, ProcessingComponent pc, Map<String, String> params) {
+        boolean clientOnly, ProcessingComponent pc, Map<String, String> params, boolean scheduleInParallel) {
 
       boolean forUpgrade = ctx.getDirection().isUpgrade();
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/b4468ce4/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java
index cd3ee68..fd54ed8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/Grouping.java
@@ -89,7 +89,7 @@ public class Grouping {
      */
     @Override
     public void add(UpgradeContext ctx, HostsType hostsType, String service,
-       boolean clientOnly, ProcessingComponent pc, Map<String, String> params) {
+       boolean clientOnly, ProcessingComponent pc, Map<String, String> params, boolean scheduleInParallel) {
 
       boolean forUpgrade = ctx.getDirection().isUpgrade();
 
@@ -112,14 +112,23 @@ public class Grouping {
       // Add the processing component
       if (null != pc.tasks && 1 == pc.tasks.size()) {
         Task t = pc.tasks.get(0);
-
-        for (String hostName : hostsType.hosts) {
+        if(scheduleInParallel) {
+          // Create single stage for all
           StageWrapper stage = new StageWrapper(
               t.getStageWrapperType(),
-              getStageText(t.getActionVerb(), ctx.getComponentDisplay(service, pc.name), Collections.singleton(hostName)),
+              getStageText(t.getActionVerb(), ctx.getComponentDisplay(service, pc.name), hostsType.hosts),
               params,
-              new TaskWrapper(service, pc.name, Collections.singleton(hostName), params, t));
+              new TaskWrapper(service, pc.name, hostsType.hosts, params, t));
           m_stages.add(stage);
+        } else {
+          for (String hostName : hostsType.hosts) {
+            StageWrapper stage = new StageWrapper(
+                t.getStageWrapperType(),
+                getStageText(t.getActionVerb(), ctx.getComponentDisplay(service, pc.name), Collections.singleton(hostName)),
+                params,
+                new TaskWrapper(service, pc.name, Collections.singleton(hostName), params, t));
+            m_stages.add(stage);
+          }
         }
       }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/b4468ce4/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
index 0033185..19fabe8 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ServiceCheckGrouping.java
@@ -103,7 +103,7 @@ public class ServiceCheckGrouping extends Grouping {
      */
     @Override
     public void add(UpgradeContext ctx, HostsType hostsType, String service,
-        boolean clientOnly, ProcessingComponent pc, Map<String, String> params) {
+        boolean clientOnly, ProcessingComponent pc, Map<String, String> params, boolean scheduleInParallel) {
       // !!! nothing to do here
     }
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/b4468ce4/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java
index 6ef0980..587ce55 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilder.java
@@ -71,7 +71,7 @@ public abstract class StageWrapperBuilder {
    *          additional parameters
    */
   public abstract void add(UpgradeContext upgradeContext, HostsType hostsType, String service,
-      boolean clientOnly, ProcessingComponent pc, Map<String, String> params);
+      boolean clientOnly, ProcessingComponent pc, Map<String, String> params, boolean scheduleInParallel);
 
   /**
    * Builds the stage wrappers, including any pre- and post-procesing that needs

http://git-wip-us.apache.org/repos/asf/ambari/blob/b4468ce4/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilderTest.java
index 94a5336..6fcf7ce 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/StageWrapperBuilderTest.java
@@ -126,7 +126,7 @@ public class StageWrapperBuilderTest {
      */
     @Override
     public void add(UpgradeContext upgradeContext, HostsType hostsType, String service,
-        boolean clientOnly, ProcessingComponent pc, Map<String, String> params) {
+        boolean clientOnly, ProcessingComponent pc, Map<String, String> params, boolean scheduleInParallel) {
     }
 
     /**