Uploaded image for project: 'Ambari'
  1. Ambari
  2. AMBARI-17151

Blueprint deployments fail when services manually removed from stack definitions

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Critical
    • Resolution: Fixed
    • 2.4.0
    • 2.4.0
    • ambari-server
    • None

    Description

      In certain custom use cases, an Ambari user may choose to customize the Ambari stack definitions by manually removing services.

      This can cause some failures during a Blueprint deployment, particularly in the area of "excluded" configurations.

      When an "excluded" configuration type is found, the Blueprint processor attempts to add this configuration, and queries the Stack APIs to determine the service associated with this configuration type.

      If this particular service has been manually deleted from the stacks, the Stack APIs will throw a runtime exception, which causes the entire Blueprint deployment to fail.

      Example:

      If Ambari Metrics is included in a Blueprint, the "storm-site" configuration type is considered an "excluded-configuration" by the stack definitions. In this case, if the "STORM" service definitions have been removed, then the following exception will result when a cluster deployment based on a Blueprint is attempted:

      java.lang.IllegalArgumentException: Specified configuration type is not associated with any service: storm-site
      at org.apache.ambari.server.controller.internal.Stack.getServiceForConfigType(Stack.java:485)
      at org.apache.ambari.server.controller.internal.BlueprintConfigurationProcessor.addExcludedConfigProperties(BlueprintConfigurationProcessor.java:2781)
      at org.apache.ambari.server.controller.internal.BlueprintConfigurationProcessor.setMissingConfigurations(BlueprintConfigurationProcessor.java:2751)
      at org.apache.ambari.server.controller.internal.BlueprintConfigurationProcessor.doUpdateForClusterCreate(BlueprintConfigurationProcessor.java:335)
      at org.apache.ambari.server.topology.ClusterConfigurationRequest.process(ClusterConfigurationRequest.java:153)
      at org.apache.ambari.server.topology.TopologyManager$ConfigureClusterTask.call(TopologyManager.java:780)
      at org.apache.ambari.server.topology.TopologyManager$ConfigureClusterTask.call(TopologyManager.java:754)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      ...

      In these custom deployments, the Blueprints processor should be more lenient with respect to error handling.

      If a matching service is not found for a given "excluded" configuration type, the Blueprint processor should log this as a WARNING, indicating that the stacks have likely been modified outside of Ambari.

      I'm working on a fix for this, and will be submitting a patch soon.

      Attachments

        1. AMBARI-17151.patch
          5 kB
          Bob Nettleton

        Issue Links

          Activity

            People

              rnettleton Bob Nettleton
              rnettleton Bob Nettleton
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Time Tracking

                  Estimated:
                  Original Estimate - 24h
                  24h
                  Remaining:
                  Remaining Estimate - 24h
                  24h
                  Logged:
                  Time Spent - Not Specified
                  Not Specified