From 7f595a7b7fcdab74a4d0e023bfe1d8914214bb71 Mon Sep 17 00:00:00 2001 From: "yong.you" Date: Tue, 9 Jul 2013 19:48:12 +0800 Subject: [PATCH] modify the task package and transaction domains --- .../build/ComponentsConfigurator.java | 3 +- .../transaction/TransactionAnalyzer.java | 1 + .../transaction/TransactionDelegate.java | 24 +-- .../resources/META-INF/plexus/components.xml | 2 +- .../cat/service/DefaultReportManager.java | 14 +- .../dianping/cat/service/ReportManager.java | 3 + .../java/com/dianping/cat/CatHomeModule.java | 2 +- .../cat/build/TaskComponentConfigurator.java | 2 +- .../{thread => }/DefaultTaskConsumer.java | 2 +- .../task/{thread => }/TaskConsumer.java | 2 +- .../report/task/cross/CrossReportBuilder.java | 2 +- .../cat/report/task/thread/TaskProducer.java | 203 ------------------ .../cat/report/task/TaskConsumerTest.java | 1 - 13 files changed, 29 insertions(+), 232 deletions(-) rename cat-home/src/main/java/com/dianping/cat/report/task/{thread => }/DefaultTaskConsumer.java (98%) rename cat-home/src/main/java/com/dianping/cat/report/task/{thread => }/TaskConsumer.java (98%) delete mode 100644 cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskProducer.java 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 afe2f3283..cc79927f4 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 @@ -33,7 +33,6 @@ import com.dianping.cat.core.config.ConfigDao; import com.dianping.cat.core.dal.HostinfoDao; import com.dianping.cat.core.dal.HourlyReportDao; import com.dianping.cat.core.dal.ProjectDao; -import com.dianping.cat.core.dal.TaskDao; import com.dianping.cat.message.spi.core.MessageConsumer; import com.dianping.cat.service.DefaultReportManager; import com.dianping.cat.service.ReportDelegate; @@ -108,7 +107,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportDelegate.class, ID) // .req(BucketManager.class, HourlyReportDao.class) // .config(E("name").value(ID))); - all.add(C(ReportDelegate.class, ID, TransactionDelegate.class).req(TaskDao.class)); + all.add(C(ReportDelegate.class, ID, TransactionDelegate.class).req(TaskManager.class)); return all; } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java index 2d6b6f304..0b358410a 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionAnalyzer.java @@ -52,6 +52,7 @@ public class TransactionAnalyzer extends AbstractMessageAnalyzer { @Inject - private TaskDao m_taskDao; - + private TaskManager m_taskManager; + @Override public void afterLoad(Map reports) { } @@ -102,19 +101,6 @@ public class TransactionDelegate implements ReportDelegate { @Override public boolean createHourlyTask(TransactionReport report) { - try { - Task task = m_taskDao.createLocal(); - task.setCreationDate(new Date()); - task.setProducer(NetworkInterfaceManager.INSTANCE.getLocalHostAddress()); - task.setReportDomain(report.getDomain()); - task.setReportName("transaction"); - task.setReportPeriod(report.getStartTime()); - task.setStatus(1); - - m_taskDao.insert(task); - } catch (Exception e) { - Cat.logError(e); - } - return false; + return m_taskManager.createTask(report.getStartTime(), report.getDomain(), "transaction", TaskProlicy.ALL); } } 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 990dcd3bd..83d0e3acb 100644 --- a/cat-consumer/src/main/resources/META-INF/plexus/components.xml +++ b/cat-consumer/src/main/resources/META-INF/plexus/components.xml @@ -75,7 +75,7 @@ com.dianping.cat.consumer.transaction.TransactionDelegate - com.dianping.cat.core.dal.TaskDao + com.dianping.cat.task.TaskManager diff --git a/cat-core/src/main/java/com/dianping/cat/service/DefaultReportManager.java b/cat-core/src/main/java/com/dianping/cat/service/DefaultReportManager.java index befa1364f..25ac7661a 100644 --- a/cat-core/src/main/java/com/dianping/cat/service/DefaultReportManager.java +++ b/cat-core/src/main/java/com/dianping/cat/service/DefaultReportManager.java @@ -6,8 +6,10 @@ import java.util.ArrayList; import java.util.Collections; import java.util.Date; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.codehaus.plexus.logging.LogEnabled; import org.codehaus.plexus.logging.Logger; @@ -60,6 +62,17 @@ public class DefaultReportManager implements ReportManager, LogEnabled { m_logger = logger; } + @Override + public Set getDomains(long startTime) { + Map reports = m_map.get(startTime); + + if (reports == null) { + return new HashSet(); + } else { + return reports.keySet(); + } + } + @Override public T getHourlyReport(long startTime, String domain, boolean createIfNotExist) { Map reports = m_map.get(startTime); @@ -197,7 +210,6 @@ public class DefaultReportManager implements ReportManager, LogEnabled { r.setContent(xml); m_reportDao.insert(r); - m_reportDelegate.createHourlyTask(report); } catch (Throwable e) { t.setStatus(e); diff --git a/cat-core/src/main/java/com/dianping/cat/service/ReportManager.java b/cat-core/src/main/java/com/dianping/cat/service/ReportManager.java index 8fb3099cd..d6c34bdc5 100644 --- a/cat-core/src/main/java/com/dianping/cat/service/ReportManager.java +++ b/cat-core/src/main/java/com/dianping/cat/service/ReportManager.java @@ -1,6 +1,7 @@ package com.dianping.cat.service; import java.util.Map; +import java.util.Set; import com.dianping.cat.service.DefaultReportManager.StoragePolicy; @@ -8,6 +9,8 @@ public interface ReportManager { public void cleanup(); public void initialize(); + + public Set getDomains(long startTime); public T getHourlyReport(long startTime, String domain, boolean createIfNotExist); diff --git a/cat-home/src/main/java/com/dianping/cat/CatHomeModule.java b/cat-home/src/main/java/com/dianping/cat/CatHomeModule.java index 4d0ed3a3d..e8fad22fb 100644 --- a/cat-home/src/main/java/com/dianping/cat/CatHomeModule.java +++ b/cat-home/src/main/java/com/dianping/cat/CatHomeModule.java @@ -12,7 +12,7 @@ import com.dianping.cat.consumer.CatConsumerModule; import com.dianping.cat.consumer.core.aggregation.AggregationConfigManager; import com.dianping.cat.message.spi.core.MessageConsumer; import com.dianping.cat.message.spi.core.TcpSocketReceiver; -import com.dianping.cat.report.task.thread.DefaultTaskConsumer; +import com.dianping.cat.report.task.DefaultTaskConsumer; import com.dianping.cat.report.view.DomainNavManager; import com.dianping.cat.system.alarm.AlarmRuleCreator; import com.dianping.cat.system.alarm.AlarmTask; diff --git a/cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java b/cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java index be4c6da51..1e4927e2c 100644 --- a/cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java +++ b/cat-home/src/main/java/com/dianping/cat/build/TaskComponentConfigurator.java @@ -21,6 +21,7 @@ import com.dianping.cat.report.baseline.impl.DefaultBaselineCreator; import com.dianping.cat.report.baseline.impl.DefaultBaselineService; import com.dianping.cat.report.page.dependency.graph.TopologyGraphBuilder; import com.dianping.cat.report.service.ReportService; +import com.dianping.cat.report.task.DefaultTaskConsumer; import com.dianping.cat.report.task.cross.CrossReportBuilder; import com.dianping.cat.report.task.dependency.DependencyReportBuilder; import com.dianping.cat.report.task.event.EventGraphCreator; @@ -38,7 +39,6 @@ import com.dianping.cat.report.task.spi.ReportFacade; import com.dianping.cat.report.task.sql.SqlMerger; import com.dianping.cat.report.task.sql.SqlReportBuilder; import com.dianping.cat.report.task.state.StateReportBuilder; -import com.dianping.cat.report.task.thread.DefaultTaskConsumer; import com.dianping.cat.report.task.transaction.TransactionGraphCreator; import com.dianping.cat.report.task.transaction.TransactionMerger; import com.dianping.cat.report.task.transaction.TransactionReportBuilder; diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/thread/DefaultTaskConsumer.java b/cat-home/src/main/java/com/dianping/cat/report/task/DefaultTaskConsumer.java similarity index 98% rename from cat-home/src/main/java/com/dianping/cat/report/task/thread/DefaultTaskConsumer.java rename to cat-home/src/main/java/com/dianping/cat/report/task/DefaultTaskConsumer.java index 8c2d9ec17..a2aa98870 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/thread/DefaultTaskConsumer.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/DefaultTaskConsumer.java @@ -1,7 +1,7 @@ /** * */ -package com.dianping.cat.report.task.thread; +package com.dianping.cat.report.task; import java.util.Date; import java.util.concurrent.locks.LockSupport; diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskConsumer.java b/cat-home/src/main/java/com/dianping/cat/report/task/TaskConsumer.java similarity index 98% rename from cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskConsumer.java rename to cat-home/src/main/java/com/dianping/cat/report/task/TaskConsumer.java index 4060d62f6..69ec1a747 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskConsumer.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/TaskConsumer.java @@ -1,4 +1,4 @@ -package com.dianping.cat.report.task.thread; +package com.dianping.cat.report.task; import com.dianping.cat.Cat; import com.dianping.cat.configuration.NetworkInterfaceManager; diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/cross/CrossReportBuilder.java b/cat-home/src/main/java/com/dianping/cat/report/task/cross/CrossReportBuilder.java index 51e180307..da0b5ea8a 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/task/cross/CrossReportBuilder.java +++ b/cat-home/src/main/java/com/dianping/cat/report/task/cross/CrossReportBuilder.java @@ -110,7 +110,7 @@ public class CrossReportBuilder implements ReportBuilder { Date date = new Date(startTime); CrossReport reportModel = m_reportService.queryCrossReport(domain, date, new Date(date.getTime() + TimeUtil.ONE_HOUR)); - + reportModel.accept(merger); } CrossReport crossReport = merger.getCrossReport(); diff --git a/cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskProducer.java b/cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskProducer.java deleted file mode 100644 index 51e71a4af..000000000 --- a/cat-home/src/main/java/com/dianping/cat/report/task/thread/TaskProducer.java +++ /dev/null @@ -1,203 +0,0 @@ -package com.dianping.cat.report.task.thread; - -import java.util.Calendar; -import java.util.Date; -import java.util.HashSet; -import java.util.Set; - -import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable; -import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException; -import org.unidal.dal.jdbc.DalNotFoundException; -import org.unidal.lookup.annotation.Inject; - -import com.dianping.cat.Cat; -import com.dianping.cat.configuration.NetworkInterfaceManager; -import com.dianping.cat.consumer.advanced.MetricConfigManager; -import com.dianping.cat.core.dal.Task; -import com.dianping.cat.core.dal.TaskDao; -import com.dianping.cat.core.dal.TaskEntity; -import com.dianping.cat.helper.CatString; -import com.dianping.cat.helper.TimeUtil; -import com.dianping.cat.message.Transaction; -import com.dianping.cat.report.service.ReportService; -import com.dianping.cat.report.task.TaskHelper; -import com.dianping.cat.report.task.spi.ReportFacade; - -public class TaskProducer implements org.unidal.helper.Threads.Task, Initializable { - - @Inject - private ReportService m_reportService; - - @Inject - private TaskDao m_taskDao; - - @Inject - private MetricConfigManager m_configManager; - - private Set m_dailyReportNameSet = new HashSet(); - - private Set m_graphReportNameSet = new HashSet(); - - private static final String STATE = "state"; - - private long m_currentDay; - - private void createDailyReportTasks(Date date) { - generateReportTasks(date, new Date(date.getTime() + TimeUtil.ONE_DAY), ReportFacade.TYPE_DAILY); - } - - private void createMonthReportTasks(Date date) { - Calendar cal = Calendar.getInstance(); - - cal.setTime(date); - - int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH); - if (dayOfMonth == 1) { - Calendar monthEnd = Calendar.getInstance(); - - monthEnd.setTime(date); - monthEnd.add(Calendar.MONTH, 1); - generateReportTasks(date, monthEnd.getTime(), ReportFacade.TYPE_WEEK); - } - } - - private void generateDailyMetricBaselineTasks(Date date) { - try { - Set groups = m_configManager.getMetricConfig().getMetricItemConfigs().keySet(); - for (String group : groups) { - try { - m_taskDao.findByDomainNameTypePeriod("metricBaseline", group, ReportFacade.TYPE_DAILY, date, - TaskEntity.READSET_FULL); - } catch (DalNotFoundException e) { - insertTask(group, "metricBaseline", ReportFacade.TYPE_DAILY, date); - } - } - } catch (Exception e) { - Cat.logError(e); - } - - } - - private void createWeeklyReportTasks(Date date) { - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - - int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK); - if (dayOfWeek == 7) { - generateReportTasks(date, new Date(date.getTime() + TimeUtil.ONE_DAY * 7), ReportFacade.TYPE_WEEK); - } - } - - private void creatReportTask(Date date) { - generateDailyMetricBaselineTasks(date); - createDailyReportTasks(date); - createWeeklyReportTasks(date); - createMonthReportTasks(date); - } - - private void generateReportTasks(Date start, Date end, int reportType) { - Set domainSet = queryDomainSet(start, end); - - for (String domain : domainSet) { - for (String name : m_dailyReportNameSet) { - insertTask(domain, name, reportType, start); - } - } - insertTask(CatString.CAT, STATE, reportType, start); - } - - @Override - public String getName() { - return "Task-Producer"; - } - - @Override - public void initialize() throws InitializationException { - m_dailyReportNameSet.add("event"); - m_dailyReportNameSet.add("transaction"); - m_dailyReportNameSet.add("problem"); - m_dailyReportNameSet.add("matrix"); - m_dailyReportNameSet.add("cross"); - m_dailyReportNameSet.add("sql"); - m_dailyReportNameSet.add("health"); - - m_graphReportNameSet.add("transaction"); - m_graphReportNameSet.add("event"); - m_graphReportNameSet.add("problem"); - m_graphReportNameSet.add("heartbeat"); - } - - private void insertTask(String domain, String reportName, int taskType, Date taskPeriod) { - try { - m_taskDao.findByDomainNameTypePeriod(reportName, domain, taskType, taskPeriod, TaskEntity.READSET_FULL); - } catch (DalNotFoundException e) { - Task task = m_taskDao.createLocal(); - - task.setCreationDate(new Date()); - task.setProducer(NetworkInterfaceManager.INSTANCE.getLocalHostAddress()); - task.setReportDomain(domain); - task.setReportName(reportName); - task.setReportPeriod(taskPeriod); - task.setStatus(1); - task.setTaskType(taskType); - - try { - m_taskDao.insert(task); - } catch (Exception ex) { - Cat.logError(ex); - } - } catch (Exception e) { - Cat.logError(e); - } - } - - private Set queryDomainSet(Date start, Date end) { - return m_reportService.queryAllDomainNames(start, end, "transaction"); - } - - @Override - public void run() { - boolean active = true; - - while (active) { - Date currentDay = TimeUtil.getCurrentDay(); - - if (currentDay.getTime() > m_currentDay) { - Calendar cal = Calendar.getInstance(); - int minute = cal.get(Calendar.MINUTE); - Date yesterday = TaskHelper.yesterdayZero(new Date()); - - Transaction t = Cat.newTransaction("System", "CreateTask"); - try { - // Daily report should created after last day reports all insert to database - if (minute > 6) { - creatReportTask(yesterday); - } else { - try { - Thread.sleep((7 - minute) * TimeUtil.ONE_MINUTE); - } catch (InterruptedException e) { - active = false; - } - creatReportTask(yesterday); - } - t.setStatus(Transaction.SUCCESS); - } catch (Exception e) { - t.setStatus(e); - Cat.logError(e); - } finally { - t.complete(); - } - m_currentDay = currentDay.getTime(); - } - try { - Thread.sleep(5 * TimeUtil.ONE_MINUTE); - } catch (InterruptedException e) { - active = false; - } - } - } - - @Override - public void shutdown() { - } -} diff --git a/cat-home/src/test/java/com/dianping/cat/report/task/TaskConsumerTest.java b/cat-home/src/test/java/com/dianping/cat/report/task/TaskConsumerTest.java index 4a16219bb..1f0af0ad5 100644 --- a/cat-home/src/test/java/com/dianping/cat/report/task/TaskConsumerTest.java +++ b/cat-home/src/test/java/com/dianping/cat/report/task/TaskConsumerTest.java @@ -9,7 +9,6 @@ import junit.framework.Assert; import org.junit.Test; import com.dianping.cat.core.dal.Task; -import com.dianping.cat.report.task.thread.TaskConsumer; public class TaskConsumerTest { -- GitLab