getStringBucket(String path) throws IOException;
diff --git a/cat-core/src/main/java/com/dianping/cat/storage/TagThreadSupport.java b/cat-core/src/main/java/com/dianping/cat/storage/TagThreadSupport.java
index 6b15b83dc7908a31a98dc15c2fa64305a4de2fb9..4d4f0566c7fed8a135a6c85bb55c2ccfaec0bbe1 100644
--- a/cat-core/src/main/java/com/dianping/cat/storage/TagThreadSupport.java
+++ b/cat-core/src/main/java/com/dianping/cat/storage/TagThreadSupport.java
@@ -6,7 +6,7 @@ import java.util.List;
* Map to one HDFS directory for one report.
*
*
- * Sample tags: "thread:101", "session:abc", "request:xyz", "parent:xxx"
+ * Sample tags: "thread:101", "session:abc", "request:xyz"
*/
public interface TagThreadSupport {
public boolean storeById(String id, T data, String... tags);
diff --git a/cat-core/src/main/java/com/dianping/cat/storage/internal/AbstractFileBucket.java b/cat-core/src/main/java/com/dianping/cat/storage/internal/AbstractFileBucket.java
index 6e007f95897f9952ae4af93a8225570c5f2675de..03dbd06fabf5e6db20d5062f1915d26078494123 100644
--- a/cat-core/src/main/java/com/dianping/cat/storage/internal/AbstractFileBucket.java
+++ b/cat-core/src/main/java/com/dianping/cat/storage/internal/AbstractFileBucket.java
@@ -50,9 +50,9 @@ public abstract class AbstractFileBucket implements Bucket, TagThreadSuppo
m_writeLock.lock();
try {
- m_writeFile.close();
m_idToOffsets.clear();
m_tagToIds.clear();
+ m_writeFile.close();
} catch (IOException e) {
// ignore it
} finally {
diff --git a/cat-core/src/main/java/com/dianping/cat/storage/internal/DefaultBucketFactory.java b/cat-core/src/main/java/com/dianping/cat/storage/internal/DefaultBucketFactory.java
deleted file mode 100644
index 6542ce9e3a176fe76ca9770cdc32f3758716d826..0000000000000000000000000000000000000000
--- a/cat-core/src/main/java/com/dianping/cat/storage/internal/DefaultBucketFactory.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.dianping.cat.storage.internal;
-
-import com.dianping.cat.storage.Bucket;
-import com.dianping.cat.storage.BucketFactory;
-
-public class DefaultBucketFactory implements BucketFactory {
- @Override
- public Bucket create(String path) {
- // TODO Auto-generated method stub
- return null;
- }
-}
diff --git a/cat-core/src/main/java/com/dianping/cat/storage/internal/DefaultBucketManager.java b/cat-core/src/main/java/com/dianping/cat/storage/internal/DefaultBucketManager.java
index 2d1841f15492f1fd9f377b75d8f2dd4cd1e630bc..fb1a9baa05b3549bb979c63a3b5a4a32e515aeae 100644
--- a/cat-core/src/main/java/com/dianping/cat/storage/internal/DefaultBucketManager.java
+++ b/cat-core/src/main/java/com/dianping/cat/storage/internal/DefaultBucketManager.java
@@ -103,4 +103,10 @@ public class DefaultBucketManager extends ContainerHolder implements BucketManag
return hashcode;
}
}
+
+ @Override
+ public void closeBucket(Bucket> bucket) {
+ bucket.close();
+ release(bucket);
+ }
}
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 70861d7817dc3f49a56aeb65dad31a69682b5447..6160fedb1d3a540cd117eab15ed9e4e806529a41 100644
--- a/cat-core/src/main/resources/META-INF/plexus/components.xml
+++ b/cat-core/src/main/resources/META-INF/plexus/components.xml
@@ -209,9 +209,5 @@
com.dianping.cat.storage.BucketManager
com.dianping.cat.storage.internal.DefaultBucketManager
-
- com.dianping.cat.storage.BucketFactory
- com.dianping.cat.storage.internal.DefaultBucketFactory
-
diff --git a/cat-home/pom.xml b/cat-home/pom.xml
index 1a7c6315ef4ef39e4b0a79e9267b30f2a66506ef..a9cf604163d3201343c8f9c48802cb8931c610aa 100644
--- a/cat-home/pom.xml
+++ b/cat-home/pom.xml
@@ -4,7 +4,7 @@
com.dianping.cat
parent
- 0.2.0
+ 0.2.0-SNAPSHOT
4.0.0
cat-home
@@ -80,7 +80,7 @@
com.site.maven.plugins
maven-codegen-plugin
- 1.0.8
+ 1.0.10
generate plexus component descriptor
diff --git a/cat-home/src/main/java/com/dianping/cat/report/build/ServiceComponentConfigurator.java b/cat-home/src/main/java/com/dianping/cat/report/build/ServiceComponentConfigurator.java
index 45ea430d8c164a01fab4c8b063cfefa2d6de4ac0..239df09dc2a6ee577c638bf0e9880508e037fb35 100644
--- a/cat-home/src/main/java/com/dianping/cat/report/build/ServiceComponentConfigurator.java
+++ b/cat-home/src/main/java/com/dianping/cat/report/build/ServiceComponentConfigurator.java
@@ -4,12 +4,14 @@ import java.util.ArrayList;
import java.util.List;
import com.dianping.cat.message.spi.MessageConsumer;
+import com.dianping.cat.message.spi.MessagePathBuilder;
import com.dianping.cat.report.page.model.failure.CompositeFailureModelService;
import com.dianping.cat.report.page.model.failure.LocalFailureModelService;
import com.dianping.cat.report.page.model.spi.ModelService;
import com.dianping.cat.report.page.model.transaction.CompositeTransactionModelService;
import com.dianping.cat.report.page.model.transaction.HdfsTransactionModelService;
import com.dianping.cat.report.page.model.transaction.LocalTransactionModelService;
+import com.dianping.cat.storage.BucketManager;
import com.site.lookup.configuration.AbstractResourceConfigurator;
import com.site.lookup.configuration.Component;
@@ -20,7 +22,8 @@ class ServiceComponentConfigurator extends AbstractResourceConfigurator {
all.add(C(ModelService.class, "transaction-local", LocalTransactionModelService.class) //
.req(MessageConsumer.class, "realtime"));
- all.add(C(ModelService.class, "transaction-hdfs", HdfsTransactionModelService.class));
+ all.add(C(ModelService.class, "transaction-hdfs", HdfsTransactionModelService.class) //
+ .req(BucketManager.class, MessagePathBuilder.class));
all.add(C(ModelService.class, "transaction", CompositeTransactionModelService.class) //
.req(ModelService.class, new String[] { "transaction-local", "transaction-hdfs" }, "m_services"));
diff --git a/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HdfsTransactionModelService.java b/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HdfsTransactionModelService.java
index 0a75dd7b5ecf4765dc8002443c2565caa257c04d..aef9761d7aabb0e2b8310baa536557a999b9e4e7 100644
--- a/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HdfsTransactionModelService.java
+++ b/cat-home/src/main/java/com/dianping/cat/report/page/model/transaction/HdfsTransactionModelService.java
@@ -1,19 +1,55 @@
package com.dianping.cat.report.page.model.transaction;
+import java.util.Date;
+
import com.dianping.cat.consumer.transaction.model.entity.TransactionReport;
+import com.dianping.cat.consumer.transaction.model.transform.DefaultXmlParser;
+import com.dianping.cat.message.spi.MessagePathBuilder;
import com.dianping.cat.report.page.model.spi.ModelRequest;
import com.dianping.cat.report.page.model.spi.ModelResponse;
import com.dianping.cat.report.page.model.spi.ModelService;
+import com.dianping.cat.storage.Bucket;
+import com.dianping.cat.storage.BucketManager;
+import com.site.lookup.annotation.Inject;
public class HdfsTransactionModelService implements ModelService {
+ @Inject
+ private BucketManager m_bucketManager;
+
+ @Inject
+ private MessagePathBuilder m_pathBuilder;
+
@Override
- public boolean isEligable(ModelRequest request) {
- return request.getPeriod().isHistorical();
+ public ModelResponse invoke(ModelRequest request) {
+ String domain = request.getDomain();
+ long date = Long.parseLong(request.getProperty("date"));
+ String path = m_pathBuilder.getReportPath(new Date(date));
+ ModelResponse response = new ModelResponse();
+ Bucket bucket = null;
+
+ try {
+ bucket = m_bucketManager.getStringBucket(path);
+
+ String xml = bucket.findById("transaction-" + domain);
+
+ if (xml == null) {
+ TransactionReport report = new DefaultXmlParser().parse(xml);
+
+ response.setModel(report);
+ }
+ } catch (Exception e) {
+ response.setException(e);
+ } finally {
+ if (bucket != null) {
+ m_bucketManager.closeBucket(bucket);
+ }
+ }
+
+ return response;
}
@Override
- public ModelResponse invoke(ModelRequest request) {
- // TODO
- return null;
+ public boolean isEligable(ModelRequest request) {
+ return request.getPeriod().isHistorical();
}
}
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 2ff339da4a40e527f7244395b3f0d4ea3e6f116b..f01e7262f80e80186bf9610bbf356aae23b9d759 100644
--- 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
@@ -51,7 +51,6 @@ public class Handler implements PageHandler, Initializable {
String name = payload.getName();
String date = String.valueOf(payload.getDate());
ModelRequest request = new ModelRequest(domain, payload.getPeriod()) //
- .setProperty("domain", domain) //
.setProperty("date", date) //
.setProperty("type", payload.getType())//
.setProperty("name", payload.getName());
@@ -76,7 +75,6 @@ public class Handler implements PageHandler, Initializable {
String domain = payload.getDomain();
String date = String.valueOf(payload.getDate());
ModelRequest request = new ModelRequest(domain, payload.getPeriod()) //
- .setProperty("domain", domain) //
.setProperty("date", date) //
.setProperty("type", payload.getType());
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 5ce6b5ac00b258fd83e984df42c47eb8f4286562..4ee42a118b72ad55366d01bb53230f3703bed624 100644
--- a/cat-home/src/main/resources/META-INF/plexus/components.xml
+++ b/cat-home/src/main/resources/META-INF/plexus/components.xml
@@ -95,6 +95,14 @@
com.dianping.cat.report.page.model.spi.ModelService
transaction-hdfs
com.dianping.cat.report.page.model.transaction.HdfsTransactionModelService
+
+
+ com.dianping.cat.storage.BucketManager
+
+
+ com.dianping.cat.message.spi.MessagePathBuilder
+
+
com.dianping.cat.report.page.model.spi.ModelService
diff --git a/cat-home/src/main/webapp/js/transaction.js b/cat-home/src/main/webapp/js/transaction.js
index 75056b621b60980534c0fe7f1a0ab6655a271c3f..793ef34ac7a57051951c3cb4c06a753fd40bd45f 100644
--- a/cat-home/src/main/webapp/js/transaction.js
+++ b/cat-home/src/main/webapp/js/transaction.js
@@ -1,4 +1,8 @@
-function showGraphs(anchor, id, date, domain, type, name) {
+var isCtrl = false;
+
+function showGraphs(anchor, id, date, domain, type, name, isCurrent) {
+ if (isCtrl) return true;
+
var cell = document.getElementById(id);
var text = anchor.innerHTML;
@@ -6,11 +10,11 @@ function showGraphs(anchor, id, date, domain, type, name) {
anchor.innerHTML = '[:: hide ::]';
if (cell.nodeName == 'IMG') { //
- cell.src = "?op=graphs&date="+date+"&domain="+domain+"&type="+type+"&name="+name;
+ cell.src = "?op=graphs&date="+date+"&domain="+domain+"&type="+type+"&name="+name+(isCurrent?"&t="+new Date().getTime():"");
} else { // ...
$.ajax({
type: "get",
- url: "?op=graphs&date="+date+"&domain="+domain+"&type="+type+"&name="+name,
+ url: "?op=graphs&date="+date+"&domain="+domain+"&type="+type+"&name="+name+(isCurrent?"&t="+new Date().getTime():""),
success : function(data, textStatus) {
cell.innerHTML = data;
}
@@ -27,3 +31,9 @@ function showGraphs(anchor, id, date, domain, type, name) {
return false;
}
+
+$(document).keydown(function(e) {
+ if(e.ctrlKey || e.metaKey) isCtrl = true;
+}).keyup(function(e) {
+ isCtrl = false;
+});
\ No newline at end of file
diff --git a/cat-home/src/main/webapp/jsp/report/transaction.jsp b/cat-home/src/main/webapp/jsp/report/transaction.jsp
index efcbbf0e2e3007739da8e22b771feffeb6e92b65..a5512bd3cdb1d9cd2f7b9ce9a523f300d90eb8c8 100644
--- a/cat-home/src/main/webapp/jsp/report/transaction.jsp
+++ b/cat-home/src/main/webapp/jsp/report/transaction.jsp
@@ -28,7 +28,7 @@
${e.id} |
${e.totalCount} |
${e.failCount} |
- ${e.failPercent} |
+ ${w:format(e.failPercent,'0.00')} |
Log View |
${w:format(e.min,'0')}/${w:format(e.max,'0')}/${w:format(e.avg,'0.0')}/${w:format(e.std,'0.0')} |
@@ -38,10 +38,10 @@
- [:: show ::] ${e.id} |
+ [:: show ::] ${e.id} |
${e.totalCount} |
${e.failCount} |
- ${e.failPercent} |
+ ${w:format(e.failPercent,'0.00')} |
Log View |
${w:format(e.min,'0')}/${w:format(e.max,'0')}/${w:format(e.avg,'0.0')}/${w:format(e.std,'0.0')} |
diff --git a/cat-job/pom.xml b/cat-job/pom.xml
index 3373fa32e770e2f73e2ead1b96248baeb51626b0..9da12a87a195d0ad262e204c6ec2c308b150d13a 100644
--- a/cat-job/pom.xml
+++ b/cat-job/pom.xml
@@ -4,7 +4,7 @@
com.dianping.cat
parent
- 0.2.0
+ 0.2.0-SNAPSHOT
4.0.0
cat-job
@@ -45,7 +45,7 @@
com.site.maven.plugins
maven-codegen-plugin
- 1.0.7
+ 1.0.10
generate plexus component descriptor
diff --git a/pom.xml b/pom.xml
index d48765bd73f90fca6d2b95fb2b76f25c4525cf34..ede66d0e9c921e91d47a8906fc419c27b9c07c94 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.dianping.cat
parent
- 0.2.0
+ 0.2.0-SNAPSHOT
Tracking
pom
@@ -18,17 +18,17 @@
com.dianping.cat
cat-core
- 0.2.0
+ 0.2.0-SNAPSHOT
com.dianping.cat
cat-consumer
- 0.2.0
+ 0.2.0-SNAPSHOT
com.dianping.cat
cat-job
- 0.2.0
+ 0.2.0-SNAPSHOT
com.site.common