You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by mp...@apache.org on 2016/03/14 19:03:59 UTC
[2/2] ambari git commit: AMBARI-15400. Loading monitoring page is
stuck after cluster deploy (java.lang.StackOverflowError). (mpapirkovskyy)
AMBARI-15400. Loading monitoring page is stuck after cluster deploy (java.lang.StackOverflowError). (mpapirkovskyy)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/7210c9df
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/7210c9df
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/7210c9df
Branch: refs/heads/trunk
Commit: 7210c9dfb804cbe0622b4f568f29f57e311df024
Parents: 5bd7c2b
Author: Myroslav Papirkovskyi <mp...@hortonworks.com>
Authored: Mon Mar 14 16:17:54 2016 +0200
Committer: Myroslav Papirkovskyi <mp...@hortonworks.com>
Committed: Mon Mar 14 19:58:42 2016 +0200
----------------------------------------------------------------------
.../internal/StackArtifactResourceProvider.java | 71 ++++++++------------
.../server/state/stack/MetricDefinition.java | 8 ++-
2 files changed, 36 insertions(+), 43 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/7210c9df/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
index 3dbe0a8..4d047d5 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/StackArtifactResourceProvider.java
@@ -21,7 +21,6 @@ package org.apache.ambari.server.controller.internal;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.google.inject.Inject;
-import com.rits.cloning.Cloner;
import org.apache.ambari.server.AmbariException;
import org.apache.ambari.server.StackAccessException;
import org.apache.ambari.server.StaticallyInject;
@@ -58,7 +57,6 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -598,62 +596,51 @@ public class StackArtifactResourceProvider extends AbstractControllerResourcePro
return serviceDescriptors;
}
- private Map<String, Map<String, List<MetricDefinition>>> removeAggregateFunctions(
+ private static Map<String, Map<String, List<MetricDefinition>>> removeAggregateFunctions(
Map<String, Map<String, List<MetricDefinition>>> serviceMetrics ) {
Map<String, Map<String, List<MetricDefinition>>> filteredServiceMetrics = null;
+
if (serviceMetrics != null) {
- Cloner cloner = new Cloner();
- filteredServiceMetrics = cloner.deepClone(serviceMetrics);
+ filteredServiceMetrics = new HashMap<>();
// For every Component
- for (Map<String, List<MetricDefinition>> componentMetricDef : filteredServiceMetrics.values()) {
- // For every Component / HostComponent category
- for (Map.Entry<String, List<MetricDefinition>> metricDefEntry : componentMetricDef.entrySet()) {
- //For every metric definition
- for (MetricDefinition metricDefinition : metricDefEntry.getValue()) {
- // Metrics System metrics only
- if (metricDefinition.getType().equals("ganglia")) {
- // Create a new map for each category
- for (Map<String, Metric> metricByCategory : metricDefinition.getMetricsByCategory().values()) {
- Iterator<Map.Entry<String, Metric>> iterator = metricByCategory.entrySet().iterator();
- while (iterator.hasNext()) {
- Map.Entry<String, Metric> entry = iterator.next();
- String metricName = entry.getKey();
- if (PropertyHelper.hasAggregateFunctionSuffix(metricName)) {
- iterator.remove();
- }
- }
- }
- }
- }
+ for (String component : serviceMetrics.keySet()) {
+ Map<String, List<MetricDefinition>> componentMetricsCopy = new HashMap<>();
+ Map<String, List<MetricDefinition>> componentMetrics = serviceMetrics.get(component);
+ // For every Component / HostComponent category retrieve metrics definitions
+ for (String category : componentMetrics.keySet()) {
+ componentMetricsCopy.put(category,
+ removeAggregateFunctions(componentMetrics.get(category)));
}
+ filteredServiceMetrics.put(component, componentMetricsCopy);
}
}
return filteredServiceMetrics;
}
- private List<MetricDefinition> removeAggregateFunctions(List<MetricDefinition> componentMetrics) {
+ private static List<MetricDefinition> removeAggregateFunctions(List<MetricDefinition> metricsDefinitions) {
List<MetricDefinition> filteredComponentMetrics = null;
- if (componentMetrics != null) {
- Cloner cloner = new Cloner();
- filteredComponentMetrics = cloner.deepClone(componentMetrics);
+
+ if (metricsDefinitions != null) {
+ filteredComponentMetrics = new ArrayList<>();
// For every metric definition
- for (MetricDefinition metricDefinition : filteredComponentMetrics) {
- // Metrics System metrics only
- if (metricDefinition.getType().equals("ganglia")) {
- // Create a new map for each category
- for (Map<String, Metric> metricByCategory : metricDefinition.getMetricsByCategory().values()) {
- Iterator<Map.Entry<String, Metric>> iterator = metricByCategory.entrySet().iterator();
- while (iterator.hasNext()) {
- Map.Entry<String, Metric> entry = iterator.next();
- String metricName = entry.getKey();
- if (PropertyHelper.hasAggregateFunctionSuffix(metricName)) {
- iterator.remove();
- }
+ for (MetricDefinition metricDefinition : metricsDefinitions) {
+ Map<String, Map<String, Metric>> categorizedMetricsCopy = new HashMap<>();
+ Map<String, Map<String, Metric>> categorizedMetrics = metricDefinition.getMetricsByCategory();
+ for (String category : categorizedMetrics.keySet()) {
+ Map<String, Metric> namedMetricsCopy = new HashMap<>();
+ Map<String, Metric> namedMetrics = categorizedMetrics.get(category);
+ for (String metricName : namedMetrics.keySet()) {
+ // Metrics System metrics only
+ if (!(metricDefinition.getType().equals("ganglia") && PropertyHelper.hasAggregateFunctionSuffix(metricName))) {
+ namedMetricsCopy.put(metricName, namedMetrics.get(metricName));
}
}
+ categorizedMetricsCopy.put(category, namedMetricsCopy);
}
+ filteredComponentMetrics.add(
+ new MetricDefinition(metricDefinition.getType(), metricDefinition.getProperties(), categorizedMetricsCopy));
}
}
- return filteredComponentMetrics;
+ return filteredComponentMetrics;
}
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/7210c9df/ambari-server/src/main/java/org/apache/ambari/server/state/stack/MetricDefinition.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/MetricDefinition.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/MetricDefinition.java
index a95356c..0a4af1d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/MetricDefinition.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/MetricDefinition.java
@@ -33,7 +33,13 @@ public class MetricDefinition {
private String type = null;
private Map<String, String> properties = null;
private Map<String, Map<String, Metric>> metrics = null;
-
+
+ public MetricDefinition(String type, Map<String, String> properties, Map<String, Map<String, Metric>> metrics) {
+ this.type = type;
+ this.properties = properties;
+ this.metrics = metrics;
+ }
+
public String getType() {
return type;
}