Return-Path: X-Original-To: apmail-ambari-commits-archive@www.apache.org Delivered-To: apmail-ambari-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B169B1003C for ; Thu, 29 May 2014 03:09:00 +0000 (UTC) Received: (qmail 2957 invoked by uid 500); 29 May 2014 03:09:00 -0000 Delivered-To: apmail-ambari-commits-archive@ambari.apache.org Received: (qmail 2920 invoked by uid 500); 29 May 2014 03:09:00 -0000 Mailing-List: contact commits-help@ambari.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: ambari-dev@ambari.apache.org Delivered-To: mailing list commits@ambari.apache.org Received: (qmail 2913 invoked by uid 99); 29 May 2014 03:09:00 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 29 May 2014 03:09:00 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 4B6B14EE23; Thu, 29 May 2014 03:09:00 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: srimanth@apache.org To: commits@ambari.apache.org Message-Id: <7c6b08fdc6a543888fb8512048fe9380@git.apache.org> X-Mailer: ASF-Git Admin Mailer Subject: git commit: AMBARI-5923. When slider app is frozen and thawed multiple times, multiple entries show up in apps table. (srimanth) Date: Thu, 29 May 2014 03:09:00 +0000 (UTC) Repository: ambari Updated Branches: refs/heads/trunk c4a659772 -> 776c9d704 AMBARI-5923. When slider app is frozen and thawed multiple times, multiple entries show up in apps table. (srimanth) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/776c9d70 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/776c9d70 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/776c9d70 Branch: refs/heads/trunk Commit: 776c9d7042ea3a5cd03dc5e24280a79c435caf9a Parents: c4a6597 Author: Srimanth Gunturi Authored: Wed May 28 20:06:38 2014 -0700 Committer: Srimanth Gunturi Committed: Wed May 28 20:06:38 2014 -0700 ---------------------------------------------------------------------- .../slider/SliderAppsViewControllerImpl.java | 14 ++- .../rest/client/SliderAppMasterClient.java | 101 +++++++++++-------- 2 files changed, 70 insertions(+), 45 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/776c9d70/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java index c6a26ca..adfa68f 100644 --- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java +++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/SliderAppsViewControllerImpl.java @@ -463,7 +463,7 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController { && ambariCluster.getDesiredConfigs().containsKey("core-site")) { Map globalConfigs = ambariClient.getConfiguration( ambariCluster, "global", - ambariCluster.getDesiredConfigs().get("yarn-site")); + ambariCluster.getDesiredConfigs().get("global")); Map yarnSiteConfigs = ambariClient.getConfiguration( ambariCluster, "yarn-site", ambariCluster.getDesiredConfigs().get("yarn-site")); @@ -512,15 +512,25 @@ public class SliderAppsViewControllerImpl implements SliderAppsViewController { .getContextClassLoader(); Thread.currentThread().setContextClassLoader(getClass().getClassLoader()); try { + Map sliderAppsMap = new HashMap(); SliderClient sliderClient = getSliderClient(); List yarnApps = sliderClient.listSliderInstances(null); for (ApplicationReport yarnApp : yarnApps) { SliderApp sliderAppObject = createSliderAppObject(yarnApp, properties, sliderClient); if (sliderAppObject != null) { - sliderApps.add(sliderAppObject); + if (sliderAppsMap.containsKey(sliderAppObject.getName())) { + if (sliderAppsMap.get(sliderAppObject.getName()).getId() + .compareTo(sliderAppObject.getId()) < 0) { + sliderAppsMap.put(sliderAppObject.getName(), sliderAppObject); + } + } else { + sliderAppsMap.put(sliderAppObject.getName(), sliderAppObject); + } } } + if (sliderAppsMap.size() > 0) + sliderApps.addAll(sliderAppsMap.values()); } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } http://git-wip-us.apache.org/repos/asf/ambari/blob/776c9d70/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java ---------------------------------------------------------------------- diff --git a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java index 9318128..d77c1c7 100644 --- a/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java +++ b/contrib/views/slider/src/main/java/org/apache/ambari/view/slider/rest/client/SliderAppMasterClient.java @@ -18,15 +18,6 @@ package org.apache.ambari.view.slider.rest.client; -import com.google.gson.JsonElement; -import com.google.gson.JsonObject; -import org.apache.ambari.view.URLStreamProvider; -import org.apache.ambari.view.ViewContext; -import org.apache.ambari.view.slider.SliderAppType; -import org.apache.ambari.view.slider.SliderAppTypeComponent; -import org.apache.commons.httpclient.HttpException; -import org.apache.log4j.Logger; - import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; @@ -35,6 +26,16 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; +import org.apache.ambari.view.URLStreamProvider; +import org.apache.ambari.view.ViewContext; +import org.apache.ambari.view.slider.SliderAppType; +import org.apache.ambari.view.slider.SliderAppTypeComponent; +import org.apache.commons.httpclient.HttpException; +import org.apache.log4j.Logger; + +import com.google.gson.JsonElement; +import com.google.gson.JsonObject; + public class SliderAppMasterClient extends BaseHttpClient { private static final Logger logger = Logger @@ -82,17 +83,20 @@ public class SliderAppMasterClient extends BaseHttpClient { try { JsonElement json = super.doGetJson(providerUrl, "/slider/quicklinks"); Map quickLinks = new HashMap(); - JsonObject jsonObject = json.getAsJsonObject().get("entries") - .getAsJsonObject(); - for (Entry entry : jsonObject.entrySet()) { - if ("org.apache.slider.jmx".equals(entry.getKey())) { - quickLinks.put("JMX", entry.getValue().getAsString()); - } else if ("org.apache.slider.monitor".equals(entry.getKey())) { - quickLinks.put("UI", entry.getValue().getAsString()); - } else if ("org.apache.slider.metrics".equals(entry.getKey())) { - quickLinks.put("Metrics", entry.getValue().getAsString()); - } else { - quickLinks.put(entry.getKey(), entry.getValue().getAsString()); + if (json != null && json.getAsJsonObject() != null + && json.getAsJsonObject().has("entries")) { + JsonObject jsonObject = json.getAsJsonObject().get("entries") + .getAsJsonObject(); + for (Entry entry : jsonObject.entrySet()) { + if ("org.apache.slider.jmx".equals(entry.getKey())) { + quickLinks.put("JMX", entry.getValue().getAsString()); + } else if ("org.apache.slider.monitor".equals(entry.getKey())) { + quickLinks.put("UI", entry.getValue().getAsString()); + } else if ("org.apache.slider.metrics".equals(entry.getKey())) { + quickLinks.put("Metrics", entry.getValue().getAsString()); + } else { + quickLinks.put(entry.getKey(), entry.getValue().getAsString()); + } } } return quickLinks; @@ -118,7 +122,7 @@ public class SliderAppMasterClient extends BaseHttpClient { continue; } JsonElement entryJson = super.doGetJson(providerUrl, "/slider/" - + entry.getKey()); + + entry.getKey()); if (entryJson != null) { JsonObject configsObj = entryJson.getAsJsonObject().get("entries") .getAsJsonObject(); @@ -144,15 +148,17 @@ public class SliderAppMasterClient extends BaseHttpClient { /** * Provides only the interesting JMX metric names and values. - * + * * @param jmxUrl - * + * * @return */ - public Map getJmx(String jmxUrl, ViewContext context, SliderAppType appType) { + public Map getJmx(String jmxUrl, ViewContext context, + SliderAppType appType) { Map jmxProperties = new HashMap(); if (appType == null || appType.getJmxMetrics() == null) { - logger.info("AppType must be provided and it must contain jmx_metrics.json to extract jmx properties"); + logger + .info("AppType must be provided and it must contain jmx_metrics.json to extract jmx properties"); return jmxProperties; } @@ -161,11 +167,15 @@ public class SliderAppMasterClient extends BaseHttpClient { components.add(appTypeComponent.getName()); } - Map>> metrics = appType.getJmxMetrics(); - Map relevantMetrics = getRelevantMetrics(metrics, components); - SliderAppJmxHelper.JMXTypes jmxType = SliderAppJmxHelper.jmxTypeExpected(relevantMetrics); + Map>> metrics = appType + .getJmxMetrics(); + Map relevantMetrics = getRelevantMetrics(metrics, + components); + SliderAppJmxHelper.JMXTypes jmxType = SliderAppJmxHelper + .jmxTypeExpected(relevantMetrics); if (jmxType == null) { - logger.info("jmx_metrics.json is malformed. It may have mixed metric key types of unsupported metric key types."); + logger + .info("jmx_metrics.json is malformed. It may have mixed metric key types of unsupported metric key types."); return jmxProperties; } @@ -176,22 +186,27 @@ public class SliderAppMasterClient extends BaseHttpClient { try { jmxStream = streamProvider.readFrom(jmxUrl, "GET", null, headers); } catch (IOException e) { - logger.error(String.format("Unable to access JMX endpoint at %s. Error %s", jmxUrl, e.getMessage())); + logger.error(String.format( + "Unable to access JMX endpoint at %s. Error %s", jmxUrl, + e.getMessage())); } if (jmxStream != null) { switch (jmxType) { - case JMX_BEAN: - SliderAppJmxHelper.extractMetricsFromJmxBean(jmxStream, jmxUrl, jmxProperties, relevantMetrics); - break; - case JSON: - SliderAppJmxHelper.extractMetricsFromJmxJson(jmxStream, jmxUrl, jmxProperties, relevantMetrics); - break; - case XML: - SliderAppJmxHelper.extractMetricsFromJmxXML(jmxStream, jmxUrl, jmxProperties, relevantMetrics); - break; - default: - logger.info("Unsupported jmx type."); + case JMX_BEAN: + SliderAppJmxHelper.extractMetricsFromJmxBean(jmxStream, jmxUrl, + jmxProperties, relevantMetrics); + break; + case JSON: + SliderAppJmxHelper.extractMetricsFromJmxJson(jmxStream, jmxUrl, + jmxProperties, relevantMetrics); + break; + case XML: + SliderAppJmxHelper.extractMetricsFromJmxXML(jmxStream, jmxUrl, + jmxProperties, relevantMetrics); + break; + default: + logger.info("Unsupported jmx type."); } } } catch (Exception e) { @@ -201,8 +216,8 @@ public class SliderAppMasterClient extends BaseHttpClient { return jmxProperties; } - private Map getRelevantMetrics(Map>> metrics, - List comps) { + private Map getRelevantMetrics( + Map>> metrics, List comps) { Map relevantMetrics = new HashMap(); for (String comp : comps) { for (Map> m : metrics.values()) {