This is an automated email from the ASF dual-hosted git repository. jonathanhurley pushed a commit to branch branch-feature-AMBARI-14714 in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-feature-AMBARI-14714 by this push: new 0a6c9db [AMBARI-24363] - Allow Ambari to Bypass Hashing of Stack Resources (#1898) 0a6c9db is described below commit 0a6c9dbef118b272831474c33b4bdb7bc8340cd1 Author: Jonathan Hurley <jonathanhur...@apache.org> AuthorDate: Thu Jul 26 14:50:58 2018 -0400 [AMBARI-24363] - Allow Ambari to Bypass Hashing of Stack Resources (#1898) --- .../ambari/server/api/services/AmbariMetaInfo.java | 3 +- .../ambari/server/configuration/Configuration.java | 23 ++++++++++- .../apache/ambari/server/stack/StackManager.java | 46 +++++++++++----------- 3 files changed, 47 insertions(+), 25 deletions(-) diff --git a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java index b984bee..f55d7ff 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/api/services/AmbariMetaInfo.java @@ -302,7 +302,8 @@ public class AmbariMetaInfo { readServerVersion(); stackManager = stackManagerFactory.create(resourcesRoot, stackRoot, commonServicesRoot, extensionsRoot, - osFamily, false /* validate = false */, true /* refreshArchives = true */); + osFamily, false /* validate = false */, + conf.isStackResourceHashAndArchiveGenerationEnabled()); mpackManager = mpackManagerFactory.create(mpacksV2Staging, stackRoot); diff --git a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java index d74477d..583c17e 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java @@ -2601,6 +2601,16 @@ public class Configuration { public static final ConfigurationProperty<Integer> DEFAULT_MAX_DEGREE_OF_PARALLELISM_FOR_UPGRADES = new ConfigurationProperty<>( "stack.upgrade.default.parallelism", 100); + /** + * If enabled, Ambari will generate hash files for stack resource directories + * and generate compressed archives of those directories to send to agents. + * This should normally always be {@code true} except in a development + * environment. + */ + @Markdown(description = "Enables whether Ambari should generate .hash files for stack resource directories. This should always be enabled unless working in a development environment.") + public static final ConfigurationProperty<Boolean> STACK_RESOURCE_HASH_ENABLED = new ConfigurationProperty<>( + "server.stack.resources.hash.enabled", true); + private static final Logger LOG = LoggerFactory.getLogger( Configuration.class); @@ -3015,7 +3025,7 @@ public class Configuration { writeConfigFile(existingProperties, false); // reloading properties - this.properties = readConfigFile(); + properties = readConfigFile(); } /** @@ -6031,4 +6041,15 @@ public class Configuration { public int getAlertServiceCorePoolSize() { return Integer.parseInt(getProperty(SERVER_SIDE_ALERTS_CORE_POOL_SIZE)); } + + /** + * Gets whether Ambari should generate {@code .hash} and {@code archive.zip} + * files for stack resources. + * + * @return {@code true} to generate the files, {@code false} otherwise. + */ + public boolean isStackResourceHashAndArchiveGenerationEnabled() { + return Boolean.parseBoolean(getProperty(STACK_RESOURCE_HASH_ENABLED)); + } + } diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java index ec3c0bc..62409d5 100644 --- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java +++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackManager.java @@ -119,6 +119,8 @@ public class StackManager { private AmbariManagementHelper helper; + private final boolean refreshArchives; + /** * Constructor. Initialize stack manager. * @@ -165,6 +167,8 @@ public class StackManager { LOG.info("Initializing the stack manager..."); + this.refreshArchives = refreshArchives; + if (validate) { validateStackDirectory(stackRoot); validateCommonServicesDirectory(commonServicesRoot); @@ -200,39 +204,35 @@ public class StackManager { fullyResolveExtensions(stackModules, commonServiceModules, extensionModules); fullyResolveStacks(stackModules, commonServiceModules, extensionModules); - if(refreshArchives) { - updateArchives(resourcesRoot, stackRoot, stackModules, commonServiceModules, extensionModules); - } + updateArchives(resourcesRoot, stackRoot, stackModules, commonServiceModules, extensionModules); populateDB(stackDao, extensionDao); } - /*** - * Constructor. Initialize StackManager for merging service definitions and creating management packs + /** + * Generates {@code .hash} and {@code archive.zip} files by invoking the + * {@link ResourceFilesKeeperHelper}. If + * {@link Configuration#isStackResourceHashAndArchiveGenerationEnabled()} is + * disabled, then this method will do no work. + * + * @param resourcesRoot * @param stackRoot - * @param commonServicesRoot + * @param stackModules + * @param commonServiceModules + * @param extensionModules + * @throws AmbariException + * + * @see {@link Configuration#isStackResourceHashAndArchiveGenerationEnabled()} */ - public StackManager(File stackRoot, File commonServicesRoot, boolean validate) throws AmbariException{ - LOG.info("Initializing the stack manager..."); - - if (validate) { - validateStackDirectory(stackRoot); - validateCommonServicesDirectory(commonServicesRoot); - } - - stackMap = new TreeMap<>(); - - parseDirectories(stackRoot, commonServicesRoot, null); - - fullyResolveCommonServices(stackModules, commonServiceModules, extensionModules); - fullyResolveExtensions(stackModules, commonServiceModules, extensionModules); - fullyResolveStacks(stackModules, commonServiceModules, extensionModules); - } - protected void updateArchives( File resourcesRoot, File stackRoot, Map<String, StackModule> stackModules, Map<String, ServiceModule> commonServiceModules, Map<String, ExtensionModule> extensionModules ) throws AmbariException { + if (!refreshArchives) { + LOG.info("Refreshing archives is disabled, no hash or archive generation will be done."); + return; + } + LOG.info("Refreshing archives ..."); LOG.debug("Refreshing archives for stacks");