From 282bf09066b87c45b2d43f1d039680c32d432d3f Mon Sep 17 00:00:00 2001 From: youyong205 Date: Tue, 30 Dec 2014 14:43:11 +0800 Subject: [PATCH] add the delete unused metric config --- .../build/ComponentsConfigurator.java | 2 +- .../consumer/metric/MetricConfigManager.java | 30 ++++++++++++++++++ .../resources/META-INF/plexus/components.xml | 3 ++ .../processor/MetricConfigProcessor.java | 31 +++++++++++++------ 4 files changed, 56 insertions(+), 10 deletions(-) diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java index 7b43771df..39ba04f16 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java @@ -185,7 +185,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { all.add(C(ContentFetcher.class, DefaultContentFetcher.class)); all.add(C(ProductLineConfigManager.class).req(ConfigDao.class, ContentFetcher.class)); - all.add(C(MetricConfigManager.class).req(ConfigDao.class, ContentFetcher.class)); + all.add(C(MetricConfigManager.class).req(ConfigDao.class, ContentFetcher.class, ProductLineConfigManager.class)); all.add(C(MessageAnalyzer.class, MetricAnalyzer.ID, MetricAnalyzer.class).is(PER_LOOKUP) // .req(ReportBucketManager.class, BusinessReportDao.class, MetricConfigManager.class)// .req(ProductLineConfigManager.class, TaskManager.class, ServerConfigManager.class)); diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/metric/MetricConfigManager.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/metric/MetricConfigManager.java index f9f3513cf..0df69a0c8 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/metric/MetricConfigManager.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/metric/MetricConfigManager.java @@ -24,11 +24,13 @@ import org.xml.sax.SAXException; import com.dianping.cat.Cat; import com.dianping.cat.config.content.ContentFetcher; +import com.dianping.cat.consumer.company.model.entity.ProductLine; import com.dianping.cat.consumer.metric.MetricAnalyzer.ConfigItem; import com.dianping.cat.consumer.metric.config.entity.MetricConfig; import com.dianping.cat.consumer.metric.config.entity.MetricItemConfig; import com.dianping.cat.consumer.metric.config.entity.Tag; import com.dianping.cat.consumer.metric.config.transform.DefaultSaxParser; +import com.dianping.cat.consumer.productline.ProductLineConfigManager; import com.dianping.cat.core.config.Config; import com.dianping.cat.core.config.ConfigDao; import com.dianping.cat.core.config.ConfigEntity; @@ -41,6 +43,9 @@ public class MetricConfigManager implements Initializable, LogEnabled { @Inject private ContentFetcher m_fetcher; + @Inject + private ProductLineConfigManager m_productLineConfigManager; + private int m_configId; private MetricConfig m_metricConfig; @@ -102,6 +107,7 @@ public class MetricConfigManager implements Initializable, LogEnabled { if (m_metricConfig == null) { m_metricConfig = new MetricConfig(); } + deleteUnusedConfig(); } public boolean insertIfNotExist(String domain, String type, String metricKey, ConfigItem item) { @@ -228,6 +234,30 @@ public class MetricConfigManager implements Initializable, LogEnabled { } } + protected void deleteUnusedConfig() { + try { + Map configs = m_metricConfig.getMetricItemConfigs(); + List unused = new ArrayList(); + + for (MetricItemConfig config : configs.values()) { + String domain = config.getDomain(); + String productLine = m_productLineConfigManager.queryProductLineByDomain(domain); + ProductLine product = m_productLineConfigManager.queryProductLine(productLine); + + if (product == null || !product.isMetricDashboard()) { + unused.add(config.getId()); + } + } + for (String id : unused) { + m_logger.info("delete metric item " + id); + m_metricConfig.removeMetricItemConfig(id); + } + storeConfig(); + } catch (Exception e) { + e.printStackTrace(); + } + } + private boolean storeConfig() { synchronized (this) { try { diff --git a/cat-consumer/src/main/resources/META-INF/plexus/components.xml b/cat-consumer/src/main/resources/META-INF/plexus/components.xml index d0b04da7f..5faa9b0a4 100644 --- a/cat-consumer/src/main/resources/META-INF/plexus/components.xml +++ b/cat-consumer/src/main/resources/META-INF/plexus/components.xml @@ -589,6 +589,9 @@ com.dianping.cat.config.content.ContentFetcher + + com.dianping.cat.consumer.productline.ProductLineConfigManager + diff --git a/cat-home/src/main/java/com/dianping/cat/system/page/config/processor/MetricConfigProcessor.java b/cat-home/src/main/java/com/dianping/cat/system/page/config/processor/MetricConfigProcessor.java index 205e2e83b..3a16300bb 100644 --- a/cat-home/src/main/java/com/dianping/cat/system/page/config/processor/MetricConfigProcessor.java +++ b/cat-home/src/main/java/com/dianping/cat/system/page/config/processor/MetricConfigProcessor.java @@ -1,5 +1,6 @@ package com.dianping.cat.system.page.config.processor; +import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashMap; import java.util.List; @@ -57,23 +58,35 @@ public class MetricConfigProcessor extends BaseProcesser { } private void metricConfigList(Payload payload, Model model) { - Map productLines = m_productLineConfigManger.queryAllProductLines(); + Map productLines = m_productLineConfigManger.queryMetricProductLines(); Map> metricConfigs = new LinkedHashMap>(); Set exists = new HashSet(); + Set knowDomains = new HashSet(); for (Entry entry : productLines.entrySet()) { ProductLine productLine = entry.getValue(); - if (productLine.isMetricDashboard()) { - Set domains = productLine.getDomains().keySet(); - List configs = m_metricConfigManager.queryMetricItemConfigs(domains); + Set domains = productLine.getDomains().keySet(); + List configs = m_metricConfigManager.queryMetricItemConfigs(domains); - for (MetricItemConfig config : configs) { - exists.add(m_metricConfigManager.buildMetricKey(config.getDomain(), config.getType(), - config.getMetricKey())); - } - metricConfigs.put(productLine, configs); + for (MetricItemConfig config : configs) { + exists.add(m_metricConfigManager.buildMetricKey(config.getDomain(), config.getType(), config.getMetricKey())); } + metricConfigs.put(productLine, configs); + knowDomains.addAll(domains); + } + List otherConfigs = new ArrayList(); + + for (MetricItemConfig config : m_metricConfigManager.getMetricConfig().getMetricItemConfigs().values()) { + String domain = config.getDomain(); + + if (!knowDomains.contains(domain)) { + otherConfigs.add(config); + } + } + + if (!otherConfigs.isEmpty()) { + metricConfigs.put(new ProductLine("Other").setTitle("Other"), otherConfigs); } model.setProductMetricConfigs(metricConfigs); -- GitLab