You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by ds...@apache.org on 2017/07/25 15:25:58 UTC

ambari git commit: AMBARI-21551 Restart due to Stale configurations leads to an internal system exception (dsen)

Repository: ambari
Updated Branches:
  refs/heads/trunk 6aca7feac -> f58abd481


AMBARI-21551 Restart due to Stale configurations leads to an internal system exception (dsen)


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

Branch: refs/heads/trunk
Commit: f58abd48173725abd1d68dd58d0348f7db6d5194
Parents: 6aca7fe
Author: Dmytro Sen <ds...@apache.org>
Authored: Tue Jul 25 18:25:29 2017 +0300
Committer: Dmytro Sen <ds...@apache.org>
Committed: Tue Jul 25 18:25:48 2017 +0300

----------------------------------------------------------------------
 .../controller/AmbariCustomCommandExecutionHelper.java      | 8 ++++++++
 .../server/controller/internal/RequestResourceProvider.java | 4 +++-
 .../controller/internal/RequestResourceProviderTest.java    | 9 ++++++---
 3 files changed, 17 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/f58abd48/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
index f4b650e..5f02baa 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariCustomCommandExecutionHelper.java
@@ -39,6 +39,7 @@ import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_NAM
 import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.STACK_VERSION;
 import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.USER_GROUPS;
 import static org.apache.ambari.server.agent.ExecutionCommand.KeyNames.USER_LIST;
+import static org.apache.ambari.server.controller.internal.RequestResourceProvider.HAS_RESOURCE_FILTERS;
 
 import java.text.MessageFormat;
 import java.util.ArrayList;
@@ -1084,6 +1085,13 @@ public class AmbariCustomCommandExecutionHelper {
 
     List<RequestResourceFilter> resourceFilters = actionRequest.getResourceFilters();
 
+    if (resourceFilters != null && resourceFilters.isEmpty() &&
+            actionRequest.getParameters().containsKey(HAS_RESOURCE_FILTERS) &&
+            actionRequest.getParameters().get(HAS_RESOURCE_FILTERS).equalsIgnoreCase("true")) {
+      LOG.warn("Couldn't find any resource that satisfies given resource filters");
+      return;
+    }
+
     if (resourceFilters == null || resourceFilters.isEmpty()) {
       throw new AmbariException("Command execution cannot proceed without a " +
         "resource filter.");

http://git-wip-us.apache.org/repos/asf/ambari/blob/f58abd48/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
index a8f7638..3e8ea01 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/RequestResourceProvider.java
@@ -129,6 +129,7 @@ public class RequestResourceProvider extends AbstractControllerResourceProvider
   public static final String ACTION_ID = "action";
   public static final String INPUTS_ID = "parameters";
   public static final String EXLUSIVE_ID = "exclusive";
+  public static final String HAS_RESOURCE_FILTERS = "HAS_RESOURCE_FILTERS";
 
   private static Set<String> pkPropertyIds =
     new HashSet<>(Arrays.asList(new String[]{
@@ -444,12 +445,14 @@ public class RequestResourceProvider extends AbstractControllerResourceProvider
     List<RequestResourceFilter> resourceFilterList = null;
     Set<Map<String, Object>> resourceFilters;
 
+    Map<String, String> params = new HashMap<String, String>();
     Object resourceFilterObj = propertyMap.get(REQUEST_RESOURCE_FILTER_ID);
     if (resourceFilterObj != null && resourceFilterObj instanceof HashSet) {
       resourceFilters = (HashSet<Map<String, Object>>) resourceFilterObj;
       resourceFilterList = new ArrayList<>();
 
       for (Map<String, Object> resourceMap : resourceFilters) {
+        params.put(HAS_RESOURCE_FILTERS, "true");
         resourceFilterList.addAll(parseRequestResourceFilter(resourceMap,
           (String) propertyMap.get(REQUEST_CLUSTER_NAME_PROPERTY_ID)));
       }
@@ -461,7 +464,6 @@ public class RequestResourceProvider extends AbstractControllerResourceProvider
       operationLevel = new RequestOperationLevel(requestInfoProperties);
     }
 
-    Map<String, String> params = new HashMap<>();
     String keyPrefix = INPUTS_ID + "/";
     for (String key : requestInfoProperties.keySet()) {
       if (key.startsWith(keyPrefix)) {

http://git-wip-us.apache.org/repos/asf/ambari/blob/f58abd48/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
index d243e73..d2c462b 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/RequestResourceProviderTest.java
@@ -1032,7 +1032,7 @@ public class RequestResourceProviderTest {
     Assert.assertEquals(null, capturedResourceFilter.getComponentName());
     Assert.assertNotNull(capturedResourceFilter.getHostNames());
     Assert.assertEquals(0, capturedResourceFilter.getHostNames().size());
-    Assert.assertEquals(0, actionRequest.getValue().getParameters().size());
+    Assert.assertEquals(1, actionRequest.getValue().getParameters().size());
   }
 
   @Test
@@ -1152,7 +1152,7 @@ public class RequestResourceProviderTest {
     Assert.assertEquals(null, capturedResourceFilter.getComponentName());
     Assert.assertEquals(3, capturedResourceFilter.getHostNames().size());
     Assert.assertArrayEquals(expectedHosts, capturedResourceFilter.getHostNames().toArray());
-    Assert.assertEquals(2, capturedRequest.getParameters().size());
+    Assert.assertEquals(3, capturedRequest.getParameters().size());
     for(String key : expectedParams.keySet()) {
       Assert.assertEquals(expectedParams.get(key), capturedRequest.getParameters().get(key));
     }
@@ -1239,6 +1239,9 @@ public class RequestResourceProviderTest {
     }
     Assert.assertNotNull(propertyIdToAssert);
     Assert.assertEquals("true", propertyValueToAssert);
+    Assert.assertTrue(capturedRequest.getResourceFilters().isEmpty());
+    Assert.assertEquals(1, capturedRequest.getParameters().size());
+    Assert.assertEquals("true", capturedRequest.getParameters().get(RequestResourceProvider.HAS_RESOURCE_FILTERS));
   }
 
   @Test
@@ -1548,7 +1551,7 @@ public class RequestResourceProviderTest {
     Assert.assertEquals(null, capturedResourceFilter.getComponentName());
     Assert.assertNotNull(capturedResourceFilter.getHostNames());
     Assert.assertEquals(2, capturedResourceFilter.getHostNames().size());
-    Assert.assertEquals(0, actionRequest.getValue().getParameters().size());
+    Assert.assertEquals(1, actionRequest.getValue().getParameters().size());
   }
 
   @Test