diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpUploader.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpUploader.java index 0793b8708007798ef67395502566c21d4a227936..095cb712a43ec930d593b02bda19be4405d95bf4 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpUploader.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/dump/DumpUploader.java @@ -107,7 +107,7 @@ public class DumpUploader implements Initializable, LogEnabled { upload(); } } catch (Exception e) { - m_logger.warn("Error when dumping message to HDFS.", e); + m_logger.warn("Error when dumping message to HDFS. " +e.getMessage()); } try { diff --git a/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdUploader.java b/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdUploader.java index 4b0054230df96eafe8dace9262290a97b08278d7..d2ae7fd161cf683c82764528109339bb0556a054 100644 --- a/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdUploader.java +++ b/cat-consumer/src/main/java/com/dianping/cat/consumer/remote/RemoteIdUploader.java @@ -104,7 +104,7 @@ public class RemoteIdUploader implements Initializable, LogEnabled { upload(); } } catch (Exception e) { - m_logger.warn("Error when dumping remoteIds to HDFS.", e); + m_logger.error("Error when dumping remoteIds to HDFS. " + e.getMessage()); } try { @@ -112,7 +112,6 @@ public class RemoteIdUploader implements Initializable, LogEnabled { } catch (InterruptedException e) { e.printStackTrace(); } - } } @@ -134,7 +133,8 @@ public class RemoteIdUploader implements Initializable, LogEnabled { private void upload() { File outbox = new File(m_baseDir, "outbox"); String ipAddress = NetworkInterfaceManager.INSTANCE.getLocalHostAddress(); - String path = m_builder.getMessageRemoteIdPath(ipAddress, new Date()); + Date lastHour = new Date(System.currentTimeMillis() - 60 * 60 * 1000); + String path = m_builder.getMessageRemoteIdPath(ipAddress, lastHour); File file = new File(outbox, path); if (!file.exists()) { return; @@ -168,7 +168,8 @@ public class RemoteIdUploader implements Initializable, LogEnabled { t.addData("speed", speed); t.setStatus(Message.SUCCESS); - m_logger.info(String.format("Finish remoteIds uploading(%s) to HDFS(%s) with size(%s) at %s.", file.getCanonicalPath(), path, size, speed)); + m_logger.info(String.format("Finish remoteIds uploading(%s) to HDFS(%s) with size(%s) at %s.", + file.getCanonicalPath(), path, size, speed)); if (!file.delete()) { m_logger.warn("Can't delete file: " + file); diff --git a/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java b/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java index 7acd8132e1c8e6fb5455a6ecd130fd23ff37882e..eecfc1f85d17ecb90f467523c70c1e0e2ca4fc9f 100644 --- a/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java +++ b/cat-core/src/main/java/com/dianping/cat/configuration/ServerConfigManager.java @@ -21,7 +21,6 @@ import com.dianping.cat.configuration.server.entity.ServerConfig; import com.dianping.cat.configuration.server.entity.StorageConfig; import com.dianping.cat.configuration.server.transform.DefaultDomParser; import com.site.helper.Files; -import com.site.helper.Threads; import com.site.helper.Threads.Task; public class ServerConfigManager implements Initializable, LogEnabled { diff --git a/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilder.java b/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilder.java index df2223a92f1f5ee612fcb4be013aed18c785f411..fab0569b09f9aecf6f0929cf01e5424388c2dac0 100644 --- a/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilder.java +++ b/cat-core/src/main/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilder.java @@ -56,12 +56,10 @@ public class DefaultMessagePathBuilder implements MessagePathBuilder, Initializa return messageId + "/logview.html"; } - - @Override public String getMessageRemoteIdPath(String ip, Date timestamp) { MessageFormat format = new MessageFormat("{0,date,yyyyMMdd}/{0,date,HH}/remoteid-{1}"); - String path = format.format(new Object[] { new Date(), ip }); + String path = format.format(new Object[] { timestamp, ip }); return path; } diff --git a/cat-core/src/test/java/com/dianping/cat/AllTests.java b/cat-core/src/test/java/com/dianping/cat/AllTests.java index 09c074bacbc26a36ae118b37a6b67c7b68755dae..00329b5be2b59cf69b14f3779180effe4c344f87 100644 --- a/cat-core/src/test/java/com/dianping/cat/AllTests.java +++ b/cat-core/src/test/java/com/dianping/cat/AllTests.java @@ -15,6 +15,7 @@ import com.dianping.cat.message.io.InMemoryTest; import com.dianping.cat.message.io.TcpSocketTest; import com.dianping.cat.message.spi.codec.HtmlMessageCodecTest; import com.dianping.cat.message.spi.codec.PlainTextMessageCodecTest; +import com.dianping.cat.message.spi.internal.DefaultMessagePathBuilderTest; import com.dianping.cat.storage.BucketManagerTest; import com.dianping.cat.storage.message.LocalLogviewBucketTest; import com.dianping.cat.storage.message.LogviewBucketTest; @@ -44,6 +45,8 @@ MessageIdFactoryTest.class, MillisSecondTimerTest.class, +DefaultMessagePathBuilderTest.class, + /* .io */ InMemoryTest.class, diff --git a/cat-core/src/test/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilderTest.java b/cat-core/src/test/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilderTest.java new file mode 100644 index 0000000000000000000000000000000000000000..3a397ef041b34b976eec43205a748c103d2b2688 --- /dev/null +++ b/cat-core/src/test/java/com/dianping/cat/message/spi/internal/DefaultMessagePathBuilderTest.java @@ -0,0 +1,40 @@ +package com.dianping.cat.message.spi.internal; + +import java.text.SimpleDateFormat; +import java.util.Date; + +import junit.framework.Assert; + +import org.junit.Test; + +public class DefaultMessagePathBuilderTest { + + @Test + public void testRemotePathBuilder() { + DefaultMessagePathBuilder builder = new DefaultMessagePathBuilder(); + int hour = 60 * 60 * 1000; + long current = System.currentTimeMillis(); + long currentHour = current - current % hour; + + Date date = new Date(currentHour); + SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd/HH/"); + String dateStr = sdf.format(date); + String ip = "127.0.0.1"; + String path = builder.getMessageRemoteIdPath(ip, date); + + Assert.assertEquals(dateStr + "remoteid-" + ip, path); + + date = new Date(currentHour - hour); + dateStr = sdf.format(date); + path = builder.getMessageRemoteIdPath(ip, date); + + Assert.assertEquals(dateStr + "remoteid-" + ip, path); + + + date = new Date(currentHour + 5*hour); + dateStr = sdf.format(date); + path = builder.getMessageRemoteIdPath(ip, date); + + Assert.assertEquals(dateStr + "remoteid-" + ip, path); + } +} diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/model/event/HistoricalEventService.java b/cat-home/src/main/java/com/dianping/cat/report/page/model/event/HistoricalEventService.java index fc5108b2f934ea86a3ac685e2975deffbc177ba5..aa821176ac5f5421e13bb678eb16e8284ca62aa7 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/model/event/HistoricalEventService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/model/event/HistoricalEventService.java @@ -52,17 +52,18 @@ public class HistoricalEventService extends BaseHistoricalModelService historyReports = m_reportDao.findAllByDomainNameDuration(new Date(timestamp), new Date( timestamp + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME); - if (eventReport != null && historyReports != null) { - Set domainNames = eventReport.getDomainNames(); - for (Report report : historyReports) { - domainNames.add(report.getDomain()); - } + if (eventReport == null) { + eventReport = new EventReport(domain); + } + Set domainNames = eventReport.getDomainNames(); + for (Report report : historyReports) { + domainNames.add(report.getDomain()); } - return merger == null ? null : eventReport; + return eventReport; } private EventReport getReportFromLocalDisk(long timestamp, String domain) throws Exception { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/HistoricalHeartbeatService.java b/cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/HistoricalHeartbeatService.java index 5d638f0c9f49d92d19b5d187964635d81f349f7f..aed7336855ea60a85054f69fe9f83401261c6c15 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/HistoricalHeartbeatService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/model/heartbeat/HistoricalHeartbeatService.java @@ -56,14 +56,15 @@ public class HistoricalHeartbeatService extends BaseHistoricalModelService historyReports = m_reportDao.findAllByDomainNameDuration(new Date(timestamp), new Date( timestamp + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME); - if (heartbeatReport != null && historyReports != null) { - Set domainNames = heartbeatReport.getDomainNames(); - for (Report report : historyReports) { - domainNames.add(report.getDomain()); - } + if (heartbeatReport == null) { + heartbeatReport = new HeartbeatReport(domain); + } + Set domainNames = heartbeatReport.getDomainNames(); + for (Report report : historyReports) { + domainNames.add(report.getDomain()); } - return merger == null ? null : heartbeatReport; + return heartbeatReport; } private HeartbeatReport getReportFromLocalDisk(long timestamp, String domain) throws Exception { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/model/problem/HistoricalProblemService.java b/cat-home/src/main/java/com/dianping/cat/report/page/model/problem/HistoricalProblemService.java index a0eaf9cd245aa5624d61d793bad0904adaa76c78..98aaa8e4b5c6d604f8225589e743f6dd65f1e431 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/model/problem/HistoricalProblemService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/model/problem/HistoricalProblemService.java @@ -56,13 +56,14 @@ public class HistoricalProblemService extends BaseHistoricalModelService historyReports = m_reportDao.findAllByDomainNameDuration(new Date(timestamp), new Date( timestamp + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME); - if (problemReport != null && historyReports != null) { - Set domainNames = problemReport.getDomainNames(); - for (Report report : historyReports) { - domainNames.add(report.getDomain()); - } + if (problemReport == null) { + problemReport = new ProblemReport(domain); } - return merger == null ? null : problemReport; + Set domainNames = problemReport.getDomainNames(); + for (Report report : historyReports) { + domainNames.add(report.getDomain()); + } + return problemReport; } private ProblemReport getReportFromLocalDisk(long timestamp, String domain) throws Exception { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HistoricalTransactionService.java b/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HistoricalTransactionService.java index d0a0e515cf7f2e8dc294d97def23d463bfdb6243..1113b15be184fa33636b3bc31658eeb64a4f7c87 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HistoricalTransactionService.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HistoricalTransactionService.java @@ -52,17 +52,18 @@ public class HistoricalTransactionService extends BaseHistoricalModelService historyReports = m_reportDao.findAllByDomainNameDuration(new Date(timestamp), new Date( timestamp + 60 * 60 * 1000), null, null, ReportEntity.READSET_DOMAIN_NAME); - if (transactionReport != null && historyReports != null) { - Set domainNames = transactionReport.getDomainNames(); - for (Report report : historyReports) { - domainNames.add(report.getDomain()); - } + if (transactionReport == null) { + transactionReport = new TransactionReport(domain); + } + Set domainNames = transactionReport.getDomainNames(); + for (Report report : historyReports) { + domainNames.add(report.getDomain()); } - return merger == null ? null : transactionReport; + return transactionReport; } private TransactionReport getReportFromLocalDisk(long timestamp, String domain) throws Exception { diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java index 1f5d95bd91a35f44cbe901fd42085baf53f074fc..c77a3513132674323b7cdeea5b34f64c5ac446fd 100755 --- a/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java +++ b/cat-home/src/main/java/com/dianping/cat/report/page/transaction/Handler.java @@ -266,7 +266,7 @@ public class Handler implements PageHandler { TransactionReport reportModel = DefaultSaxParser.parse(xml); reportModel.accept(merger); } - transactionReport = merger == null ? null : merger.getTransactionReport(); + transactionReport = merger.getTransactionReport(); } catch (Exception e) { e.printStackTrace(); } diff --git a/cat-home/src/main/webapp/WEB-INF/tags/body.tag b/cat-home/src/main/webapp/WEB-INF/tags/body.tag index 16bb26dcd35c9f1836262da17c6856181301a624..3121c78594bb510cc86ffc33f0461a33fa6ee5fb 100755 --- a/cat-home/src/main/webapp/WEB-INF/tags/body.tag +++ b/cat-home/src/main/webapp/WEB-INF/tags/body.tag @@ -13,7 +13,7 @@ -
+
    diff --git a/cat-home/src/main/webapp/WEB-INF/tags/historyReport.tag b/cat-home/src/main/webapp/WEB-INF/tags/historyReport.tag index 18e4ff2a2e667f017be0c29618c8e48ce76654c5..f0527e053b77f6ebf066df876188428dd01edd2e 100755 --- a/cat-home/src/main/webapp/WEB-INF/tags/historyReport.tag +++ b/cat-home/src/main/webapp/WEB-INF/tags/historyReport.tag @@ -14,9 +14,24 @@
    - - + +
    ${title}  Browse Mode:History Summarize Report - [ Hourly Mode ]  +   Switch To Hourly Mode +
    @@ -36,26 +51,6 @@
    - -   [ ${model.currentNav.last} ]   -   [ ${model.currentNav.next} ]   -   [ now ]   - - - - - - - -   [ ${nav.title} ] - - -   [ ${nav.title} ]   - - - -   - diff --git a/cat-home/src/main/webapp/WEB-INF/tags/hourlyReport.tag b/cat-home/src/main/webapp/WEB-INF/tags/hourlyReport.tag index 1ab8b196fb67971dc1725432b5480258c576c1f0..bc6ff850500031d01efc4187ae4b5497baf35793 100755 --- a/cat-home/src/main/webapp/WEB-INF/tags/hourlyReport.tag +++ b/cat-home/src/main/webapp/WEB-INF/tags/hourlyReport.tag @@ -14,9 +14,14 @@
    - - + +
    ${title}  Browse Mode:Hourly Report - [ History Mode ]  +   Switch To History Mode +
    @@ -37,12 +42,6 @@
    - - -  [ ${nav.title} ]  - -  [ now ]  - diff --git a/cat-home/src/main/webapp/css/body.css b/cat-home/src/main/webapp/css/body.css index 735cb6d765f17dfac4ae0ff7ae1f1141d203dea3..8cce06752d40732e3d013ef941c4a99cceac2cb9 100755 --- a/cat-home/src/main/webapp/css/body.css +++ b/cat-home/src/main/webapp/css/body.css @@ -33,7 +33,7 @@ a:hover { } ul.tabs { - border-bottom: 1px solid gray; + border-bottom: 1px solid black; list-style-type: none; position: relative; padding: 0em; @@ -46,9 +46,9 @@ ul.tabs { margin: 0em 0.4em 0em 0.4em; padding: 0.4em 0.4em 0.4em 0.4em; overflow: hidden; - border-top: 1px solid gray; - border-left: 1px solid gray; - border-right: 1px solid gray; + border-top: 1px solid black; + border-left: 1px solid black; + border-right: 1px solid black; } .tabs li.selected { diff --git a/cat-home/src/main/webapp/css/report.css b/cat-home/src/main/webapp/css/report.css index 325714ff9ba761c41c716e4375dc4646132fc210..7f50854c33916f4e12fe83cf5ed5e018bf31faf7 100755 --- a/cat-home/src/main/webapp/css/report.css +++ b/cat-home/src/main/webapp/css/report.css @@ -8,11 +8,12 @@ .report .header .title { font-weight: bold; + color: black; } -.report .header .timestamp { - white-space: nowrap; - width: 200px; +.report .header .title { + font-weight: bold; + color: black; } .report .navbar { @@ -47,10 +48,17 @@ font-weight: bold; } -.report .header .switch { +.report .header .nav { text-align: right; font-size: small; font-weight: bold; + color: black; +} + +.report .header .switch { + text-align: left; + font-size: small; + font-weight: bold; } .report .navbar .nav A { diff --git a/cat-home/src/main/webapp/jsp/report/home.jsp b/cat-home/src/main/webapp/jsp/report/home.jsp index 5dc4cb694688ad458a4974c8a861bc050da017cc..53003b4c505f1c90822f3b3a885282d2a701ec0b 100755 --- a/cat-home/src/main/webapp/jsp/report/home.jsp +++ b/cat-home/src/main/webapp/jsp/report/home.jsp @@ -19,22 +19,20 @@ Welcome to Central Application Tracking (CAT).

    - - - + + +
    CAT用户手册
    CAT开发者文档
    CAT集成帮助文档
    CAT用户手册
    CAT开发者文档
    CAT集成帮助文档



    - - - - - - + + + + + +
    版本说明
    0.3.31、修改CAT线程为后台Dameon线程。2、减少CAT的日志输出。3、修复了极端情况客户端丢失部分消息。4、支持CAT的延迟加载。
    0.3.21、修复了配置单个服务器时候,服务器重启,客户端断开链接bug。2、修复了CAT不正常加载时候,内存溢出的问题。
    0.3.11、修复CAT在业务testcase的使用,支持业务运行Testcase在Console上看到运行情况。
    0.3.01、修复CAT在Transaction Name的Nullpoint异常。
    0.2.51、心跳消息监控新增oldgc和newgc - 2、更新了ThreadLocal的线程模型(修复了一些无头消息和部分错乱消息) -
    版本说明发布时间
    0.3.31、修改CAT线程为后台Dameon线程。2、减少CAT的日志输出。3、修复了极端情况客户端丢失部分消息。4、支持CAT的延迟加载。2012-07-17
    0.3.21、修复了配置单个服务器时候,服务器重启,客户端断开链接bug。2、修复了CAT不正常加载时候,内存溢出的问题。2012-07-01
    0.3.11、修复CAT在业务testcase的使用,支持业务运行Testcase在Console上看到运行情况。2012-06-25
    0.3.01、修复CAT在Transaction Name的Nullpoint异常。2012-06-15
    0.2.51、心跳消息监控新增oldgc和newgc 2、更新了ThreadLocal的线程模型(修复了一些无头消息和部分错乱消息)2012-05-01