You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by bi...@apache.org on 2017/02/07 19:06:24 UTC
incubator-slider git commit: SLIDER-1205 Fix issues in uber apps and
AM config generation
Repository: incubator-slider
Updated Branches:
refs/heads/develop 083e1bea9 -> 16d24dd66
SLIDER-1205 Fix issues in uber apps and AM config generation
Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/16d24dd6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/16d24dd6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/16d24dd6
Branch: refs/heads/develop
Commit: 16d24dd66f945eaf5c7de83c06ca85e0de92d19d
Parents: 083e1be
Author: Billie Rinaldi <bi...@apache.org>
Authored: Tue Feb 7 11:06:02 2017 -0800
Committer: Billie Rinaldi <bi...@apache.org>
Committed: Tue Feb 7 11:06:02 2017 -0800
----------------------------------------------------------------------
.../slider/core/build/InstanceBuilder.java | 4 +++
.../providers/agent/AgentProviderService.java | 32 ++++++++++++++++----
2 files changed, 30 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/16d24dd6/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
----------------------------------------------------------------------
diff --git a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java b/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
index 8155214..975f5af 100644
--- a/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
+++ b/slider-core/src/main/java/org/apache/slider/core/build/InstanceBuilder.java
@@ -439,6 +439,10 @@ public class InstanceBuilder {
}
log.info("External appdefs after {}: {}", component, externalAppDefs);
+ SliderUtils.mergeMapsIgnoreDuplicateKeys(
+ appConf.getConfTree().credentials,
+ componentAppConf.getConfTree().credentials);
+
mergeExternalComponent(appConf, componentAppConf, component, null);
mergeExternalComponent(resources, componentConf.getResourceOperations(),
component, getNextPriority());
http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/16d24dd6/slider-core/src/main/java/org/apache/slider/providers/agent/AgentProviderService.java
----------------------------------------------------------------------
diff --git 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
index 047159c..4439aac 100644
--- 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
@@ -848,10 +848,15 @@ public class AgentProviderService extends AbstractProviderService implements
}
}
- private void createConfigFile(SliderFileSystem fileSystem, File file,
- ConfigFile configFile, Map<String, String> config)
+ private synchronized void createConfigFile(SliderFileSystem fileSystem,
+ File file, ConfigFile configFile, Map<String, String> config)
throws IOException {
ConfigFormat configFormat = ConfigFormat.resolve(configFile.getType());
+ if (file.exists()) {
+ log.info("Skipping writing {} file {} because it already exists",
+ configFormat, file);
+ return;
+ }
log.info("Writing {} file {}", configFormat, file);
ConfigUtils.prepConfigForTemplateOutputter(configFormat, config,
@@ -881,9 +886,10 @@ public class AgentProviderService extends AbstractProviderService implements
configFile.getFileName());
File localFile = new File(SliderKeys.RESOURCE_DIR);
if (!localFile.exists()) {
- localFile.mkdir();
+ if (!localFile.mkdir() && !localFile.exists()) {
+ throw new IOException(RESOURCE_DIR + " could not be created!");
+ }
}
- localFile = new File(localFile, new File(fileName).getName());
boolean perComponent = appConf.getComponentOptBool(roleGroup,
"conf." + configFile.getDictionaryName() + PER_COMPONENT, false);
@@ -896,11 +902,25 @@ public class AgentProviderService extends AbstractProviderService implements
} else if (perGroup) {
folder = roleGroup;
}
+ if (folder != null) {
+ localFile = new File(localFile, folder);
+ if (!localFile.exists()) {
+ if (!localFile.mkdir() && !localFile.exists()) {
+ throw new IOException(localFile + " could not be created!");
+ }
+ }
+ }
+ localFile = new File(localFile, new File(fileName).getName());
log.info("Localizing {} configs to config file {} (destination {}) " +
"based on {} configs", config.size(), localFile, fileName,
configFile.getDictionaryName());
- createConfigFile(fileSystem, localFile, configFile, config);
+ if (!localFile.exists()) {
+ createConfigFile(fileSystem, localFile, configFile, config);
+ } else {
+ log.info("Local {} file {} already exists", configFile.getType(),
+ localFile);
+ }
Path destPath = uploadResource(localFile, fileSystem, folder);
LocalResource configResource = fileSystem.createAmResource(destPath,
LocalResourceType.FILE);
@@ -1956,7 +1976,7 @@ public class AgentProviderService extends AbstractProviderService implements
// replace host names
for (String token : replaceTokens.keySet()) {
if (value.contains(token)) {
- value = value.replace(token, replaceTokens.get(token));
+ value = value.replaceAll(Pattern.quote(token), replaceTokens.get(token));
}
}
ExportEntry entry = new ExportEntry();