From ba159e63a21f92ba430caaef1e00e8357a4ca55e Mon Sep 17 00:00:00 2001 From: "yong.you" Date: Mon, 14 Oct 2013 15:14:33 +0800 Subject: [PATCH] modify the cat report table to binary storage --- .../cat/consumer/browser/BrowserDelegate.java | 12 ++ .../build/ComponentsConfigurator.java | 9 +- .../cat/consumer/cross/CrossDelegate.java | 12 ++ .../dependency/DependencyDelegate.java | 12 ++ .../cat/consumer/matrix/MatrixDelegate.java | 12 ++ .../cat/consumer/sql/SqlDelegate.java | 15 +- .../dal/model/browser-report-codegen.xml | 2 +- .../dal/model/browser-report-model.xml | 4 +- .../META-INF/dal/model/cross-report-model.xml | 2 +- .../dal/model/dependency-report-model.xml | 2 +- .../dal/model/matrix-report-model.xml | 2 +- .../META-INF/dal/model/sql-report-model.xml | 2 +- .../resources/META-INF/plexus/components.xml | 12 ++ .../build/ComponentsConfigurator.java | 13 +- .../cat/consumer/event/EventDelegate.java | 12 ++ .../consumer/heartbeat/HeartbeatDelegate.java | 12 ++ .../cat/consumer/problem/ProblemDelegate.java | 16 +- .../cat/consumer/state/StateDelegate.java | 12 ++ .../cat/consumer/top/TopDelegate.java | 12 ++ .../transaction/TransactionDelegate.java | 17 +- .../META-INF/dal/model/event-report-model.xml | 2 +- .../dal/model/heartbeat-report-model.xml | 2 +- .../dal/model/problem-report-model.xml | 2 +- .../META-INF/dal/model/state-report-model.xml | 2 +- .../META-INF/dal/model/top-report-model.xml | 2 +- .../dal/model/transaction-report-model.xml | 2 +- .../resources/META-INF/plexus/components.xml | 18 ++ cat-core/pom.xml | 191 +++++++++--------- .../cat/service/DefaultReportManager.java | 23 ++- .../dianping/cat/service/ReportDelegate.java | 4 + .../META-INF/dal/jdbc/report-codegen.xml | 159 +++++++++------ .../META-INF/dal/jdbc/report-dal.xml | 5 +- .../resources/META-INF/plexus/components.xml | 99 +++++---- .../resources/META-INF/wizard/jdbc/wizard.xml | 13 +- .../com/dianping/cat/consumer/AllTests.java | 15 ++ .../java/com/dianping/cat/core/AllTests.java | 15 ++ .../cat/build/CatDatabaseConfigurator.java | 3 +- .../ReportServiceComponentConfigurator.java | 51 ++--- .../cat/report/page/statistics/Model.java | 1 - .../report/service/AbstractReportService.java | 4 + .../impl/TransactionReportService.java | 33 ++- .../META-INF/dal/jdbc/report-codegen.xml | 89 +++++++- .../resources/META-INF/plexus/components.xml | 82 +++++++- .../resources/META-INF/wizard/jdbc/wizard.xml | 1 + script/Cat.sql | 13 +- 45 files changed, 749 insertions(+), 274 deletions(-) create mode 100644 cat-core/src/test/java/com/dianping/cat/consumer/AllTests.java create mode 100644 cat-core/src/test/java/com/dianping/cat/core/AllTests.java diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserDelegate.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserDelegate.java index 277860d14..e2efa9148 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserDelegate.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/browser/BrowserDelegate.java @@ -9,6 +9,8 @@ import org.unidal.lookup.annotation.Inject; import com.dianping.cat.consumer.browser.BrowserReportMerger; import com.dianping.cat.consumer.browser.model.entity.BrowserReport; import com.dianping.cat.consumer.browser.model.transform.DefaultSaxParser; +import com.dianping.cat.consumer.browser.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.browser.model.transform.DefaultNativeParser; import com.dianping.cat.service.ReportDelegate; import com.dianping.cat.task.TaskManager; import com.dianping.cat.task.TaskManager.TaskProlicy; @@ -71,4 +73,14 @@ public class BrowserDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(BrowserReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public BrowserReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java index ead262412..a81fe0a41 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/build/ComponentsConfigurator.java @@ -29,6 +29,7 @@ import com.dianping.cat.consumer.sql.SqlAnalyzer; import com.dianping.cat.consumer.sql.SqlDelegate; import com.dianping.cat.consumer.sql.SqlParseManager; import com.dianping.cat.core.config.ConfigDao; +import com.dianping.cat.core.dal.HourlyReportContentDao; import com.dianping.cat.core.dal.HourlyReportDao; import com.dianping.cat.service.DefaultReportManager; import com.dianping.cat.service.ReportDelegate; @@ -74,7 +75,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID).req(ServerConfigManager.class)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, MatrixDelegate.class).req(TaskManager.class)); @@ -89,7 +90,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID).req(ServerConfigManager.class, DomainManager.class, DatabaseParser.class)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, DependencyDelegate.class).req(TaskManager.class)); @@ -104,7 +105,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID).req(ServerConfigManager.class)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, CrossDelegate.class).req(TaskManager.class)); @@ -121,7 +122,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID).req(SqlParseManager.class, DatabaseParser.class)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, SqlDelegate.class).req(TaskManager.class)); diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/cross/CrossDelegate.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/cross/CrossDelegate.java index 270d39d58..12a706d52 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/cross/CrossDelegate.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/cross/CrossDelegate.java @@ -6,6 +6,8 @@ import java.util.Set; import org.unidal.lookup.annotation.Inject; +import com.dianping.cat.consumer.cross.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.cross.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.cross.model.entity.CrossReport; import com.dianping.cat.consumer.cross.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; @@ -70,4 +72,14 @@ public class CrossDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(CrossReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public CrossReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/dependency/DependencyDelegate.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/dependency/DependencyDelegate.java index 3d825144c..7a5423e77 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/dependency/DependencyDelegate.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/dependency/DependencyDelegate.java @@ -6,6 +6,8 @@ import java.util.Set; import org.unidal.lookup.annotation.Inject; +import com.dianping.cat.consumer.dependency.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.dependency.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.dependency.model.entity.DependencyReport; import com.dianping.cat.consumer.dependency.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; @@ -70,4 +72,14 @@ public class DependencyDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(DependencyReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public DependencyReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/matrix/MatrixDelegate.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/matrix/MatrixDelegate.java index 2e5891136..2569bcf00 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/matrix/MatrixDelegate.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/matrix/MatrixDelegate.java @@ -6,6 +6,8 @@ import java.util.Set; import org.unidal.lookup.annotation.Inject; +import com.dianping.cat.consumer.matrix.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.matrix.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.matrix.model.entity.MatrixReport; import com.dianping.cat.consumer.matrix.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; @@ -72,4 +74,14 @@ public class MatrixDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(MatrixReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public MatrixReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/sql/SqlDelegate.java b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/sql/SqlDelegate.java index 636981ea4..b649ffd15 100644 --- a/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/sql/SqlDelegate.java +++ b/cat-consumer-advanced/src/main/java/com/dianping/cat/consumer/sql/SqlDelegate.java @@ -7,6 +7,8 @@ import java.util.Set; import org.unidal.lookup.annotation.Inject; import com.dianping.cat.consumer.sql.model.entity.SqlReport; +import com.dianping.cat.consumer.sql.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.sql.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.sql.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; import com.dianping.cat.task.TaskManager; @@ -38,7 +40,8 @@ public class SqlDelegate implements ReportDelegate { @Override public boolean createHourlyTask(SqlReport report) { - return m_taskManager.createTask(report.getStartTime(), report.getDomain(), SqlAnalyzer.ID, TaskProlicy.ALL_EXCLUED_HOURLY); + return m_taskManager.createTask(report.getStartTime(), report.getDomain(), SqlAnalyzer.ID, + TaskProlicy.ALL_EXCLUED_HOURLY); } @Override @@ -70,4 +73,14 @@ public class SqlDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(SqlReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public SqlReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-codegen.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-codegen.xml index b839ae265..8d6a32a08 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-codegen.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-codegen.xml @@ -18,8 +18,8 @@ + - diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-model.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-model.xml index 18753fbe0..91028dcd9 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-model.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/browser-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> @@ -19,8 +19,8 @@ + - diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/cross-report-model.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/cross-report-model.xml index d6a22dfa0..97e58a9e0 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/cross-report-model.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/cross-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/dependency-report-model.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/dependency-report-model.xml index 018b6de2a..ebdc0835c 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/dependency-report-model.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/dependency-report-model.xml @@ -1,6 +1,6 @@ + enable-merger="true" enable-sax-parser="true" enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/matrix-report-model.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/matrix-report-model.xml index 42b13424d..fc11f3265 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/matrix-report-model.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/matrix-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/sql-report-model.xml b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/sql-report-model.xml index 472cb93b0..b738593fa 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/dal/model/sql-report-model.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/dal/model/sql-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml b/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml index 3835d6f17..c09eb425d 100644 --- a/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml +++ b/cat-consumer-advanced/src/main/resources/META-INF/plexus/components.xml @@ -49,6 +49,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -94,6 +97,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -139,6 +145,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -190,6 +199,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + 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 7f32f7aae..66089ebb1 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 @@ -35,6 +35,7 @@ import com.dianping.cat.consumer.top.TopDelegate; import com.dianping.cat.consumer.transaction.TransactionAnalyzer; import com.dianping.cat.consumer.transaction.TransactionDelegate; import com.dianping.cat.core.config.ConfigDao; +import com.dianping.cat.core.dal.HourlyReportContentDao; import com.dianping.cat.core.dal.HourlyReportDao; import com.dianping.cat.message.spi.core.MessageConsumer; import com.dianping.cat.service.DefaultReportManager; @@ -86,7 +87,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, EventDelegate.class).req(TaskManager.class)); @@ -101,7 +102,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, HeartbeatDelegate.class).req(TaskManager.class)); @@ -131,7 +132,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { new String[] { DefaultProblemHandler.ID, LongExecutionProblemHandler.ID }, "m_handlers")); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, ProblemDelegate.class) // .req(ProblemReportAggregation.class, TaskManager.class)); @@ -147,7 +148,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ServerConfigManager.class, DomainManager.class, ServerStatisticManager.class)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, StateDelegate.class).req(TaskManager.class)); @@ -162,7 +163,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID).req(ServerConfigManager.class)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, TopDelegate.class)); @@ -177,7 +178,7 @@ public class ComponentsConfigurator extends AbstractResourceConfigurator { .req(ReportManager.class, ID).req(ReportDelegate.class, ID).req(ServerConfigManager.class)); all.add(C(ReportManager.class, ID, DefaultReportManager.class) // .req(ReportDelegate.class, ID) // - .req(BucketManager.class, HourlyReportDao.class) // + .req(BucketManager.class, HourlyReportDao.class, HourlyReportContentDao.class) // .config(E("name").value(ID))); all.add(C(ReportDelegate.class, ID, TransactionDelegate.class).req(TaskManager.class)); diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventDelegate.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventDelegate.java index 281dafc7e..2e12ba309 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventDelegate.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/event/EventDelegate.java @@ -7,6 +7,8 @@ import java.util.Set; import org.unidal.lookup.annotation.Inject; import com.dianping.cat.consumer.event.model.entity.EventReport; +import com.dianping.cat.consumer.event.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.event.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.event.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; import com.dianping.cat.task.TaskManager; @@ -70,4 +72,14 @@ public class EventDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(EventReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public EventReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatDelegate.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatDelegate.java index d7a8631b5..6a280d504 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatDelegate.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/heartbeat/HeartbeatDelegate.java @@ -6,6 +6,8 @@ import java.util.Set; import org.unidal.lookup.annotation.Inject; +import com.dianping.cat.consumer.heartbeat.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.heartbeat.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.heartbeat.model.entity.HeartbeatReport; import com.dianping.cat.consumer.heartbeat.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; @@ -70,4 +72,14 @@ public class HeartbeatDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(HeartbeatReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public HeartbeatReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemDelegate.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemDelegate.java index 8eb8fa965..2556205b6 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemDelegate.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/problem/ProblemDelegate.java @@ -8,6 +8,8 @@ import org.unidal.lookup.annotation.Inject; import com.dianping.cat.Cat; import com.dianping.cat.Constants; +import com.dianping.cat.consumer.problem.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.problem.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.problem.model.entity.ProblemReport; import com.dianping.cat.consumer.problem.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; @@ -40,7 +42,7 @@ public class ProblemDelegate implements ReportDelegate { reports.put(all.getDomain(), all); } - + ProblemReport frontEnd = reports.get(Constants.FRONT_END); if (frontEnd != null) { @@ -54,7 +56,7 @@ public class ProblemDelegate implements ReportDelegate { return m_problemReportAggregation.getReport(); } - + private boolean validateDomain(String domain) { return !domain.equals(Constants.FRONT_END); } @@ -116,4 +118,14 @@ public class ProblemDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(ProblemReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public ProblemReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java index c5e200269..09eb622f7 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/state/StateDelegate.java @@ -6,6 +6,8 @@ import java.util.Map; import org.unidal.lookup.annotation.Inject; import com.dianping.cat.Constants; +import com.dianping.cat.consumer.state.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.state.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.state.model.entity.StateReport; import com.dianping.cat.consumer.state.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; @@ -72,4 +74,14 @@ public class StateDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(StateReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public StateReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/top/TopDelegate.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/top/TopDelegate.java index bf2e50dfc..0378cb4a9 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/top/TopDelegate.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/top/TopDelegate.java @@ -3,6 +3,8 @@ package com.dianping.cat.consumer.top; import java.util.Date; import java.util.Map; +import com.dianping.cat.consumer.top.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.top.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.top.model.entity.TopReport; import com.dianping.cat.consumer.top.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; @@ -56,4 +58,14 @@ public class TopDelegate implements ReportDelegate { return report; } + + @Override + public byte[] buildBinary(TopReport report) { + return DefaultNativeBuilder.build(report); + } + + @Override + public TopReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } } diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionDelegate.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionDelegate.java index 8420f537f..35668cd53 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionDelegate.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/transaction/TransactionDelegate.java @@ -11,6 +11,8 @@ import org.unidal.lookup.annotation.Inject; import com.dianping.cat.Cat; import com.dianping.cat.Constants; import com.dianping.cat.consumer.transaction.model.entity.TransactionReport; +import com.dianping.cat.consumer.transaction.model.transform.DefaultNativeBuilder; +import com.dianping.cat.consumer.transaction.model.transform.DefaultNativeParser; import com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser; import com.dianping.cat.service.ReportDelegate; import com.dianping.cat.task.TaskManager; @@ -20,7 +22,7 @@ public class TransactionDelegate implements ReportDelegate { @Inject private TaskManager m_taskManager; - + @Override public void afterLoad(Map reports) { } @@ -41,6 +43,11 @@ public class TransactionDelegate implements ReportDelegate { } } + @Override + public byte[] buildBinary(TransactionReport report) { + return DefaultNativeBuilder.build(report); + } + @Override public String buildXml(TransactionReport report) { report.accept(new TransactionStatisticsComputer()); @@ -72,7 +79,8 @@ public class TransactionDelegate implements ReportDelegate { @Override public boolean createHourlyTask(TransactionReport report) { - return m_taskManager.createTask(report.getStartTime(), report.getDomain(), TransactionAnalyzer.ID, TaskProlicy.ALL); + return m_taskManager.createTask(report.getStartTime(), report.getDomain(), TransactionAnalyzer.ID, + TaskProlicy.ALL); } @Override @@ -98,6 +106,11 @@ public class TransactionDelegate implements ReportDelegate { return old; } + @Override + public TransactionReport parseBinary(byte[] bytes) { + return DefaultNativeParser.parse(bytes); + } + @Override public TransactionReport parseXml(String xml) throws Exception { TransactionReport report = DefaultSaxParser.parse(xml); diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/event-report-model.xml b/cat-consumer/src/main/resources/META-INF/dal/model/event-report-model.xml index 41b3dfbfd..7a178d075 100644 --- a/cat-consumer/src/main/resources/META-INF/dal/model/event-report-model.xml +++ b/cat-consumer/src/main/resources/META-INF/dal/model/event-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/heartbeat-report-model.xml b/cat-consumer/src/main/resources/META-INF/dal/model/heartbeat-report-model.xml index 9436cb2c3..956d2b3e6 100644 --- a/cat-consumer/src/main/resources/META-INF/dal/model/heartbeat-report-model.xml +++ b/cat-consumer/src/main/resources/META-INF/dal/model/heartbeat-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/problem-report-model.xml b/cat-consumer/src/main/resources/META-INF/dal/model/problem-report-model.xml index 8f11b9471..739505afe 100644 --- a/cat-consumer/src/main/resources/META-INF/dal/model/problem-report-model.xml +++ b/cat-consumer/src/main/resources/META-INF/dal/model/problem-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/state-report-model.xml b/cat-consumer/src/main/resources/META-INF/dal/model/state-report-model.xml index fc12998b5..12220ef28 100644 --- a/cat-consumer/src/main/resources/META-INF/dal/model/state-report-model.xml +++ b/cat-consumer/src/main/resources/META-INF/dal/model/state-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/top-report-model.xml b/cat-consumer/src/main/resources/META-INF/dal/model/top-report-model.xml index fad777b95..2bbeca454 100644 --- a/cat-consumer/src/main/resources/META-INF/dal/model/top-report-model.xml +++ b/cat-consumer/src/main/resources/META-INF/dal/model/top-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> diff --git a/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-model.xml b/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-model.xml index 317260a90..2238ed59a 100644 --- a/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-model.xml +++ b/cat-consumer/src/main/resources/META-INF/dal/model/transaction-report-model.xml @@ -1,6 +1,6 @@ + enable-base-visitor="true" enable-native-parser="true" enable-native-builder="true"> 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 58d244346..7d4009d68 100644 --- a/cat-consumer/src/main/resources/META-INF/plexus/components.xml +++ b/cat-consumer/src/main/resources/META-INF/plexus/components.xml @@ -49,6 +49,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -91,6 +94,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -189,6 +195,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -234,6 +243,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -279,6 +291,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -340,6 +355,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + diff --git a/cat-core/pom.xml b/cat-core/pom.xml index ca0d83f2e..2656936b9 100644 --- a/cat-core/pom.xml +++ b/cat-core/pom.xml @@ -1,102 +1,101 @@ - - - com.dianping.cat - parent - 0.6.2 - - 4.0.0 - cat-core - cat-core - jar - - - com.dianping.cat - cat-client - - - org.unidal.framework - foundation-service - 2.0.3 - - + + + com.dianping.cat + parent + 0.6.2 + + 4.0.0 + cat-core + cat-core + jar + + + com.dianping.cat + cat-client + + + org.unidal.framework + foundation-service + 2.0.3 + + org.unidal.webres WebResBase 1.2.0 - - - org.unidal.framework - dal-jdbc - 2.0.3 - - - org.jboss.netty - netty - - - javax.servlet - servlet-api - provided - - - log4j - log4j - true - provided - - - org.unidal.framework - test-framework - 2.0.3 - test - - - - - - org.unidal.maven.plugins - codegen-maven-plugin - 2.0.5 - - - generate data model - generate-sources - - dal-model - - - - ${basedir}/src/main/resources/META-INF/dal/model/server-manifest.xml, - - - - - generate dal jdbc model - generate-sources - - dal-jdbc - - - - ${basedir}/src/main/resources/META-INF/dal/jdbc/report-manifest.xml, - ${basedir}/src/main/resources/META-INF/dal/jdbc/config-manifest.xml, - - - - - generate plexus component descriptor - process-classes - - plexus - - - com.dianping.cat.build.ComponentsConfigurator - - - - - - + + + org.unidal.framework + dal-jdbc + 2.0.3 + + + org.jboss.netty + netty + + + javax.servlet + servlet-api + provided + + + log4j + log4j + true + provided + + + org.unidal.framework + test-framework + 2.0.3 + test + + + + + + org.unidal.maven.plugins + codegen-maven-plugin + 2.0.5 + + + generate data model + generate-sources + + dal-model + + + ${basedir}/src/main/resources/META-INF/dal/model/server-manifest.xml, + + + + generate dal jdbc model + generate-sources + + dal-jdbc + + + ${basedir}/src/main/resources/META-INF/dal/jdbc/report-manifest.xml, + ${basedir}/src/main/resources/META-INF/dal/jdbc/config-manifest.xml, + + + + generate plexus component descriptor + process-classes + + plexus + + + com.dianping.cat.build.ComponentsConfigurator + + + + + + + + utf-8 + 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 7bc0814a6..32fede814 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 @@ -20,6 +20,8 @@ import com.dianping.cat.Cat; import com.dianping.cat.Constants; import com.dianping.cat.configuration.NetworkInterfaceManager; import com.dianping.cat.core.dal.HourlyReport; +import com.dianping.cat.core.dal.HourlyReportContent; +import com.dianping.cat.core.dal.HourlyReportContentDao; import com.dianping.cat.core.dal.HourlyReportDao; import com.dianping.cat.message.Message; import com.dianping.cat.message.Transaction; @@ -40,6 +42,9 @@ public class DefaultReportManager implements ReportManager, LogEnabled { @Inject private HourlyReportDao m_reportDao; + @Inject + private HourlyReportContentDao m_reportContentDao; + private String m_name; private Map> m_map = new ConcurrentHashMap>(); @@ -212,9 +217,25 @@ public class DefaultReportManager implements ReportManager, LogEnabled { r.setPeriod(period); r.setIp(ip); r.setType(1); - r.setContent(xml); + + if (!"transaction".equals(m_name)) { + r.setContent(xml); + } else { + r.setContent(""); + } m_reportDao.insert(r); + + if ("transaction".equals(m_name)) { + int id = r.getId(); + byte[] binaryContent = m_reportDelegate.buildBinary(report); + HourlyReportContent content = m_reportContentDao.createLocal(); + + content.setReportId(id); + content.setContent(binaryContent); + + m_reportContentDao.insert(content); + } m_reportDelegate.createHourlyTask(report); } catch (Throwable e) { t.setStatus(e); diff --git a/cat-core/src/main/java/com/dianping/cat/service/ReportDelegate.java b/cat-core/src/main/java/com/dianping/cat/service/ReportDelegate.java index 29523d878..b8f4f1019 100644 --- a/cat-core/src/main/java/com/dianping/cat/service/ReportDelegate.java +++ b/cat-core/src/main/java/com/dianping/cat/service/ReportDelegate.java @@ -7,6 +7,10 @@ public interface ReportDelegate { public void beforeSave(Map reports); + public byte[] buildBinary(T report); + + public T parseBinary(byte[] bytes); + public String buildXml(T report); public String getDomain(T report); diff --git a/cat-core/src/main/resources/META-INF/dal/jdbc/report-codegen.xml b/cat-core/src/main/resources/META-INF/dal/jdbc/report-codegen.xml index 47e4820ac..e94b4ffdd 100644 --- a/cat-core/src/main/resources/META-INF/dal/jdbc/report-codegen.xml +++ b/cat-core/src/main/resources/META-INF/dal/jdbc/report-codegen.xml @@ -1,14 +1,18 @@ - + - - + + + + + + + - - + @@ -39,17 +43,19 @@ - + - - - - - - - + + + + + + + + + @@ -80,20 +86,19 @@ - + - - + - + + + - - - + @@ -124,23 +129,15 @@ - + - - - - - - - + + - - - + - - + @@ -171,19 +168,18 @@ - + - + - - + - + @@ -214,19 +210,17 @@ - + - - - - - - - + + + + + + + - - @@ -257,19 +251,20 @@ - + + - + - - - + - + + + @@ -300,18 +295,58 @@ - + + + + + + + + + + + + + + + + + FROM + WHERE = ${key-report-id}]]> + + + () + VALUES()]]> + + + + + SET + WHERE = ${key-report-id}]]> + + + + + WHERE = ${key-report-id}]]> + + + + - - - - - - + + + + + + + + + + - + diff --git a/cat-core/src/main/resources/META-INF/dal/jdbc/report-dal.xml b/cat-core/src/main/resources/META-INF/dal/jdbc/report-dal.xml index 3a3171ef1..ab6921728 100644 --- a/cat-core/src/main/resources/META-INF/dal/jdbc/report-dal.xml +++ b/cat-core/src/main/resources/META-INF/dal/jdbc/report-dal.xml @@ -229,7 +229,10 @@ - + + + + diff --git a/cat-core/src/main/resources/META-INF/plexus/components.xml b/cat-core/src/main/resources/META-INF/plexus/components.xml index 06292adad..c84338236 100644 --- a/cat-core/src/main/resources/META-INF/plexus/components.xml +++ b/cat-core/src/main/resources/META-INF/plexus/components.xml @@ -154,81 +154,91 @@ org.unidal.dal.jdbc.mapping.TableProvider - hostinfo + dailygraph org.unidal.dal.jdbc.mapping.SimpleTableProvider - hostinfo - hostinfo + dailygraph + dailygraph cat org.unidal.dal.jdbc.mapping.TableProvider - project + dailyreport org.unidal.dal.jdbc.mapping.SimpleTableProvider - project - project + dailyreport + dailyreport cat org.unidal.dal.jdbc.mapping.TableProvider - report + graph org.unidal.dal.jdbc.mapping.SimpleTableProvider - report - report + graph + graph cat org.unidal.dal.jdbc.mapping.TableProvider - task + hostinfo org.unidal.dal.jdbc.mapping.SimpleTableProvider - task - task + hostinfo + hostinfo cat org.unidal.dal.jdbc.mapping.TableProvider - dailygraph + monthreport org.unidal.dal.jdbc.mapping.SimpleTableProvider - dailygraph - dailygraph + monthreport + monthreport cat org.unidal.dal.jdbc.mapping.TableProvider - dailyreport + project org.unidal.dal.jdbc.mapping.SimpleTableProvider - dailyreport - dailyreport + project + project cat org.unidal.dal.jdbc.mapping.TableProvider - graph + report org.unidal.dal.jdbc.mapping.SimpleTableProvider - graph - graph + report + report cat org.unidal.dal.jdbc.mapping.TableProvider - monthreport + report-content org.unidal.dal.jdbc.mapping.SimpleTableProvider - monthreport - monthreport + report-content + report_content + cat + + + + org.unidal.dal.jdbc.mapping.TableProvider + task + org.unidal.dal.jdbc.mapping.SimpleTableProvider + + task + task cat @@ -243,8 +253,8 @@ - com.dianping.cat.core.dal.HostinfoDao - com.dianping.cat.core.dal.HostinfoDao + com.dianping.cat.core.dal.DailyGraphDao + com.dianping.cat.core.dal.DailyGraphDao org.unidal.dal.jdbc.QueryEngine @@ -252,8 +262,8 @@ - com.dianping.cat.core.dal.ProjectDao - com.dianping.cat.core.dal.ProjectDao + com.dianping.cat.core.dal.DailyReportDao + com.dianping.cat.core.dal.DailyReportDao org.unidal.dal.jdbc.QueryEngine @@ -261,8 +271,8 @@ - com.dianping.cat.core.dal.HourlyReportDao - com.dianping.cat.core.dal.HourlyReportDao + com.dianping.cat.core.dal.GraphDao + com.dianping.cat.core.dal.GraphDao org.unidal.dal.jdbc.QueryEngine @@ -270,8 +280,8 @@ - com.dianping.cat.core.dal.TaskDao - com.dianping.cat.core.dal.TaskDao + com.dianping.cat.core.dal.HostinfoDao + com.dianping.cat.core.dal.HostinfoDao org.unidal.dal.jdbc.QueryEngine @@ -279,8 +289,8 @@ - com.dianping.cat.core.dal.DailyGraphDao - com.dianping.cat.core.dal.DailyGraphDao + com.dianping.cat.core.dal.MonthlyReportDao + com.dianping.cat.core.dal.MonthlyReportDao org.unidal.dal.jdbc.QueryEngine @@ -288,8 +298,8 @@ - com.dianping.cat.core.dal.DailyReportDao - com.dianping.cat.core.dal.DailyReportDao + com.dianping.cat.core.dal.ProjectDao + com.dianping.cat.core.dal.ProjectDao org.unidal.dal.jdbc.QueryEngine @@ -297,8 +307,8 @@ - com.dianping.cat.core.dal.GraphDao - com.dianping.cat.core.dal.GraphDao + com.dianping.cat.core.dal.HourlyReportDao + com.dianping.cat.core.dal.HourlyReportDao org.unidal.dal.jdbc.QueryEngine @@ -306,8 +316,17 @@ - com.dianping.cat.core.dal.MonthlyReportDao - com.dianping.cat.core.dal.MonthlyReportDao + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.HourlyReportContentDao + + + org.unidal.dal.jdbc.QueryEngine + + + + + com.dianping.cat.core.dal.TaskDao + com.dianping.cat.core.dal.TaskDao org.unidal.dal.jdbc.QueryEngine diff --git a/cat-core/src/main/resources/META-INF/wizard/jdbc/wizard.xml b/cat-core/src/main/resources/META-INF/wizard/jdbc/wizard.xml index c78a5d971..23a4cc8a3 100644 --- a/cat-core/src/main/resources/META-INF/wizard/jdbc/wizard.xml +++ b/cat-core/src/main/resources/META-INF/wizard/jdbc/wizard.xml @@ -1,14 +1,14 @@ - - + + com.mysql.jdbc.Driver - jdbc:mysql://192.168.7.43:3306/cat - dpcom_cat + jdbc:mysql://127.0.0.1:3306/cat + root password useUnicode=true&autoReconnect=true - +
@@ -18,8 +18,9 @@
+
- +
diff --git a/cat-core/src/test/java/com/dianping/cat/consumer/AllTests.java b/cat-core/src/test/java/com/dianping/cat/consumer/AllTests.java new file mode 100644 index 000000000..8283d84cb --- /dev/null +++ b/cat-core/src/test/java/com/dianping/cat/consumer/AllTests.java @@ -0,0 +1,15 @@ +package com.dianping.cat.consumer; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ + +// add test classes here + +}) +public class AllTests { + +} diff --git a/cat-core/src/test/java/com/dianping/cat/core/AllTests.java b/cat-core/src/test/java/com/dianping/cat/core/AllTests.java new file mode 100644 index 000000000..8bb4a9441 --- /dev/null +++ b/cat-core/src/test/java/com/dianping/cat/core/AllTests.java @@ -0,0 +1,15 @@ +package com.dianping.cat.core; + +import org.junit.runner.RunWith; +import org.junit.runners.Suite; +import org.junit.runners.Suite.SuiteClasses; + +@RunWith(Suite.class) +@SuiteClasses({ + +// add test classes here + +}) +public class AllTests { + +} diff --git a/cat-home/src/main/java/com/dianping/cat/build/CatDatabaseConfigurator.java b/cat-home/src/main/java/com/dianping/cat/build/CatDatabaseConfigurator.java index a17a3354c..73ba5ffc9 100644 --- a/cat-home/src/main/java/com/dianping/cat/build/CatDatabaseConfigurator.java +++ b/cat-home/src/main/java/com/dianping/cat/build/CatDatabaseConfigurator.java @@ -11,7 +11,8 @@ final class CatDatabaseConfigurator extends AbstractJdbcResourceConfigurator { public List defineComponents() { List all = new ArrayList(); - all.add(defineJdbcDataSourceComponent("cat", "com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/cat", "root", "", "")); + all.add(defineJdbcDataSourceComponent("cat", "com.mysql.jdbc.Driver", "jdbc:mysql://127.0.0.1:3306/cat", "root", "password", "")); + defineSimpleTableProviderComponents(all, "cat", com.dianping.cat.home.dal.report._INDEX.getEntityClasses()); defineDaoComponents(all, com.dianping.cat.home.dal.report._INDEX.getDaoClasses()); diff --git a/cat-home/src/main/java/com/dianping/cat/build/ReportServiceComponentConfigurator.java b/cat-home/src/main/java/com/dianping/cat/build/ReportServiceComponentConfigurator.java index 722f9228a..bbae8874f 100644 --- a/cat-home/src/main/java/com/dianping/cat/build/ReportServiceComponentConfigurator.java +++ b/cat-home/src/main/java/com/dianping/cat/build/ReportServiceComponentConfigurator.java @@ -8,6 +8,7 @@ import org.unidal.lookup.configuration.Component; import com.dianping.cat.consumer.advanced.dal.BusinessReportDao; import com.dianping.cat.core.dal.DailyReportDao; +import com.dianping.cat.core.dal.HourlyReportContentDao; import com.dianping.cat.core.dal.HourlyReportDao; import com.dianping.cat.core.dal.MonthlyReportDao; import com.dianping.cat.core.dal.WeeklyReportDao; @@ -34,34 +35,34 @@ public class ReportServiceComponentConfigurator extends AbstractResourceConfigur public List defineComponents() { List all = new ArrayList(); - all.add(C(TransactionReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(EventReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(ProblemReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(MatrixReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(CrossReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(SqlReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(StateReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); + all.add(C(TransactionReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(EventReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(ProblemReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(MatrixReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(CrossReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(SqlReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, DailyReportDao.class, + WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(StateReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); - all.add(C(TopReportService.class).req(HourlyReportDao.class)); - all.add(C(DependencyReportService.class).req(HourlyReportDao.class)); - all.add(C(HeartbeatReportService.class).req(HourlyReportDao.class)); + all.add(C(TopReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class)); + all.add(C(DependencyReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class)); + all.add(C(HeartbeatReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class)); all.add(C(MetricReportService.class).req(HourlyReportDao.class, BusinessReportDao.class)); - all.add(C(BugReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(UtilizationReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(ServiceReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); - all.add(C(HeavyReportService.class).req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, - MonthlyReportDao.class)); + all.add(C(BugReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, DailyReportDao.class, + WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(UtilizationReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(ServiceReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); + all.add(C(HeavyReportService.class).req(HourlyReportDao.class, HourlyReportContentDao.class, + DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class)); all.add(C(ReportService.class, DefaultReportService.class) .req(HourlyReportDao.class, DailyReportDao.class, WeeklyReportDao.class, MonthlyReportDao.class) // diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/statistics/Model.java b/cat-home/src/main/java/com/dianping/cat/report/page/statistics/Model.java index a54c73b0c..14bb288fe 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/page/statistics/Model.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/statistics/Model.java @@ -52,7 +52,6 @@ public class Model extends AbstractReportModel { return m_utilizationWebList; } - public List getUtilizationServiceList() { return m_utilizationServiceList; } diff --git a/cat-home/src/main/java/com/dianping/cat/report/service/AbstractReportService.java b/cat-home/src/main/java/com/dianping/cat/report/service/AbstractReportService.java index 641444b71..c07ac261e 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/service/AbstractReportService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/service/AbstractReportService.java @@ -11,6 +11,7 @@ import org.unidal.lookup.annotation.Inject; import com.dianping.cat.Cat; import com.dianping.cat.core.dal.HourlyReport; +import com.dianping.cat.core.dal.HourlyReportContentDao; import com.dianping.cat.core.dal.HourlyReportDao; import com.dianping.cat.core.dal.HourlyReportEntity; import com.dianping.cat.helper.TimeUtil; @@ -19,6 +20,9 @@ public abstract class AbstractReportService { @Inject protected HourlyReportDao m_hourlyReportDao; + + @Inject + protected HourlyReportContentDao m_hourlyReportContentDao; public static final int s_hourly = 1; diff --git a/cat-home/src/main/java/com/dianping/cat/report/service/impl/TransactionReportService.java b/cat-home/src/main/java/com/dianping/cat/report/service/impl/TransactionReportService.java index f96496e05..1ea7ffc6d 100644 --- a/cat-home/src/main/java/com/dianping/cat/report/service/impl/TransactionReportService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/service/impl/TransactionReportService.java @@ -11,10 +11,13 @@ import com.dianping.cat.Cat; import com.dianping.cat.consumer.transaction.TransactionAnalyzer; import com.dianping.cat.consumer.transaction.TransactionReportMerger; import com.dianping.cat.consumer.transaction.model.entity.TransactionReport; +import com.dianping.cat.consumer.transaction.model.transform.DefaultNativeParser; import com.dianping.cat.core.dal.DailyReport; import com.dianping.cat.core.dal.DailyReportDao; import com.dianping.cat.core.dal.DailyReportEntity; import com.dianping.cat.core.dal.HourlyReport; +import com.dianping.cat.core.dal.HourlyReportContent; +import com.dianping.cat.core.dal.HourlyReportContentEntity; import com.dianping.cat.core.dal.HourlyReportEntity; import com.dianping.cat.core.dal.MonthlyReport; import com.dianping.cat.core.dal.MonthlyReportDao; @@ -23,7 +26,6 @@ import com.dianping.cat.core.dal.WeeklyReport; import com.dianping.cat.core.dal.WeeklyReportDao; import com.dianping.cat.core.dal.WeeklyReportEntity; import com.dianping.cat.helper.TimeUtil; -import com.dianping.cat.message.Message; import com.dianping.cat.report.service.AbstractReportService; public class TransactionReportService extends AbstractReportService { @@ -46,6 +48,16 @@ public class TransactionReportService extends AbstractReportService 0) {// for old xml storage + TransactionReport reportModel = com.dianping.cat.consumer.transaction.model.transform.DefaultSaxParser + .parse(xml); + reportModel.accept(merger); + } else {// for new binary storage, binary is same to report id + TransactionReport reportModel = queryFromBinary(report.getId(), domain); + + reportModel.accept(merger); + } } catch (Exception e) { Cat.logError(e); - Cat.getProducer().logEvent("ErrorXML", name, Message.SUCCESS, - report.getDomain() + " " + report.getPeriod() + " " + report.getId()); } } } diff --git a/cat-home/src/main/resources/META-INF/dal/jdbc/report-codegen.xml b/cat-home/src/main/resources/META-INF/dal/jdbc/report-codegen.xml index e7411ae33..e399862ea 100644 --- a/cat-home/src/main/resources/META-INF/dal/jdbc/report-codegen.xml +++ b/cat-home/src/main/resources/META-INF/dal/jdbc/report-codegen.xml @@ -51,7 +51,94 @@ - + + + + + + + + + + + FROM
+ WHERE = ${key-id}]]> + + + () + VALUES()]]> + + + + + SET + WHERE = ${key-id}]]> + + + + + WHERE = ${key-id}]]> + + + + + + + + + + + + + + + + + + + + FROM
+ WHERE = ${key-report-id}]]> + + + () + VALUES()]]> + + + + + SET + WHERE = ${key-report-id}]]> + + + + + WHERE = ${key-report-id}]]> + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/cat-home/src/main/resources/META-INF/plexus/components.xml b/cat-home/src/main/resources/META-INF/plexus/components.xml index 63989f611..d72f9f17a 100755 --- a/cat-home/src/main/resources/META-INF/plexus/components.xml +++ b/cat-home/src/main/resources/META-INF/plexus/components.xml @@ -163,6 +163,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -181,6 +184,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -199,6 +205,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -217,6 +226,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -235,6 +247,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -253,6 +268,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -271,6 +289,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -289,6 +310,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -298,6 +322,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -307,6 +334,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + @@ -328,6 +358,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -346,6 +379,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -364,6 +400,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -382,6 +421,9 @@ com.dianping.cat.core.dal.HourlyReportDao + + com.dianping.cat.core.dal.HourlyReportContentDao + com.dianping.cat.core.dal.DailyReportDao @@ -1391,7 +1433,7 @@ com.mysql.jdbc.Driver jdbc:mysql://127.0.0.1:3306/cat root - + password @@ -1421,6 +1463,26 @@ cat + + org.unidal.dal.jdbc.mapping.TableProvider + report-content + org.unidal.dal.jdbc.mapping.SimpleTableProvider + + report-content + report_content + cat + + + + org.unidal.dal.jdbc.mapping.TableProvider + sqlreport + org.unidal.dal.jdbc.mapping.SimpleTableProvider + + sqlreport + sqlreport + cat + + org.unidal.dal.jdbc.mapping.TableProvider topology-graph @@ -1449,6 +1511,24 @@ + + com.dianping.cat.home.dal.report.ReportContentDao + com.dianping.cat.home.dal.report.ReportContentDao + + + org.unidal.dal.jdbc.QueryEngine + + + + + com.dianping.cat.home.dal.report.SqlreportDao + com.dianping.cat.home.dal.report.SqlreportDao + + + org.unidal.dal.jdbc.QueryEngine + + + com.dianping.cat.home.dal.report.TopologyGraphDao com.dianping.cat.home.dal.report.TopologyGraphDao diff --git a/cat-home/src/main/resources/META-INF/wizard/jdbc/wizard.xml b/cat-home/src/main/resources/META-INF/wizard/jdbc/wizard.xml index f3126751f..d36b44b54 100644 --- a/cat-home/src/main/resources/META-INF/wizard/jdbc/wizard.xml +++ b/cat-home/src/main/resources/META-INF/wizard/jdbc/wizard.xml @@ -12,6 +12,7 @@
+
diff --git a/script/Cat.sql b/script/Cat.sql index 42c34280b..b408c6388 100644 --- a/script/Cat.sql +++ b/script/Cat.sql @@ -86,17 +86,14 @@ CREATE TABLE `location` ( UNIQUE KEY `transaction_date_lat_lng` (`transaction_date`,`lat`,`lng`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用于热点图地理位置表'; - CREATE TABLE `report` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` tinyint(4) NOT NULL COMMENT '报表类型, 1/xml, 9/binary 默认1', `name` varchar(20) NOT NULL COMMENT '报表名称', `ip` varchar(20) DEFAULT NULL COMMENT '报表来自于哪台机器', - `domain` varchar(50) NOT NULL, - `period` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '报表时间段', - `headers` text NOT NULL, + `domain` varchar(50) NOT NULL COMMENT '报表项目', + `period` timestamp NOT NULL COMMENT '报表时间段', `content` longtext NULL, - `binary_content` longblob NULL, `creation_date` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT '报表创建时间', PRIMARY KEY (`id`), KEY `IX_Domain_Name_Period` (`domain`,`name`,`period`), @@ -104,6 +101,12 @@ CREATE TABLE `report` ( KEY `IX_Period` (`period`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED COMMENT='用于存放实时报表信息,处理之后的结果'; +CREATE TABLE `report_content` ( + `report_id` int(11) NOT NULL COMMENT '报表ID', + `content` longblob NOT NULL COMMENT '二进制报表内容', + `creation_date` timestamp NOT NULL COMMENT '创建时间', + PRIMARY KEY (`report_id`) +)ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED COMMENT='小时报表二进制内容'; CREATE TABLE `businessReport` ( `id` int(11) NOT NULL AUTO_INCREMENT, -- GitLab