Repository: incubator-slider Updated Branches: refs/heads/develop 51f9ab1c0 -> 3627d5d07 Updated Tags: refs/tags/HDP-2.2.9.0-tag [created] 1980a2c9b refs/tags/HDP-2.3.3.0-tag [created] 714ae5bc6 refs/tags/HDP-2.3.4.0-tag [created] 6e54b9d8c refs/tags/HDP-2.3.5.0-tag [created] c028426dc refs/tags/HDP-2.3.99.0-tag [created] 6cf8625a8
SLIDER-1079 cache metainfo object in AgentClientProvider. Contributed by Shanyu Zhao. Project: http://git-wip-us.apache.org/repos/asf/incubator-slider/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-slider/commit/3627d5d0 Tree: http://git-wip-us.apache.org/repos/asf/incubator-slider/tree/3627d5d0 Diff: http://git-wip-us.apache.org/repos/asf/incubator-slider/diff/3627d5d0 Branch: refs/heads/develop Commit: 3627d5d077eca1158c27e03d7ea6e627fd6ff445 Parents: 51f9ab1 Author: shanyu zhao <shz...@microsoft.com> Authored: Thu Feb 18 10:50:41 2016 -0500 Committer: Jon Maron <jma...@hortonworks.com> Committed: Thu Feb 18 10:50:41 2016 -0500 ---------------------------------------------------------------------- .../providers/agent/AgentClientProvider.java | 40 +++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-slider/blob/3627d5d0/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java ---------------------------------------------------------------------- diff --git a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java index e8f61a9..12d581c 100644 --- a/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java +++ b/slider-core/src/main/java/org/apache/slider/providers/agent/AgentClientProvider.java @@ -64,6 +64,7 @@ import java.io.InputStreamReader; import java.nio.charset.Charset; import java.util.Arrays; import java.util.HashMap; +import java.util.concurrent.ConcurrentHashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; @@ -85,6 +86,7 @@ public class AgentClientProvider extends AbstractClientProvider public static final String E_COULD_NOT_READ_METAINFO = "Not a valid app package. Could not read metainfo."; + protected static Map<String, Metainfo> metaInfoMap = new ConcurrentHashMap<String, Metainfo>(); protected AgentClientProvider(Configuration conf) { super(conf); @@ -166,15 +168,7 @@ public class AgentClientProvider extends AbstractClientProvider names.remove(SliderKeys.COMPONENT_AM); Map<Integer, String> priorityMap = new HashMap<Integer, String>(); - Metainfo metaInfo = null; - if (fs != null) { - try { - metaInfo = AgentUtils.getApplicationMetainfo(fs, appDef, false); - } catch (IOException ioe) { - // Ignore missing metainfo file for now - log.info("Missing metainfo {}", ioe.getMessage()); - } - } + Metainfo metaInfo = getMetainfo(fs, appDef); for (String name : names) { MapOperations component = resources.getMandatoryComponent(name); @@ -279,20 +273,14 @@ public class AgentClientProvider extends AbstractClientProvider public Set<String> getApplicationTags(SliderFileSystem fileSystem, String appDef) throws SliderException { Set<String> tags; - Metainfo metainfo; - try { - metainfo = AgentUtils.getApplicationMetainfo(fileSystem, appDef, false); - } catch (IOException e) { - log.error("Error retrieving metainfo from {}", appDef, e); - throw new SliderException("Error retrieving metainfo", e); - } + Metainfo metaInfo = getMetainfo(fileSystem, appDef); - if (metainfo == null) { + if (metaInfo == null) { log.error("Error retrieving metainfo from {}", appDef); throw new SliderException("Error parsing metainfo file, possibly bad structure."); } - Application application = metainfo.getApplication(); + Application application = metaInfo.getApplication(); tags = new HashSet<String>(); tags.add("Name: " + application.getName()); tags.add("Version: " + application.getVersion()); @@ -601,4 +589,20 @@ public class AgentClientProvider extends AbstractClientProvider output.close(); } } + + private Metainfo getMetainfo(SliderFileSystem fs, String appDef) { + Metainfo metaInfo = metaInfoMap.get(appDef); + if (fs != null && metaInfo == null) { + try { + metaInfo = AgentUtils.getApplicationMetainfo(fs, appDef, false); + metaInfoMap.put(appDef, metaInfo); + } catch (IOException ioe) { + // Ignore missing metainfo file for now + log.info("Missing metainfo {}", ioe.getMessage()); + } catch (BadConfigException bce) { + log.info("Bad Configuration {}", bce.getMessage()); + } + } + return metaInfo; + } }