فهرست منبع

AMBARI-4568. Fixed services skipping commands when PASSIVE (ncole)

Nate Cole 11 سال پیش
والد
کامیت
dea337569d

+ 2 - 1
ambari-server/src/main/java/org/apache/ambari/server/controller/internal/ServiceResourceProvider.java

@@ -663,7 +663,8 @@ public class ServiceResourceProvider extends AbstractControllerResourceProvider
           }
           
           PassiveState schPassive = controller.getEffectivePassiveState(cluster, s, sch);
-          if (PassiveState.ACTIVE != schPassive) {
+          if (PassiveState.PASSIVE == schPassive ||
+              (requests.size() > 1 && PassiveState.ACTIVE != schPassive)) {
             ignoredScHosts.add(sch);
             if (LOG.isDebugEnabled()) {
               LOG.debug("Ignoring " + schPassive + " ServiceComponentHost"

+ 14 - 0
ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java

@@ -9271,6 +9271,20 @@ public class AmbariManagementControllerTest {
       Assert.assertFalse(sts.getHostName().equals(host1));
     }
     
+    h1.setPassiveState(cluster.getClusterId(), PassiveState.ACTIVE);
+    startService(clusterName, serviceName2, false, false);
+    
+    service2.setPassiveState(PassiveState.PASSIVE);
+    
+    ServiceRequest sr = new ServiceRequest(clusterName, serviceName2, State.INSTALLED.name());
+    rsr = ServiceResourceProviderTest.updateServices(controller,
+        Collections.singleton(sr), requestProperties, false, false);
+    
+    System.out.println(rsr.getTasks());
+    
+    Assert.assertTrue("Service is started, command should create tasks",
+        rsr.getTasks().size() > 0);
+    
   }  
 }