Merge branch 'feature/SLIDER-875_uber_app' into develop Conflicts: slider-core/src/main/java/org/apache/slider/providers/agent/AgentKeys.java slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java slider-funtest/src/test/groovy/org/apache/slider/funtest/ResourcePaths.groovy
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/8863393f Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/8863393f Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/8863393f Branch: refs/heads/develop Commit: 8863393fad81865e136c9c6b86774babdddb08ad Parents: 7428cae 2893d34 Author: Billie Rinaldi <billie.rina...@gmail.com> Authored: Wed Aug 10 08:33:16 2016 -0700 Committer: Billie Rinaldi <billie.rina...@gmail.com> Committed: Wed Aug 10 08:33:16 2016 -0700 ---------------------------------------------------------------------- .../funtest/accumulo/AccumuloBasicIT.groovy | 3 + .../java/org/apache/slider/api/RoleKeys.java | 5 + .../org/apache/slider/client/SliderClient.java | 13 +- .../org/apache/slider/common/SliderKeys.java | 13 ++ .../apache/slider/common/tools/SliderUtils.java | 88 ++++++++ .../slider/core/build/InstanceBuilder.java | 205 +++++++++++++++++++ .../slider/core/conf/ConfTreeOperations.java | 50 +++++ .../providers/AbstractProviderService.java | 3 +- .../slider/providers/ProviderService.java | 4 +- .../providers/agent/AgentClientProvider.java | 29 +-- .../slider/providers/agent/AgentKeys.java | 3 + .../providers/agent/AgentProviderService.java | 188 ++++++++++++----- .../slider/providers/agent/AgentUtils.java | 16 ++ .../providers/agent/ComponentCommandOrder.java | 112 +++++++--- .../server/appmaster/SliderAppMaster.java | 3 +- .../slider/server/appmaster/state/AppState.java | 5 + .../appmaster/web/rest/agent/AgentResource.java | 4 +- .../sleep_cmd/appConfig_external_component.json | 12 ++ .../appConfig_external_component_nested.json | 12 ++ .../test_min_pkg/sleep_cmd/metainfo.json | 6 + .../metainfo_external_component_nested.json | 14 ++ .../sleep_cmd/resources_external_component.json | 22 ++ .../resources_external_component_nested.json | 12 ++ .../TestBuildExternalComponent.groovy | 138 +++++++++++++ .../slider/client/TestReplaceTokens.groovy | 5 +- .../model/mock/MockProviderService.groovy | 3 +- .../agent/TestAgentProviderService.java | 71 +++---- .../agent/TestComponentCommandOrder.java | 107 +++++++++- .../apache/slider/funtest/ResourcePaths.groovy | 9 +- .../funtest/misc/ExternalComponentIT.groovy | 171 ++++++++++++++++ 30 files changed, 1165 insertions(+), 161 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/client/SliderClient.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/common/SliderKeys.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/common/tools/SliderUtils.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/core/conf/ConfTreeOperations.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/providers/agent/AgentKeys.java ---------------------------------------------------------------------- diff --cc slider-core/src/main/java/org/apache/slider/providers/agent/AgentKeys.java index 01a3f1a,8341af4..9ea984c --- a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentKeys.java +++ b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentKeys.java @@@ -103,7 -98,8 +104,9 @@@ public interface AgentKeys String CERT_FILE_LOCALIZATION_PATH = INFRA_RUN_SECURITY_DIR + "ca.crt"; String KEY_CONTAINER_LAUNCH_DELAY = "container.launch.delay.sec"; String TEST_RELAX_VERIFICATION = "test.relax.validation"; + String AM_CONFIG_GENERATION = "am.config.generation"; + + String DEFAULT_METAINFO_MAP_KEY = "DEFAULT_KEY"; } http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java ---------------------------------------------------------------------- diff --cc slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java index 4ffae7c,452122f..bc362b5 --- a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java +++ b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java @@@ -170,10 -168,8 +172,10 @@@ public class AgentProviderService exten private int heartbeatMonitorInterval = 0; private AgentClientProvider clientProvider; private AtomicInteger taskId = new AtomicInteger(0); - private volatile Metainfo metaInfo = null; + private volatile Map<String, MetainfoHolder> metaInfoMap = new HashMap<>(); + private SliderFileSystem fileSystem = null; + private Map<String, DefaultConfig> defaultConfigs = null; - private ComponentCommandOrder commandOrder = null; + private ComponentCommandOrder commandOrder = new ComponentCommandOrder(); private HeartbeatMonitor monitor; private Boolean canAnyMasterPublish = null; private AgentLaunchParameter agentLaunchParameter = null; @@@ -277,14 -285,23 +291,26 @@@ // Reads the metainfo.xml in the application package and loads it private void buildMetainfo(AggregateConf instanceDefinition, - SliderFileSystem fileSystem) throws IOException, SliderException { - String appDef = SliderUtils.getApplicationDefinitionPath(instanceDefinition - .getAppConfOperations()); + SliderFileSystem fileSystem, + String roleGroup) + throws IOException, SliderException { + String mapKey = instanceDefinition.getAppConfOperations() + .getComponentOpt(roleGroup, ROLE_PREFIX, DEFAULT_METAINFO_MAP_KEY); + String appDef = SliderUtils.getApplicationDefinitionPath( + instanceDefinition.getAppConfOperations(), roleGroup); + MapOperations component = null; + if (roleGroup != null) { + component = instanceDefinition.getAppConfOperations().getComponent(roleGroup); + } - if (metaInfo == null) { + MetainfoHolder metaInfoHolder = metaInfoMap.get(mapKey); + if (metaInfoHolder == null) { synchronized (syncLock) { - if (metaInfo == null) { ++ if (this.fileSystem == null) { + this.fileSystem = fileSystem; ++ } + metaInfoHolder = metaInfoMap.get(mapKey); + if (metaInfoHolder == null) { readAndSetHeartbeatMonitoringInterval(instanceDefinition); initializeAgentDebugCommands(instanceDefinition); @@@ -1764,11 -1642,9 +1828,11 @@@ log.info("Status report: {}", status.toString()); if (status.getConfigs() != null) { - Application application = getMetaInfo().getApplication(); + Application application = getMetaInfo(componentGroup).getApplication(); - if ((!canAnyMasterPublishConfig() || canPublishConfig(componentGroup)) && - if (canAnyMasterPublishConfig(componentGroup) == false || canPublishConfig(componentGroup)) { ++ if ((!canAnyMasterPublishConfig(componentGroup) || canPublishConfig(componentGroup)) && + !getAmState().getAppConfSnapshot().getComponentOptBool( + componentGroup, AgentKeys.AM_CONFIG_GENERATION, false)) { // If no Master can explicitly publish then publish if its a master // Otherwise, wait till the master that can publish is ready http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/main/java/org/apache/slider/server/appmaster/state/AppState.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-core/src/test/java/org/apache/slider/providers/agent/TestAgentProviderService.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/8863393f/slider-funtest/src/test/groovy/org/apache/slider/funtest/ResourcePaths.groovy ---------------------------------------------------------------------- diff --cc slider-funtest/src/test/groovy/org/apache/slider/funtest/ResourcePaths.groovy index c0aa06a,13919df..37503d9 --- a/slider-funtest/src/test/groovy/org/apache/slider/funtest/ResourcePaths.groovy +++ b/slider-funtest/src/test/groovy/org/apache/slider/funtest/ResourcePaths.groovy @@@ -38,9 -38,10 +38,16 @@@ interface ResourcePaths String SLEEP_META = "$SLIDER_CORE_APP_PACKAGES/test_min_pkg/sleep_cmd/metainfo.json" String SLEEP_APPCONFIG = "$SLIDER_CORE_APP_PACKAGES/test_min_pkg/sleep_cmd/appConfig.json" + String AM_CONFIG_RESOURCES = "$SLIDER_CORE_APP_PACKAGES/test_am_config/resources.json" + String AM_CONFIG_META = "$SLIDER_CORE_APP_PACKAGES/test_am_config/metainfo.json" + String AM_CONFIG_APPCONFIG = "$SLIDER_CORE_APP_PACKAGES/test_am_config/appConfig.json" + + String UNIQUE_COMPONENT_RESOURCES = "$SLIDER_CORE_APP_PACKAGES/test_command_log/resources_unique_names.json" - } ++ + String EXTERNAL_RESOURCES = "$SLIDER_CORE_APP_PACKAGES/test_min_pkg/sleep_cmd/resources_external_component.json" + String EXTERNAL_APPCONFIG = "$SLIDER_CORE_APP_PACKAGES/test_min_pkg/sleep_cmd/appConfig_external_component.json" + + String NESTED_RESOURCES = "$SLIDER_CORE_APP_PACKAGES/test_min_pkg/sleep_cmd/resources_external_component_nested.json" + String NESTED_META = "$SLIDER_CORE_APP_PACKAGES/test_min_pkg/sleep_cmd/metainfo_external_component_nested.json" + String NESTED_APPCONFIG = "$SLIDER_CORE_APP_PACKAGES/test_min_pkg/sleep_cmd/appConfig_external_component_nested.json" -} ++}