You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@slider.apache.org by jm...@apache.org on 2016/02/18 16:51:11 UTC

incubator-slider git commit: SLIDER-1079 cache metainfo object in AgentClientProvider. Contributed by Shanyu Zhao.

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 <sh...@microsoft.com>
Authored: Thu Feb 18 10:50:41 2016 -0500
Committer: Jon Maron <jm...@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;
+  }
 }