From 72ed8b22e41aa3f8c3280dab44185c58e7ca3f37 Mon Sep 17 00:00:00 2001
From: pengys5 <8082209@qq.com>
Date: Mon, 24 Apr 2017 21:44:15 +0800
Subject: [PATCH 01/15] Fix 159
---
skywalking-collector/pom.xml | 5 +
.../eye/skywalking/collector/AkkaSystem.java | 5 +-
.../actor/AbstractWorkerProvider.java | 3 -
.../collector/worker/AnalysisMember.java | 9 +
.../worker/CollectorBootStartUp.java | 2 +
.../collector/worker/MergeAnalysisMember.java | 38 ++--
.../worker/MergePersistenceMember.java | 83 +++-----
.../worker/MetricAnalysisMember.java | 34 ++--
.../worker/MetricPersistenceMember.java | 86 +++-----
.../collector/worker/PersistenceMember.java | 94 ++++++++-
.../worker/RecordAnalysisMember.java | 33 ++--
.../worker/RecordPersistenceMember.java | 60 +++---
.../worker/config/CacheSizeConfig.java | 4 +-
.../collector/worker/config/EsConfig.java | 40 ++++
.../collector/worker/config/WorkerConfig.java | 82 ++------
.../GlobalTraceGetWithGlobalId.java | 2 -
.../worker/globaltrace/GlobalTraceIndex.java | 6 +
.../analysis/GlobalTraceAnalysis.java | 23 ++-
.../persistence/GlobalTraceAgg.java | 4 +-
.../persistence/GlobalTraceSave.java | 19 +-
.../GlobalTraceSearchWithGlobalId.java | 6 +-
.../collector/worker/node/NodeCompIndex.java | 38 ++--
.../worker/node/NodeMappingIndex.java | 46 +++--
.../analysis/AbstractNodeCompAnalysis.java | 4 +-
.../analysis/AbstractNodeMappingAnalysis.java | 2 +-
.../node/analysis/NodeCompAnalysis.java | 23 ++-
.../node/analysis/NodeMappingDayAnalysis.java | 23 ++-
.../analysis/NodeMappingHourAnalysis.java | 25 +--
.../analysis/NodeMappingMinuteAnalysis.java | 25 +--
.../worker/node/persistence/NodeCompAgg.java | 11 +-
.../worker/node/persistence/NodeCompLoad.java | 2 -
.../worker/node/persistence/NodeCompSave.java | 19 +-
.../node/persistence/NodeMappingDayAgg.java | 8 +-
.../node/persistence/NodeMappingDaySave.java | 19 +-
.../node/persistence/NodeMappingHourAgg.java | 8 +-
.../node/persistence/NodeMappingHourSave.java | 19 +-
.../persistence/NodeMappingMinuteAgg.java | 8 +-
.../persistence/NodeMappingMinuteSave.java | 19 +-
.../NodeMappingSearchWithTimeSlice.java | 4 +-
.../worker/noderef/NodeRefIndex.java | 62 +++---
.../NodeRefResSumGetGroupWithTimeSlice.java | 2 -
.../worker/noderef/NodeRefResSumIndex.java | 78 ++++----
.../noderef/analysis/NodeRefDayAnalysis.java | 25 +--
.../noderef/analysis/NodeRefHourAnalysis.java | 25 +--
.../analysis/NodeRefMinuteAnalysis.java | 25 +--
.../analysis/NodeRefResSumDayAnalysis.java | 27 +--
.../analysis/NodeRefResSumHourAnalysis.java | 27 +--
.../analysis/NodeRefResSumMinuteAnalysis.java | 27 +--
.../noderef/persistence/NodeRefDayAgg.java | 4 +-
.../noderef/persistence/NodeRefDaySave.java | 20 +-
.../noderef/persistence/NodeRefHourAgg.java | 4 +-
.../noderef/persistence/NodeRefHourSave.java | 20 +-
.../noderef/persistence/NodeRefMinuteAgg.java | 4 +-
.../persistence/NodeRefMinuteSave.java | 20 +-
.../persistence/NodeRefResSumDayAgg.java | 4 +-
.../persistence/NodeRefResSumDaySave.java | 19 +-
.../NodeRefResSumGroupWithTimeSlice.java | 4 +-
.../persistence/NodeRefResSumHourAgg.java | 4 +-
.../persistence/NodeRefResSumHourSave.java | 19 +-
.../persistence/NodeRefResSumMinuteAgg.java | 4 +-
.../persistence/NodeRefResSumMinuteSave.java | 19 +-
.../NodeRefResSumSearchWithTimeSlice.java | 4 +-
.../NodeRefSearchWithTimeSlice.java | 4 +-
.../worker/segment/SegmentCostIndex.java | 54 ++---
.../worker/segment/SegmentExceptionIndex.java | 38 ++--
.../worker/segment/SegmentIndex.java | 70 ++++---
.../collector/worker/segment/SegmentPost.java | 24 ++-
.../SegmentTopGetWithGlobalTraceId.java | 2 -
.../segment/SegmentTopGetWithTimeSlice.java | 2 -
.../segment/analysis/SegmentAnalysis.java | 74 +++++++
.../segment/analysis/SegmentCostAnalysis.java | 106 ++++++++++
.../analysis/SegmentExceptionAnalysis.java | 111 +++++++++++
.../segment/entity/TraceSegmentRef.java | 2 +-
.../segment/persistence/SegmentCostSave.java | 65 +-----
.../persistence/SegmentExceptionSave.java | 70 +------
.../SegmentExceptionWithSegId.java | 2 -
.../segment/persistence/SegmentSave.java | 87 ++++----
.../SegmentTopSearchWithGlobalTraceId.java | 2 -
.../SegmentTopSearchWithTimeSlice.java | 2 -
.../collector/worker/span/SpanGetWithId.java | 2 -
.../span/persistence/SpanSearchWithId.java | 2 -
.../worker/storage/AbstractIndex.java | 11 +-
.../collector/worker/storage/Data.java | 12 ++
.../collector/worker/storage/EsClient.java | 20 ++
.../worker/storage/FlushAndSwitch.java | 7 +
.../worker/storage/MergeAnalysisData.java | 23 +++
.../collector/worker/storage/MergeData.java | 53 ++---
.../worker/storage/MergePersistenceData.java | 46 +----
.../worker/storage/MetricAnalysisData.java | 23 +++
.../collector/worker/storage/MetricData.java | 41 ++--
.../worker/storage/MetricPersistenceData.java | 40 +---
.../worker/storage/PersistenceData.java | 13 ++
.../worker/storage/PersistenceTimer.java | 53 +++++
.../storage/PersistenceWorkerListener.java | 23 +++
.../worker/storage/RecordAnalysisData.java | 23 +++
.../collector/worker/storage/RecordData.java | 10 +-
.../worker/storage/RecordPersistenceData.java | 50 +----
.../collector/worker/storage/SegmentData.java | 32 +++
.../storage/SegmentPersistenceData.java | 35 ++++
.../collector/worker/storage/Window.java | 50 +++++
.../collector/worker/storage/WindowData.java | 52 +++++
...ollector.actor.AbstractLocalWorkerProvider | 4 +
.../src/main/resources/collector.config | 4 +-
.../src/main/resources/log4j2.xml | 8 +
.../worker/MergeAnalysisMemberTestCase.java | 73 -------
.../MergePersistenceMemberTestCase.java | 4 +-
.../worker/TestMergeAnalysisMember.java | 5 +-
.../worker/datamerge/MetricDataMergeJson.java | 3 +-
.../GlobalTraceGetWithGlobalIdTestCase.java | 11 +-
.../GlobalTraceSearchTestCase.java | 51 +++--
.../analysis/GlobalTraceAnalysisTestCase.java | 9 +-
.../persistence/GlobalTraceAggTestCase.java | 9 +-
.../persistence/GlobalTraceSaveTestCase.java | 10 +-
...GlobalTraceSearchWithGlobalIdTestCase.java | 5 +-
.../GlobalTraceSearchWithGlobalIdUseDB.java | 2 -
.../httpserver/AbstractPostTestCase.java | 2 +-
.../worker/mock/MergeDataAnswer.java | 6 +-
.../worker/mock/MetricDataAnswer.java | 4 +-
.../worker/mock/MockGetResponse.java | 13 ++
.../analysis/NodeCompAnalysisTestCase.java | 7 +-
.../NodeMappingDayAnalysisTestCase.java | 7 +-
.../NodeMappingHourAnalysisTestCase.java | 7 +-
.../NodeMappingMinuteAnalysisTestCase.java | 7 +-
.../node/persistence/NodeCompAggTestCase.java | 14 +-
.../persistence/NodeCompSaveTestCase.java | 10 +-
.../NodeMappingDayAggTestCase.java | 14 +-
.../NodeMappingDaySaveTestCase.java | 10 +-
.../NodeMappingHourAggTestCase.java | 14 +-
.../NodeMappingHourSaveTestCase.java | 10 +-
.../NodeMappingMinuteAggTestCase.java | 14 +-
.../NodeMappingMinuteSaveTestCase.java | 10 +-
...efResSumGetGroupWithTimeSliceTestCase.java | 11 +-
.../noderef/analysis/NodeRefAnalyse.java | 1 -
.../analysis/NodeRefDayAnalysisTestCase.java | 9 +-
.../analysis/NodeRefHourAnalysisTestCase.java | 9 +-
.../NodeRefMinuteAnalysisTestCase.java | 9 +-
.../NodeRefResSumDayAnalysisTestCase.java | 7 +-
.../NodeRefResSumHourAnalysisTestCase.java | 7 +-
.../NodeRefResSumMinuteAnalysisTestCase.java | 7 +-
.../persistence/NodeRefDayAggTestCase.java | 14 +-
.../persistence/NodeRefDaySaveTestCase.java | 10 +-
.../persistence/NodeRefHourAggTestCase.java | 14 +-
.../persistence/NodeRefHourSaveTestCase.java | 9 +-
.../persistence/NodeRefMinuteAggTestCase.java | 14 +-
.../NodeRefMinuteSaveTestCase.java | 10 +-
.../NodeRefResSumDayAggTestCase.java | 14 +-
.../NodeRefResSumDaySaveTestCase.java | 10 +-
.../NodeRefResSumHourAggTestCase.java | 14 +-
.../NodeRefResSumHourSaveTestCase.java | 10 +-
.../NodeRefResSumMinuteAggTestCase.java | 14 +-
.../NodeRefResSumMinuteSaveTestCase.java | 10 +-
.../worker/segment/SegmentPostTestCase.java | 137 ++++++++-----
...egmentTopGetWithGlobalTraceIdTestCase.java | 18 +-
.../SegmentTopGetWithTimeSliceTestCase.java | 18 +-
.../persistence/SegmentCostSaveTestCase.java | 141 +------------
.../SegmentExceptionSaveTestCase.java | 44 +----
.../persistence/SegmentSaveTestCase.java | 23 +--
.../worker/span/SpanGetWithIdTestCase.java | 11 +-
.../persistence/SpanSearchWithIdTestCase.java | 5 +-
.../worker/storage/AbstractIndexTestCase.java | 7 +-
.../worker/storage/IndexCreatorTestCase.java | 5 +
.../storage/MergePersistenceDataTestCase.java | 86 --------
.../MergePersistenceWindowDataTestCase.java | 40 ++++
...Case.java => MergeWindowDataTestCase.java} | 14 +-
.../MetricPersistenceDataTestCase.java | 79 --------
.../MetricPersistenceWindowDataTestCase.java | 42 ++++
...ase.java => MetricWindowDataTestCase.java} | 18 +-
.../RecordPersistenceDataTestCase.java | 99 ----------
.../RecordPersistenceWindowDataTestCase.java | 46 +++++
...ase.java => RecordWindowDataTestCase.java} | 2 +-
.../worker/tools/MergeDataAggTools.java | 2 +-
.../worker/tools/MetricDataAggTools.java | 2 +-
.../TraceDagGetWithTimeSliceTestCase.java | 8 +-
...=> TraceDagWindowDataBuilderTestCase.java} | 2 +-
.../persistence/globaltrace_search.json | 3 +
.../persistence/globaltrace_segment.json | 185 ++++++++++++++++++
176 files changed, 2287 insertions(+), 2024 deletions(-)
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentAnalysis.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentCostAnalysis.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentExceptionAnalysis.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Data.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/FlushAndSwitch.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeAnalysisData.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricAnalysisData.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceData.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceTimer.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceWorkerListener.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordAnalysisData.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentData.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentPersistenceData.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Window.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/WindowData.java
delete mode 100644 skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMemberTestCase.java
delete mode 100644 skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/MergePersistenceDataTestCase.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/MergePersistenceWindowDataTestCase.java
rename skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/{MergeDataTestCase.java => MergeWindowDataTestCase.java} (77%)
delete mode 100644 skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/MetricPersistenceDataTestCase.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/MetricPersistenceWindowDataTestCase.java
rename skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/{MetricDataTestCase.java => MetricWindowDataTestCase.java} (76%)
delete mode 100644 skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/RecordPersistenceDataTestCase.java
create mode 100644 skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/RecordPersistenceWindowDataTestCase.java
rename skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/storage/{RecordDataTestCase.java => RecordWindowDataTestCase.java} (96%)
rename skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/tracedag/{TraceDagDataBuilderTestCase.java => TraceDagWindowDataBuilderTestCase.java} (98%)
create mode 100644 skywalking-collector/skywalking-collector-worker/src/test/resources/json/globaltrace/persistence/globaltrace_search.json
create mode 100644 skywalking-collector/skywalking-collector-worker/src/test/resources/json/globaltrace/persistence/globaltrace_segment.json
diff --git a/skywalking-collector/pom.xml b/skywalking-collector/pom.xml
index 79845cfe7..bf65dec4b 100644
--- a/skywalking-collector/pom.xml
+++ b/skywalking-collector/pom.xml
@@ -26,6 +26,11 @@
akka-cluster_2.11
${akka.version}
+
+ com.typesafe.akka
+ akka-slf4j_2.11
+ ${akka.version}
+
org.apache.logging.log4j
log4j-core
diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/AkkaSystem.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/AkkaSystem.java
index cbf4df4f2..0b62746e2 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/AkkaSystem.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/AkkaSystem.java
@@ -6,6 +6,7 @@ import com.a.eye.skywalking.collector.cluster.ClusterConfig;
import com.a.eye.skywalking.collector.cluster.Const;
import com.typesafe.config.Config;
import com.typesafe.config.ConfigFactory;
+import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -17,10 +18,12 @@ public enum AkkaSystem {
private Logger logger = LogManager.getFormatterLogger(AkkaSystem.class);
public ActorSystem create() {
+ Level logLevel = logger.getLevel();
+
final Config config = ConfigFactory.parseString("akka.remote.netty.tcp.HOSTNAME=" + ClusterConfig.Cluster.Current.HOSTNAME).
withFallback(ConfigFactory.parseString("akka.remote.netty.tcp.PORT=" + ClusterConfig.Cluster.Current.PORT)).
withFallback(ConfigFactory.parseString("akka.loggers=[\"akka.event.slf4j.Slf4jLogger\"]")).
- withFallback(ConfigFactory.parseString("akka.loglevel=\"ERROR\"")).
+ withFallback(ConfigFactory.parseString("akka.loglevel=\"" + logLevel.name() + "\"")).
withFallback(ConfigFactory.load("application.conf"));
if (!StringUtil.isEmpty(ClusterConfig.Cluster.SEED_NODES)) {
diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProvider.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProvider.java
index dfe72f348..945b06b54 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProvider.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorkerProvider.java
@@ -24,9 +24,6 @@ public abstract class AbstractWorkerProvider implement
final public WorkerRef create(
AbstractWorker workerOwner) throws IllegalArgumentException, ProviderNotFoundException {
- if (workerInstance(clusterContext) == null) {
- throw new IllegalArgumentException("cannot get worker instance with nothing obtained from workerInstance()");
- }
if (workerOwner == null) {
return onCreate(null);
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/AnalysisMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/AnalysisMember.java
index ef821a8cd..a5291819e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/AnalysisMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/AnalysisMember.java
@@ -2,6 +2,7 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.queue.EndOfBatchCommand;
+import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
/**
* @author pengys5
@@ -12,6 +13,8 @@ public abstract class AnalysisMember extends AbstractLocalAsyncWorker {
super(role, clusterContext, selfContext);
}
+ private int messageNum;
+
public abstract void analyse(Object message) throws Exception;
@Override
@@ -23,11 +26,17 @@ public abstract class AnalysisMember extends AbstractLocalAsyncWorker {
if (message instanceof EndOfBatchCommand) {
aggregation();
} else {
+ messageNum++;
try {
analyse(message);
} catch (Exception e) {
saveException(e);
}
+
+ if (messageNum >= CacheSizeConfig.Cache.Analysis.SIZE) {
+ aggregation();
+ messageNum = 0;
+ }
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java
index daaccf41e..5d5636194 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/CollectorBootStartUp.java
@@ -5,6 +5,7 @@ import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.worker.httpserver.HttpServer;
import com.a.eye.skywalking.collector.worker.storage.EsClient;
import com.a.eye.skywalking.collector.worker.storage.IndexCreator;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceTimer;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -20,6 +21,7 @@ public class CollectorBootStartUp {
collectorSystem.boot();
EsClient.INSTANCE.boot();
IndexCreator.INSTANCE.create();
+ PersistenceTimer.INSTANCE.boot();
HttpServer.INSTANCE.boot((ClusterWorkerContext)collectorSystem.getClusterContext());
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMember.java
index 9864a5e29..ca4e97a05 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMember.java
@@ -3,37 +3,39 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.Role;
-import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
-import com.a.eye.skywalking.collector.worker.storage.MergeData;
-import com.a.eye.skywalking.collector.worker.storage.MergePersistenceData;
+import com.a.eye.skywalking.collector.actor.WorkerRefs;
+import com.a.eye.skywalking.collector.worker.storage.MergeAnalysisData;
/**
* @author pengys5
*/
public abstract class MergeAnalysisMember extends AnalysisMember {
+ private MergeAnalysisData mergeAnalysisData;
- private MergePersistenceData persistenceData;
-
- protected MergeAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ public MergeAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
- persistenceData = new MergePersistenceData();
+ mergeAnalysisData = new MergeAnalysisData();
}
- private MergePersistenceData getPersistenceData() {
- return persistenceData;
+ private MergeAnalysisData getMergeAnalysisData() {
+ return mergeAnalysisData;
}
final protected void setMergeData(String id, String column, String value) throws Exception {
- getPersistenceData().getElseCreate(id).setMergeData(column, value);
- if (getPersistenceData().size() >= CacheSizeConfig.Cache.Analysis.SIZE) {
- aggregation();
- }
+ getMergeAnalysisData().getElseCreate(id).setMergeData(column, value);
}
- final public MergeData pushOne() {
- if (getPersistenceData().iterator().hasNext()) {
- return getPersistenceData().pushOne();
- }
- return null;
+ @Override
+ final protected void aggregation() throws Exception {
+ getMergeAnalysisData().asMap().forEach((key, value) -> {
+ try {
+ aggWorkRefs().tell(value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ });
+ getMergeAnalysisData().asMap().clear();
}
+
+ protected abstract WorkerRefs aggWorkRefs();
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergePersistenceMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergePersistenceMember.java
index f6d7ebf75..56e0268bf 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergePersistenceMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergePersistenceMember.java
@@ -3,93 +3,56 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.Role;
-import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
import com.a.eye.skywalking.collector.worker.storage.EsClient;
import com.a.eye.skywalking.collector.worker.storage.MergeData;
import com.a.eye.skywalking.collector.worker.storage.MergePersistenceData;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.elasticsearch.action.bulk.BulkRequestBuilder;
-import org.elasticsearch.action.bulk.BulkResponse;
-import org.elasticsearch.action.get.GetResponse;
-import org.elasticsearch.action.get.MultiGetItemResponse;
-import org.elasticsearch.action.get.MultiGetRequestBuilder;
-import org.elasticsearch.action.get.MultiGetResponse;
+import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.client.Client;
-import java.util.Iterator;
+import java.util.List;
import java.util.Map;
/**
* @author pengys5
*/
-public abstract class MergePersistenceMember extends PersistenceMember {
+public abstract class MergePersistenceMember extends PersistenceMember {
private Logger logger = LogManager.getFormatterLogger(MergePersistenceMember.class);
- private MergePersistenceData persistenceData;
-
protected MergePersistenceMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
- persistenceData = new MergePersistenceData();
}
- private MergePersistenceData getPersistenceData() {
- return persistenceData;
+ @Override
+ public MergePersistenceData initializeData() {
+ return new MergePersistenceData();
}
- @Override final public void analyse(Object message) throws Exception {
+ @Override
+ final public void analyse(Object message) throws Exception {
if (message instanceof MergeData) {
- MergeData mergeData = (MergeData)message;
- getPersistenceData().getElseCreate(mergeData.getId()).merge(mergeData);
- if (getPersistenceData().size() >= CacheSizeConfig.Cache.Persistence.SIZE) {
- persistence();
- }
+ MergeData mergeData = (MergeData) message;
+ MergePersistenceData data = getPersistenceData();
+ data.holdData();
+ data.getElseCreate(mergeData.getId()).merge(mergeData);
+ data.releaseData();
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must MergeData, but is %s", message.getClass().toString());
}
}
- final protected void persistence() {
- MultiGetResponse multiGetResponse = searchFromEs();
- for (MultiGetItemResponse itemResponse : multiGetResponse) {
- GetResponse response = itemResponse.getResponse();
- if (response != null && response.isExists()) {
- getPersistenceData().getElseCreate(response.getId()).merge(response.getSource());
- }
- }
+ @Override
+ final protected void prepareIndex(List builderList) {
+ Map lastData = getPersistenceData().getLast().asMap();
+ extractData(lastData);
- boolean success = saveToEs();
- if (success) {
- getPersistenceData().clear();
- }
- }
-
- private MultiGetResponse searchFromEs() {
Client client = EsClient.INSTANCE.getClient();
- MultiGetRequestBuilder multiGetRequestBuilder = client.prepareMultiGet();
-
- Iterator> iterator = getPersistenceData().iterator();
-
- while (iterator.hasNext()) {
- multiGetRequestBuilder.add(esIndex(), esType(), iterator.next().getKey());
- }
-
- return multiGetRequestBuilder.get();
- }
-
- private boolean saveToEs() {
- Client client = EsClient.INSTANCE.getClient();
- BulkRequestBuilder bulkRequest = client.prepareBulk();
- logger.debug("persistenceData SIZE: %s", getPersistenceData().size());
-
- Iterator> iterator = getPersistenceData().iterator();
- while (iterator.hasNext()) {
- MergeData mergeData = iterator.next().getValue();
- bulkRequest.add(client.prepareIndex(esIndex(), esType(), mergeData.getId()).setSource(mergeData.toMap()));
- }
-
- BulkResponse bulkResponse = bulkRequest.execute().actionGet();
- return !bulkResponse.hasFailures();
+ lastData.forEach((key, value) -> {
+ IndexRequestBuilder builder = client.prepareIndex(esIndex(), esType(), key).setSource(value.asMap());
+ builderList.add(builder);
+ });
+ lastData.clear();
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricAnalysisMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricAnalysisMember.java
index 4a63a5e68..9346f6a8d 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricAnalysisMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricAnalysisMember.java
@@ -3,32 +3,38 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.Role;
-import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
-import com.a.eye.skywalking.collector.worker.storage.MetricData;
-import com.a.eye.skywalking.collector.worker.storage.MetricPersistenceData;
+import com.a.eye.skywalking.collector.actor.WorkerRefs;
+import com.a.eye.skywalking.collector.worker.storage.MetricAnalysisData;
/**
* @author pengys5
*/
public abstract class MetricAnalysisMember extends AnalysisMember {
-
- private MetricPersistenceData persistenceData = new MetricPersistenceData();
+ private MetricAnalysisData metricAnalysisData = new MetricAnalysisData();
public MetricAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
final protected void setMetric(String id, String column, Long value) throws Exception {
- persistenceData.getElseCreate(id).setMetric(column, value);
- if (persistenceData.size() >= CacheSizeConfig.Cache.Persistence.SIZE) {
- aggregation();
- }
+ getMetricAnalysisData().getElseCreate(id).setMetric(column, value);
}
- final public MetricData pushOne() {
- if (persistenceData.iterator().hasNext()) {
- return persistenceData.pushOne();
- }
- return null;
+ private MetricAnalysisData getMetricAnalysisData() {
+ return metricAnalysisData;
}
+
+ @Override
+ final protected void aggregation() throws Exception {
+ getMetricAnalysisData().asMap().forEach((key, value) -> {
+ try {
+ aggWorkRefs().tell(value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ });
+ getMetricAnalysisData().asMap().clear();
+ }
+
+ protected abstract WorkerRefs aggWorkRefs();
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricPersistenceMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricPersistenceMember.java
index 2089848b9..f10e0091e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricPersistenceMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MetricPersistenceMember.java
@@ -3,89 +3,57 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.Role;
-import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
import com.a.eye.skywalking.collector.worker.storage.EsClient;
+import com.a.eye.skywalking.collector.worker.storage.MergeData;
import com.a.eye.skywalking.collector.worker.storage.MetricData;
import com.a.eye.skywalking.collector.worker.storage.MetricPersistenceData;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.elasticsearch.action.bulk.BulkRequestBuilder;
-import org.elasticsearch.action.bulk.BulkResponse;
-import org.elasticsearch.action.get.GetResponse;
-import org.elasticsearch.action.get.MultiGetItemResponse;
-import org.elasticsearch.action.get.MultiGetRequestBuilder;
-import org.elasticsearch.action.get.MultiGetResponse;
+import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.client.Client;
-import java.util.Iterator;
+import java.util.List;
import java.util.Map;
/**
* @author pengys5
*/
-public abstract class MetricPersistenceMember extends PersistenceMember {
+public abstract class MetricPersistenceMember extends PersistenceMember {
private Logger logger = LogManager.getFormatterLogger(MetricPersistenceMember.class);
- private MetricPersistenceData persistenceData = new MetricPersistenceData();
-
public MetricPersistenceMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
- @Override final public void analyse(Object message) throws Exception {
+ @Override
+ public MetricPersistenceData initializeData() {
+ return new MetricPersistenceData();
+ }
+
+ @Override
+ final public void analyse(Object message) throws Exception {
if (message instanceof MetricData) {
- MetricData metricData = (MetricData)message;
- persistenceData.getElseCreate(metricData.getId()).merge(metricData);
- if (persistenceData.size() >= CacheSizeConfig.Cache.Persistence.SIZE) {
- persistence();
- }
+ MetricData metricData = (MetricData) message;
+ MetricPersistenceData data = getPersistenceData();
+ data.holdData();
+ data.getElseCreate(metricData.getId()).merge(metricData);
+ data.releaseData();
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must MetricData, but is %s", message.getClass().toString());
}
}
- final protected void persistence() {
- MultiGetResponse multiGetResponse = searchFromEs();
- for (MultiGetItemResponse itemResponse : multiGetResponse) {
- GetResponse response = itemResponse.getResponse();
- if (response != null && response.isExists()) {
- persistenceData.getElseCreate(response.getId()).merge(response.getSource());
- }
- }
+ @Override
+ final protected void prepareIndex(List builderList) {
+ Map lastData = getPersistenceData().getLast().asMap();
+ extractData(lastData);
- boolean success = saveToEs();
- if (success) {
- persistenceData.clear();
- }
- }
-
- private MultiGetResponse searchFromEs() {
Client client = EsClient.INSTANCE.getClient();
- MultiGetRequestBuilder multiGetRequestBuilder = client.prepareMultiGet();
-
- Iterator> iterator = persistenceData.iterator();
-
- while (iterator.hasNext()) {
- multiGetRequestBuilder.add(esIndex(), esType(), iterator.next().getKey());
- }
-
- MultiGetResponse multiGetResponse = multiGetRequestBuilder.get();
- return multiGetResponse;
+ lastData.forEach((key, value) -> {
+ IndexRequestBuilder builder = client.prepareIndex(esIndex(), esType(), key).setSource(value.asMap());
+ builderList.add(builder);
+ });
+ lastData.clear();
}
-
- private boolean saveToEs() {
- Client client = EsClient.INSTANCE.getClient();
- BulkRequestBuilder bulkRequest = client.prepareBulk();
- logger.debug("persistenceData SIZE: %s", persistenceData.size());
-
- Iterator> iterator = persistenceData.iterator();
- while (iterator.hasNext()) {
- MetricData metricData = iterator.next().getValue();
- bulkRequest.add(client.prepareIndex(esIndex(), esType(), metricData.getId()).setSource(metricData.toMap()));
- }
-
- BulkResponse bulkResponse = bulkRequest.execute().actionGet();
- return !bulkResponse.hasFailures();
- }
-}
+}
\ No newline at end of file
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/PersistenceMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/PersistenceMember.java
index 4a2817819..ffe16ddab 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/PersistenceMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/PersistenceMember.java
@@ -1,19 +1,38 @@
package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.*;
-import com.a.eye.skywalking.collector.queue.EndOfBatchCommand;
+import com.a.eye.skywalking.collector.worker.storage.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
+import org.elasticsearch.action.get.GetResponse;
+import org.elasticsearch.action.get.MultiGetItemResponse;
+import org.elasticsearch.action.get.MultiGetRequestBuilder;
+import org.elasticsearch.action.get.MultiGetResponse;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.client.Client;
+
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
/**
* @author pengys5
*/
-public abstract class PersistenceMember extends AbstractLocalAsyncWorker {
+public abstract class PersistenceMember extends AbstractLocalSyncWorker {
private Logger logger = LogManager.getFormatterLogger(PersistenceMember.class);
public PersistenceMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
+ persistenceData = initializeData();
+ }
+
+ private T persistenceData;
+
+ public abstract T initializeData();
+
+ protected T getPersistenceData() {
+ return persistenceData;
}
public abstract String esIndex();
@@ -22,17 +41,76 @@ public abstract class PersistenceMember extends AbstractLocalAsyncWorker {
public abstract void analyse(Object message) throws Exception;
- @Override final public void preStart() throws ProviderNotFoundException {
+ @Override
+ final public void preStart() throws ProviderNotFoundException {
}
- @Override final protected void onWork(Object message) throws Exception {
- if (message instanceof EndOfBatchCommand) {
- persistence();
+ @Override
+ protected void onWork(Object request, Object response) throws Exception {
+ if (request instanceof FlushAndSwitch) {
+ persistenceData.switchPointer();
+ while (persistenceData.getLast().isHolding()) {
+ Thread.sleep(10);
+ }
+
+ if (response instanceof LinkedList) {
+ prepareIndex((LinkedList) response);
+ } else {
+ logger.error("unhandled response, response instance must LinkedList, but is %s", response.getClass().toString());
+ }
+
} else {
- analyse(message);
+ analyse(request);
}
}
- protected abstract void persistence();
+ private MultiGetResponse searchFromEs(Map dataMap) {
+ Client client = EsClient.INSTANCE.getClient();
+ MultiGetRequestBuilder multiGetRequestBuilder = client.prepareMultiGet();
+
+ HasDataFlag flag = new HasDataFlag();
+ dataMap.forEach((key, value) -> {
+ multiGetRequestBuilder.add(esIndex(), esType(), value.getId());
+ flag.doTagHasData();
+ });
+
+ if (flag.isHasData()) {
+ return multiGetRequestBuilder.get();
+ } else {
+ return null;
+ }
+ }
+
+ final void extractData(Map dataMap) {
+ MultiGetResponse multiGetResponse = searchFromEs(dataMap);
+ if (multiGetResponse != null) {
+ for (MultiGetItemResponse itemResponse : multiGetResponse) {
+ GetResponse response = itemResponse.getResponse();
+ if (response != null && response.isExists()) {
+ if (dataMap.containsKey(response.getId())) {
+ dataMap.get(response.getId()).merge(response.getSource());
+ }
+ }
+ }
+ }
+ }
+
+ protected abstract void prepareIndex(List builderList);
+
+ class HasDataFlag {
+ private boolean hasData;
+
+ HasDataFlag() {
+ hasData = false;
+ }
+
+ boolean isHasData() {
+ return hasData;
+ }
+
+ void doTagHasData() {
+ this.hasData = true;
+ }
+ }
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordAnalysisMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordAnalysisMember.java
index 1e52670dc..8e9045e43 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordAnalysisMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordAnalysisMember.java
@@ -3,9 +3,8 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.Role;
-import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
-import com.a.eye.skywalking.collector.worker.storage.RecordPersistenceData;
+import com.a.eye.skywalking.collector.actor.WorkerRefs;
+import com.a.eye.skywalking.collector.worker.storage.RecordAnalysisData;
import com.google.gson.JsonObject;
/**
@@ -13,23 +12,31 @@ import com.google.gson.JsonObject;
*/
public abstract class RecordAnalysisMember extends AnalysisMember {
- private RecordPersistenceData persistenceData = new RecordPersistenceData();
+ private RecordAnalysisData recordAnalysisData = new RecordAnalysisData();
public RecordAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
final public void setRecord(String id, JsonObject record) throws Exception {
- persistenceData.getElseCreate(id).setRecord(record);
- if (persistenceData.size() >= CacheSizeConfig.Cache.Analysis.SIZE) {
- aggregation();
- }
+ getRecordAnalysisData().getElseCreate(id).setRecord(record);
}
- final public RecordData pushOne() {
- if (persistenceData.hasNext()) {
- return persistenceData.pushOne();
- }
- return null;
+ private RecordAnalysisData getRecordAnalysisData() {
+ return recordAnalysisData;
}
+
+ @Override
+ final protected void aggregation() throws Exception {
+ getRecordAnalysisData().asMap().forEach((key, value) -> {
+ try {
+ aggWorkRefs().tell(value);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ });
+ getRecordAnalysisData().asMap().clear();
+ }
+
+ protected abstract WorkerRefs aggWorkRefs();
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordPersistenceMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordPersistenceMember.java
index 42a9195d2..9f6a3d007 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordPersistenceMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/RecordPersistenceMember.java
@@ -3,75 +3,59 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.Role;
-import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
import com.a.eye.skywalking.collector.worker.storage.EsClient;
+import com.a.eye.skywalking.collector.worker.storage.MetricData;
import com.a.eye.skywalking.collector.worker.storage.RecordData;
import com.a.eye.skywalking.collector.worker.storage.RecordPersistenceData;
+import com.google.gson.JsonObject;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.elasticsearch.action.bulk.BulkRequestBuilder;
-import org.elasticsearch.action.bulk.BulkResponse;
+import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.client.Client;
-import java.util.Iterator;
+import java.util.List;
import java.util.Map;
/**
* @author pengys5
*/
-public abstract class RecordPersistenceMember extends PersistenceMember {
+public abstract class RecordPersistenceMember extends PersistenceMember {
private Logger logger = LogManager.getFormatterLogger(RecordPersistenceMember.class);
- private RecordPersistenceData persistenceData;
-
public RecordPersistenceMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
- persistenceData = new RecordPersistenceData();
}
- private RecordPersistenceData getPersistenceData() {
- return this.persistenceData;
+ @Override
+ final public RecordPersistenceData initializeData() {
+ return new RecordPersistenceData();
}
@Override
public void analyse(Object message) throws Exception {
if (message instanceof RecordData) {
- RecordData recordData = (RecordData)message;
+ RecordData recordData = (RecordData) message;
logger.debug("setRecord: id: %s, data: %s", recordData.getId(), recordData.getRecord());
- getPersistenceData().getElseCreate(recordData.getId()).setRecord(recordData.getRecord());
- if (getPersistenceData().size() >= CacheSizeConfig.Cache.Persistence.SIZE) {
- persistence();
- }
+ RecordPersistenceData data = getPersistenceData();
+ data.holdData();
+ data.getElseCreate(recordData.getId()).setRecord(recordData.getRecord());
+ data.releaseData();
} else {
logger.error("message unhandled");
}
}
- protected void persistence() {
- boolean success = saveToEs();
- if (success) {
- getPersistenceData().clear();
- }
- }
+ @Override
+ final protected void prepareIndex(List builderList) {
+ Map lastData = getPersistenceData().getLast().asMap();
+ extractData(lastData);
- private boolean saveToEs() {
Client client = EsClient.INSTANCE.getClient();
- BulkRequestBuilder bulkRequest = client.prepareBulk();
- logger.debug("persistenceData SIZE: %s", getPersistenceData().size());
-
- Iterator> iterator = getPersistenceData().iterator();
-
- while (iterator.hasNext()) {
- Map.Entry recordData = iterator.next();
- logger.debug("saveToEs: key: %s, data: %s", recordData.getKey(), recordData.getValue().getRecord().toString());
- bulkRequest.add(client.prepareIndex(esIndex(), esType(), recordData.getKey()).setSource(recordData.getValue().getRecord().toString()));
- }
-
- BulkResponse bulkResponse = bulkRequest.execute().actionGet();
- if (bulkResponse.hasFailures()) {
- logger.error(bulkResponse.buildFailureMessage());
- }
- return !bulkResponse.hasFailures();
+ lastData.forEach((key, value) -> {
+ IndexRequestBuilder builder = client.prepareIndex(esIndex(), esType(), key).setSource(value.getRecord().toString());
+ builderList.add(builder);
+ });
+ lastData.clear();
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfig.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfig.java
index 69fb26ea0..5fc442615 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfig.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfig.java
@@ -7,11 +7,11 @@ public class CacheSizeConfig {
public static class Cache {
public static class Analysis {
- public static int SIZE = 1000;
+ public static int SIZE = 1024;
}
public static class Persistence {
- public static int SIZE = 1000;
+ public static int SIZE = 5000;
}
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/EsConfig.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/EsConfig.java
index d4dc24a5f..0c8c133fc 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/EsConfig.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/EsConfig.java
@@ -15,6 +15,12 @@ public class EsConfig {
}
}
+ public static class Persistence {
+ public static class Timer {
+ public static Integer VALUE = 3;
+ }
+ }
+
public static class Index {
public static class Initialize {
@@ -28,6 +34,40 @@ public class EsConfig {
public static class Replicas {
public static String NUMBER = "";
}
+
+ public static class RefreshInterval {
+ public static class GlobalTraceIndex {
+ public static Integer VALUE = 1;
+ }
+
+ public static class NodeCompIndex {
+ public static Integer VALUE = 1;
+ }
+
+ public static class NodeMappingIndex {
+ public static Integer VALUE = 1;
+ }
+
+ public static class NodeRefIndex {
+ public static Integer VALUE = 1;
+ }
+
+ public static class NodeRefResSumIndex {
+ public static Integer VALUE = 1;
+ }
+
+ public static class SegmentCostIndex {
+ public static Integer VALUE = 10;
+ }
+
+ public static class SegmentExceptionIndex {
+ public static Integer VALUE = 10;
+ }
+
+ public static class SegmentIndex {
+ public static Integer VALUE = 10;
+ }
+ }
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/WorkerConfig.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/WorkerConfig.java
index 004cdc63b..c0603a0d7 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/WorkerConfig.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/config/WorkerConfig.java
@@ -8,61 +8,57 @@ public class WorkerConfig {
public static class WorkerNum {
public static class Node {
public static class NodeCompAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeMappingDayAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeMappingHourAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeMappingMinuteAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
}
public static class NodeRef {
public static class NodeRefDayAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeRefHourAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeRefMinuteAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeRefResSumDayAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeRefResSumHourAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
public static class NodeRefResSumMinuteAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
}
public static class GlobalTrace {
public static class GlobalTraceAgg {
- public static int VALUE = 10;
+ public static int VALUE = 2;
}
}
}
public static class Queue {
public static class GlobalTrace {
- public static class GlobalTraceSave {
- public static int SIZE = 1024;
- }
-
public static class GlobalTraceAnalysis {
public static int SIZE = 1024;
}
@@ -70,19 +66,19 @@ public class WorkerConfig {
public static class Segment {
public static class SegmentPost {
+ public static int SIZE = 4096;
+ }
+
+ public static class SegmentAnalysis {
public static int SIZE = 1024;
}
- public static class SegmentCostSave {
- public static int SIZE = 1024;
+ public static class SegmentCostAnalysis {
+ public static int SIZE = 4096;
}
- public static class SegmentSave {
- public static int SIZE = 1024;
- }
-
- public static class SegmentExceptionSave {
- public static int SIZE = 1024;
+ public static class SegmentExceptionAnalysis {
+ public static int SIZE = 4096;
}
}
@@ -102,22 +98,6 @@ public class WorkerConfig {
public static class NodeMappingMinuteAnalysis {
public static int SIZE = 1024;
}
-
- public static class NodeCompSave {
- public static int SIZE = 1024;
- }
-
- public static class NodeMappingDaySave {
- public static int SIZE = 1024;
- }
-
- public static class NodeMappingHourSave {
- public static int SIZE = 1024;
- }
-
- public static class NodeMappingMinuteSave {
- public static int SIZE = 1024;
- }
}
public static class NodeRef {
@@ -133,30 +113,6 @@ public class WorkerConfig {
public static int SIZE = 1024;
}
- public static class NodeRefDaySave {
- public static int SIZE = 1024;
- }
-
- public static class NodeRefHourSave {
- public static int SIZE = 1024;
- }
-
- public static class NodeRefMinuteSave {
- public static int SIZE = 1024;
- }
-
- public static class NodeRefResSumDaySave {
- public static int SIZE = 1024;
- }
-
- public static class NodeRefResSumHourSave {
- public static int SIZE = 1024;
- }
-
- public static class NodeRefResSumMinuteSave {
- public static int SIZE = 1024;
- }
-
public static class NodeRefResSumDayAnalysis {
public static int SIZE = 1024;
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalId.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalId.java
index c3e07f21f..6bf9a5a7d 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalId.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalId.java
@@ -46,8 +46,6 @@ public class GlobalTraceGetWithGlobalId extends AbstractGet {
}
public static class Factory extends AbstractGetProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndex.java
index 37d3b95ad..f5d29446f 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.globaltrace;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -24,6 +25,11 @@ public class GlobalTraceIndex extends AbstractIndex {
return true;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.GlobalTraceIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysis.java
index e61ea9f11..8425c876d 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysis.java
@@ -1,8 +1,6 @@
package com.a.eye.skywalking.collector.worker.globaltrace.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.MergeAnalysisMember;
@@ -12,8 +10,9 @@ import com.a.eye.skywalking.collector.worker.globaltrace.persistence.GlobalTrace
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.GlobalTraceId;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.MergeData;
import com.a.eye.skywalking.collector.worker.tools.CollectionTools;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
import java.util.List;
@@ -22,6 +21,8 @@ import java.util.List;
*/
public class GlobalTraceAnalysis extends MergeAnalysisMember {
+ private Logger logger = LogManager.getFormatterLogger(GlobalTraceAnalysis.class);
+
GlobalTraceAnalysis(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -39,20 +40,22 @@ public class GlobalTraceAnalysis extends MergeAnalysisMember {
setMergeData(traceId, GlobalTraceIndex.SUB_SEG_IDS, subSegmentId);
}
}
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- MergeData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(GlobalTraceAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(GlobalTraceAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", GlobalTraceAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAgg.java
index d658e936f..2d374b9e3 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAgg.java
@@ -30,13 +30,11 @@ public class GlobalTraceAgg extends AbstractClusterWorker {
if (message instanceof MergeData) {
getSelfContext().lookup(GlobalTraceSave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must MergeData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSave.java
index 5691efbb0..954ff7ee5 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.globaltrace.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.MergePersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.globaltrace.GlobalTraceIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.globaltrace.GlobalTraceIndex;
public class GlobalTraceSave extends MergePersistenceMember {
GlobalTraceSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,22 +29,17 @@ public class GlobalTraceSave extends MergePersistenceMember {
return GlobalTraceIndex.TYPE_RECORD;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
}
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.GlobalTrace.GlobalTraceSave.SIZE;
- }
-
@Override
public GlobalTraceSave workerInstance(ClusterWorkerContext clusterContext) {
- return new GlobalTraceSave(role(), clusterContext, new LocalWorkerContext());
+ GlobalTraceSave worker = new GlobalTraceSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalId.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalId.java
index 9d3706027..1f685f287 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalId.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalId.java
@@ -28,7 +28,7 @@ public class GlobalTraceSearchWithGlobalId extends AbstractLocalSyncWorker {
private Gson gson = new Gson();
- GlobalTraceSearchWithGlobalId(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ public GlobalTraceSearchWithGlobalId(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -60,6 +60,8 @@ public class GlobalTraceSearchWithGlobalId extends AbstractLocalSyncWorker {
JsonObject responseObj = (JsonObject)response;
responseObj.addProperty("result", buildTree(spanViewList));
+ } else {
+ logger.error("unhandled message, message instance must String, but is %s", request.getClass().toString());
}
}
@@ -153,8 +155,6 @@ public class GlobalTraceSearchWithGlobalId extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeCompIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeCompIndex.java
index 69f795b4c..99ba5d3aa 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeCompIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeCompIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.node;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -25,25 +26,30 @@ public class NodeCompIndex extends AbstractIndex {
return false;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.NodeCompIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
- .startObject()
- .startObject("properties")
- .startObject(NAME)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(PEERS)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(AGG_COLUMN)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .endObject()
- .endObject();
+ .startObject()
+ .startObject("properties")
+ .startObject(NAME)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(PEERS)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(AGG_COLUMN)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .endObject()
+ .endObject();
return mappingBuilder;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeMappingIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeMappingIndex.java
index ea9a9c57b..32e901afe 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeMappingIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/NodeMappingIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.node;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -25,29 +26,34 @@ public class NodeMappingIndex extends AbstractIndex {
return false;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.NodeMappingIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
- .startObject()
- .startObject("properties")
- .startObject(CODE)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(PEERS)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(AGG_COLUMN)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(TIME_SLICE)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .endObject()
- .endObject();
+ .startObject()
+ .startObject("properties")
+ .startObject(CODE)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(PEERS)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(AGG_COLUMN)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(TIME_SLICE)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .endObject()
+ .endObject();
return mappingBuilder;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeCompAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeCompAnalysis.java
index 5ee173550..fb4e44c07 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeCompAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeCompAnalysis.java
@@ -28,7 +28,7 @@ abstract class AbstractNodeCompAnalysis extends RecordAnalysisMember {
super(role, clusterContext, selfContext);
}
- void analyseSpans(Segment segment) throws Exception {
+ final void analyseSpans(Segment segment) throws Exception {
List spanList = segment.getSpans();
logger.debug("node analysis span isNotEmpty %s", CollectionTools.isNotEmpty(spanList));
@@ -52,8 +52,6 @@ abstract class AbstractNodeCompAnalysis extends RecordAnalysisMember {
compJsonObj.addProperty(NodeCompIndex.NAME, Tags.COMPONENT.get(span));
setRecord(peers, compJsonObj);
- } else {
- logger.error("The span kind value is incorrect which segment record id is %s, the value must client or server", segment.getTraceSegmentId());
}
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeMappingAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeMappingAnalysis.java
index 86127d072..cc1cd117c 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeMappingAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/AbstractNodeMappingAnalysis.java
@@ -26,7 +26,7 @@ abstract class AbstractNodeMappingAnalysis extends RecordAnalysisMember {
super(role, clusterContext, selfContext);
}
- void analyseRefs(Segment segment, long timeSlice) throws Exception {
+ final void analyseRefs(Segment segment, long timeSlice) throws Exception {
List segmentRefList = segment.getRefs();
logger.debug("node mapping analysis refs isNotEmpty %s", CollectionTools.isNotEmpty(segmentRefList));
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeCompAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeCompAnalysis.java
index 5df3b4d7d..edffd90c8 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeCompAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeCompAnalysis.java
@@ -1,21 +1,22 @@
package com.a.eye.skywalking.collector.worker.node.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.persistence.NodeCompAgg;
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeCompAnalysis extends AbstractNodeCompAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeCompAnalysis.class);
+
NodeCompAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -27,20 +28,22 @@ public class NodeCompAnalysis extends AbstractNodeCompAnalysis {
SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice) message;
Segment segment = segmentWithTimeSlice.getSegment();
analyseSpans(segment);
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- RecordData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(NodeCompAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeCompAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeCompAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingDayAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingDayAnalysis.java
index 929e024de..c997a722a 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingDayAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingDayAnalysis.java
@@ -1,21 +1,22 @@
package com.a.eye.skywalking.collector.worker.node.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.persistence.NodeMappingDayAgg;
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeMappingDayAnalysis extends AbstractNodeMappingAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeMappingDayAnalysis.class);
+
public NodeMappingDayAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -27,20 +28,22 @@ public class NodeMappingDayAnalysis extends AbstractNodeMappingAnalysis {
SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice) message;
Segment segment = segmentWithTimeSlice.getSegment();
analyseRefs(segment, segmentWithTimeSlice.getDay());
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- RecordData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(NodeMappingDayAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeMappingDayAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeMappingDayAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingHourAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingHourAnalysis.java
index e61abc25d..176b7168e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingHourAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingHourAnalysis.java
@@ -1,21 +1,22 @@
package com.a.eye.skywalking.collector.worker.node.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.persistence.NodeMappingHourAgg;
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeMappingHourAnalysis extends AbstractNodeMappingAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeMappingHourAnalysis.class);
+
NodeMappingHourAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -27,20 +28,22 @@ public class NodeMappingHourAnalysis extends AbstractNodeMappingAnalysis {
SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice) message;
Segment segment = segmentWithTimeSlice.getSegment();
analyseRefs(segment, segmentWithTimeSlice.getHour());
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- RecordData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(NodeMappingHourAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeMappingHourAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeMappingHourAgg.Role.INSTANCE.roleName());
}
+ return null;
}
-
+
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingMinuteAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingMinuteAnalysis.java
index 8ee3f3422..c60b6834e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingMinuteAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/analysis/NodeMappingMinuteAnalysis.java
@@ -1,21 +1,22 @@
package com.a.eye.skywalking.collector.worker.node.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.persistence.NodeMappingMinuteAgg;
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeMappingMinuteAnalysis extends AbstractNodeMappingAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeMappingMinuteAnalysis.class);
+
NodeMappingMinuteAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -27,20 +28,22 @@ public class NodeMappingMinuteAnalysis extends AbstractNodeMappingAnalysis {
SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice) message;
Segment segment = segmentWithTimeSlice.getSegment();
analyseRefs(segment, segmentWithTimeSlice.getMinute());
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- RecordData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(NodeMappingMinuteAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeMappingMinuteAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeMappingMinuteAgg.Role.INSTANCE.roleName());
}
+ return null;
}
-
+
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompAgg.java
index 380616800..ea34b101e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompAgg.java
@@ -5,12 +5,16 @@ import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeCompAgg extends AbstractClusterWorker {
+ private Logger logger = LogManager.getFormatterLogger(NodeCompAgg.class);
+
NodeCompAgg(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -25,13 +29,12 @@ public class NodeCompAgg extends AbstractClusterWorker {
protected void onWork(Object message) throws Exception {
if (message instanceof RecordData) {
getSelfContext().lookup(NodeCompSave.Role.INSTANCE).tell(message);
- } else
- throw new IllegalArgumentException("message instance must RecordData");
+ } else {
+ logger.error("unhandled message, message instance must RecordData, but is %s", message.getClass().toString());
+ }
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompLoad.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompLoad.java
index 61fa08176..8c3819d4d 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompLoad.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompLoad.java
@@ -49,8 +49,6 @@ public class NodeCompLoad extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompSave.java
index a048af4d3..fd6b6fb54 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeCompSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.node.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.NodeCompIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.node.NodeCompIndex;
public class NodeCompSave extends RecordPersistenceMember {
NodeCompSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,9 +29,7 @@ public class NodeCompSave extends RecordPersistenceMember {
return NodeCompIndex.TYPE_RECORD;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -39,12 +37,9 @@ public class NodeCompSave extends RecordPersistenceMember {
@Override
public NodeCompSave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeCompSave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.Node.NodeCompSave.SIZE;
+ NodeCompSave worker = new NodeCompSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDayAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDayAgg.java
index 61c2ec2a2..9e4e74ff1 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDayAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDayAgg.java
@@ -5,12 +5,16 @@ import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeMappingDayAgg extends AbstractClusterWorker {
+ private Logger logger = LogManager.getFormatterLogger(NodeMappingDayAgg.class);
+
NodeMappingDayAgg(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -26,13 +30,11 @@ public class NodeMappingDayAgg extends AbstractClusterWorker {
if (message instanceof RecordData) {
getSelfContext().lookup(NodeMappingDaySave.Role.INSTANCE).tell(message);
} else {
- throw new IllegalArgumentException("message instance must RecordData");
+ logger.error("unhandled message, message instance must RecordData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDaySave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDaySave.java
index 7cf9e34c7..6c06bfda9 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDaySave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingDaySave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.node.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.NodeMappingIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.node.NodeMappingIndex;
public class NodeMappingDaySave extends RecordPersistenceMember {
NodeMappingDaySave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,9 +29,7 @@ public class NodeMappingDaySave extends RecordPersistenceMember {
return NodeMappingIndex.TYPE_DAY;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -39,12 +37,9 @@ public class NodeMappingDaySave extends RecordPersistenceMember {
@Override
public NodeMappingDaySave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeMappingDaySave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.Node.NodeMappingDaySave.SIZE;
+ NodeMappingDaySave worker = new NodeMappingDaySave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourAgg.java
index 4f0cb3c1d..ec87db500 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourAgg.java
@@ -5,12 +5,16 @@ import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeMappingHourAgg extends AbstractClusterWorker {
+ private Logger logger = LogManager.getFormatterLogger(NodeMappingHourAgg.class);
+
NodeMappingHourAgg(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -26,13 +30,11 @@ public class NodeMappingHourAgg extends AbstractClusterWorker {
if (message instanceof RecordData) {
getSelfContext().lookup(NodeMappingHourSave.Role.INSTANCE).tell(message);
} else {
- throw new IllegalArgumentException("message instance must RecordData");
+ logger.error("unhandled message, message instance must RecordData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourSave.java
index e5c99539c..5dfbdc3ce 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingHourSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.node.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.NodeMappingIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.node.NodeMappingIndex;
public class NodeMappingHourSave extends RecordPersistenceMember {
NodeMappingHourSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,9 +29,7 @@ public class NodeMappingHourSave extends RecordPersistenceMember {
return NodeMappingIndex.TYPE_HOUR;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -39,12 +37,9 @@ public class NodeMappingHourSave extends RecordPersistenceMember {
@Override
public NodeMappingHourSave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeMappingHourSave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.Node.NodeMappingHourSave.SIZE;
+ NodeMappingHourSave worker = new NodeMappingHourSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteAgg.java
index 99fff3db2..422ba5c1c 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteAgg.java
@@ -5,12 +5,16 @@ import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeMappingMinuteAgg extends AbstractClusterWorker {
+ private Logger logger = LogManager.getFormatterLogger(NodeMappingMinuteAgg.class);
+
NodeMappingMinuteAgg(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -26,13 +30,11 @@ public class NodeMappingMinuteAgg extends AbstractClusterWorker {
if (message instanceof RecordData) {
getSelfContext().lookup(NodeMappingMinuteSave.Role.INSTANCE).tell(message);
} else {
- throw new IllegalArgumentException("message instance must RecordData");
+ logger.error("unhandled message, message instance must RecordData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteSave.java
index 6b75aeeed..ca55a8d35 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingMinuteSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.node.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.node.NodeMappingIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.node.NodeMappingIndex;
public class NodeMappingMinuteSave extends RecordPersistenceMember {
NodeMappingMinuteSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,9 +29,7 @@ public class NodeMappingMinuteSave extends RecordPersistenceMember {
return NodeMappingIndex.TYPE_MINUTE;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -39,12 +37,9 @@ public class NodeMappingMinuteSave extends RecordPersistenceMember {
@Override
public NodeMappingMinuteSave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeMappingMinuteSave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.Node.NodeMappingMinuteSave.SIZE;
+ NodeMappingMinuteSave worker = new NodeMappingMinuteSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingSearchWithTimeSlice.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingSearchWithTimeSlice.java
index e36b8ca7e..5103a7234 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingSearchWithTimeSlice.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/node/persistence/NodeMappingSearchWithTimeSlice.java
@@ -62,7 +62,7 @@ public class NodeMappingSearchWithTimeSlice extends AbstractLocalSyncWorker {
JsonObject resJsonObj = (JsonObject)response;
resJsonObj.add(Const.RESULT, nodeMappingArray);
} else {
- throw new IllegalArgumentException("message instance must be RequestEntity");
+ logger.error("unhandled message, message instance must NodeMappingSearchWithTimeSlice.RequestEntity, but is %s", request.getClass().toString());
}
}
@@ -73,8 +73,6 @@ public class NodeMappingSearchWithTimeSlice extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefIndex.java
index 59066a16d..daba5128e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.noderef;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -26,37 +27,42 @@ public class NodeRefIndex extends AbstractIndex {
return false;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.NodeRefIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
- .startObject()
- .startObject("properties")
- .startObject(FRONT)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(FRONT_IS_REAL_CODE)
- .field("type", "boolean")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(BEHIND)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(BEHIND_IS_REAL_CODE)
- .field("type", "boolean")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(AGG_COLUMN)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(TIME_SLICE)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .endObject()
- .endObject();
+ .startObject()
+ .startObject("properties")
+ .startObject(FRONT)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(FRONT_IS_REAL_CODE)
+ .field("type", "boolean")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(BEHIND)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(BEHIND_IS_REAL_CODE)
+ .field("type", "boolean")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(AGG_COLUMN)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(TIME_SLICE)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .endObject()
+ .endObject();
return mappingBuilder;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumGetGroupWithTimeSlice.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumGetGroupWithTimeSlice.java
index 957748bea..9cb7940fa 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumGetGroupWithTimeSlice.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumGetGroupWithTimeSlice.java
@@ -61,8 +61,6 @@ public class NodeRefResSumGetGroupWithTimeSlice extends AbstractGet {
}
public static class Factory extends AbstractGetProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumIndex.java
index a1b47c453..87118b443 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/NodeRefResSumIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.noderef;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -28,45 +29,50 @@ public class NodeRefResSumIndex extends AbstractIndex {
return false;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.NodeRefResSumIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
- .startObject()
- .startObject("properties")
- .startObject(ONE_SECOND_LESS)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(THREE_SECOND_LESS)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(FIVE_SECOND_LESS)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(FIVE_SECOND_GREATER)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(ERROR)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(SUMMARY)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(AGG_COLUMN)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(TIME_SLICE)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .endObject()
- .endObject();
+ .startObject()
+ .startObject("properties")
+ .startObject(ONE_SECOND_LESS)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(THREE_SECOND_LESS)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(FIVE_SECOND_LESS)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(FIVE_SECOND_GREATER)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(ERROR)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(SUMMARY)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(AGG_COLUMN)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(TIME_SLICE)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .endObject()
+ .endObject();
return mappingBuilder;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefDayAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefDayAnalysis.java
index 1afacb8a9..1107a0db5 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefDayAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefDayAnalysis.java
@@ -1,22 +1,22 @@
package com.a.eye.skywalking.collector.worker.noderef.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
-import com.a.eye.skywalking.collector.actor.ProviderNotFoundException;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.persistence.NodeRefDayAgg;
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeRefDayAnalysis extends AbstractNodeRefAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeRefDayAnalysis.class);
+
protected NodeRefDayAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -39,6 +39,8 @@ public class NodeRefDayAnalysis extends AbstractNodeRefAnalysis {
long day = segmentWithTimeSlice.getDay();
int second = segmentWithTimeSlice.getSecond();
analyseNodeRef(segment, segmentWithTimeSlice.getDay(), minute, hour, day, second);
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@@ -48,17 +50,16 @@ public class NodeRefDayAnalysis extends AbstractNodeRefAnalysis {
}
@Override
- protected void aggregation() throws Exception {
- RecordData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(NodeRefDayAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeRefDayAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeRefDayAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
-
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefHourAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefHourAnalysis.java
index 1a0f3b987..a39bc8658 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefHourAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefHourAnalysis.java
@@ -1,22 +1,22 @@
package com.a.eye.skywalking.collector.worker.noderef.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
-import com.a.eye.skywalking.collector.actor.ProviderNotFoundException;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.persistence.NodeRefHourAgg;
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeRefHourAnalysis extends AbstractNodeRefAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeRefHourAnalysis.class);
+
protected NodeRefHourAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -39,6 +39,8 @@ public class NodeRefHourAnalysis extends AbstractNodeRefAnalysis {
long day = segmentWithTimeSlice.getDay();
int second = segmentWithTimeSlice.getSecond();
analyseNodeRef(segment, segmentWithTimeSlice.getHour(), minute, hour, day, second);
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@@ -48,17 +50,16 @@ public class NodeRefHourAnalysis extends AbstractNodeRefAnalysis {
}
@Override
- protected void aggregation() throws Exception {
- RecordData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(NodeRefHourAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeRefHourAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeRefHourAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
-
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefMinuteAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefMinuteAnalysis.java
index 41257ea78..58943b1c0 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefMinuteAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefMinuteAnalysis.java
@@ -1,22 +1,22 @@
package com.a.eye.skywalking.collector.worker.noderef.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
-import com.a.eye.skywalking.collector.actor.ProviderNotFoundException;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.persistence.NodeRefMinuteAgg;
import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeRefMinuteAnalysis extends AbstractNodeRefAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeRefMinuteAnalysis.class);
+
protected NodeRefMinuteAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -38,6 +38,8 @@ public class NodeRefMinuteAnalysis extends AbstractNodeRefAnalysis {
long day = segmentWithTimeSlice.getDay();
int second = segmentWithTimeSlice.getSecond();
analyseNodeRef(segment, segmentWithTimeSlice.getMinute(), minute, hour, day, second);
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
}
}
@@ -47,17 +49,16 @@ public class NodeRefMinuteAnalysis extends AbstractNodeRefAnalysis {
}
@Override
- protected void aggregation() throws Exception {
- RecordData oneRecord;
- while ((oneRecord = pushOne()) != null) {
- getClusterContext().lookup(NodeRefMinuteAgg.Role.INSTANCE).tell(oneRecord);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeRefMinuteAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeRefMinuteAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
-
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumDayAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumDayAnalysis.java
index bf049b247..8aaea755e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumDayAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumDayAnalysis.java
@@ -1,43 +1,46 @@
package com.a.eye.skywalking.collector.worker.noderef.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.persistence.NodeRefResSumDayAgg;
-import com.a.eye.skywalking.collector.worker.storage.MetricData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeRefResSumDayAnalysis extends AbstractNodeRefResSumAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeRefResSumDayAnalysis.class);
+
NodeRefResSumDayAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@Override
public void analyse(Object message) throws Exception {
if (message instanceof NodeRefResRecord) {
- NodeRefResRecord refResRecord = (NodeRefResRecord)message;
+ NodeRefResRecord refResRecord = (NodeRefResRecord) message;
analyseResSum(refResRecord);
+ } else {
+ logger.error("unhandled message, message instance must NodeRefResRecord, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- MetricData oneMetric;
- while ((oneMetric = pushOne()) != null) {
- getClusterContext().lookup(NodeRefResSumDayAgg.Role.INSTANCE).tell(oneMetric);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeRefResSumDayAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeRefResSumDayAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumHourAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumHourAnalysis.java
index b2341832e..d2442a787 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumHourAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumHourAnalysis.java
@@ -1,43 +1,46 @@
package com.a.eye.skywalking.collector.worker.noderef.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.persistence.NodeRefResSumHourAgg;
-import com.a.eye.skywalking.collector.worker.storage.MetricData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeRefResSumHourAnalysis extends AbstractNodeRefResSumAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeRefResSumHourAnalysis.class);
+
NodeRefResSumHourAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@Override
public void analyse(Object message) throws Exception {
if (message instanceof NodeRefResRecord) {
- NodeRefResRecord refResRecord = (NodeRefResRecord)message;
+ NodeRefResRecord refResRecord = (NodeRefResRecord) message;
analyseResSum(refResRecord);
+ } else {
+ logger.error("unhandled message, message instance must NodeRefResRecord, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- MetricData oneMetric;
- while ((oneMetric = pushOne()) != null) {
- getClusterContext().lookup(NodeRefResSumHourAgg.Role.INSTANCE).tell(oneMetric);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeRefResSumHourAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeRefResSumHourAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumMinuteAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumMinuteAnalysis.java
index 810827bad..c88062c8f 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumMinuteAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/NodeRefResSumMinuteAnalysis.java
@@ -1,43 +1,46 @@
package com.a.eye.skywalking.collector.worker.noderef.analysis;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.*;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.persistence.NodeRefResSumMinuteAgg;
-import com.a.eye.skywalking.collector.worker.storage.MetricData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public class NodeRefResSumMinuteAnalysis extends AbstractNodeRefResSumAnalysis {
+ private Logger logger = LogManager.getFormatterLogger(NodeRefResSumMinuteAnalysis.class);
+
NodeRefResSumMinuteAnalysis(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@Override
public void analyse(Object message) throws Exception {
if (message instanceof NodeRefResRecord) {
- NodeRefResRecord refResRecord = (NodeRefResRecord)message;
+ NodeRefResRecord refResRecord = (NodeRefResRecord) message;
analyseResSum(refResRecord);
+ } else {
+ logger.error("unhandled message, message instance must NodeRefResRecord, but is %s", message.getClass().toString());
}
}
@Override
- protected void aggregation() throws Exception {
- MetricData oneMetric;
- while ((oneMetric = pushOne()) != null) {
- getClusterContext().lookup(NodeRefResSumMinuteAgg.Role.INSTANCE).tell(oneMetric);
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getClusterContext().lookup(NodeRefResSumMinuteAgg.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", NodeRefResSumMinuteAgg.Role.INSTANCE.roleName());
}
+ return null;
}
public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDayAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDayAgg.java
index da585f7c6..c9ad8c629 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDayAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDayAgg.java
@@ -30,13 +30,11 @@ public class NodeRefDayAgg extends AbstractClusterWorker {
if (message instanceof RecordData) {
getSelfContext().lookup(NodeRefDaySave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must RecordData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDaySave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDaySave.java
index b2dac0dc2..ac4708397 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDaySave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefDaySave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.noderef.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.NodeRefIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.noderef.NodeRefIndex;
public class NodeRefDaySave extends RecordPersistenceMember {
NodeRefDaySave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,10 +29,7 @@ public class NodeRefDaySave extends RecordPersistenceMember {
return NodeRefIndex.TYPE_DAY;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
-
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -40,12 +37,9 @@ public class NodeRefDaySave extends RecordPersistenceMember {
@Override
public NodeRefDaySave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeRefDaySave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.NodeRef.NodeRefDaySave.SIZE;
+ NodeRefDaySave worker = new NodeRefDaySave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourAgg.java
index edda63862..a56741239 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourAgg.java
@@ -30,13 +30,11 @@ public class NodeRefHourAgg extends AbstractClusterWorker {
if (message instanceof RecordData) {
getSelfContext().lookup(NodeRefHourSave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must RecordData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourSave.java
index 8b237e1c5..736a473d2 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefHourSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.noderef.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.NodeRefIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.noderef.NodeRefIndex;
public class NodeRefHourSave extends RecordPersistenceMember {
NodeRefHourSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,10 +29,7 @@ public class NodeRefHourSave extends RecordPersistenceMember {
return NodeRefIndex.TYPE_HOUR;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
-
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -40,12 +37,9 @@ public class NodeRefHourSave extends RecordPersistenceMember {
@Override
public NodeRefHourSave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeRefHourSave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.NodeRef.NodeRefHourSave.SIZE;
+ NodeRefHourSave worker = new NodeRefHourSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteAgg.java
index fe4db00d1..2070ebfe3 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteAgg.java
@@ -30,13 +30,11 @@ public class NodeRefMinuteAgg extends AbstractClusterWorker {
if (message instanceof RecordData) {
getSelfContext().lookup(NodeRefMinuteSave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must RecordData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteSave.java
index f1fcba2d0..3c04054b2 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefMinuteSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.noderef.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.NodeRefIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.noderef.NodeRefIndex;
public class NodeRefMinuteSave extends RecordPersistenceMember {
NodeRefMinuteSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,10 +29,7 @@ public class NodeRefMinuteSave extends RecordPersistenceMember {
return NodeRefIndex.TYPE_MINUTE;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
-
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -40,12 +37,9 @@ public class NodeRefMinuteSave extends RecordPersistenceMember {
@Override
public NodeRefMinuteSave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeRefMinuteSave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.NodeRef.NodeRefMinuteSave.SIZE;
+ NodeRefMinuteSave worker = new NodeRefMinuteSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDayAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDayAgg.java
index 2147ab5bd..ec76fb793 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDayAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDayAgg.java
@@ -30,13 +30,11 @@ public class NodeRefResSumDayAgg extends AbstractClusterWorker {
if (message instanceof MetricData) {
getSelfContext().lookup(NodeRefResSumDaySave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must MetricData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDaySave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDaySave.java
index f39a33a64..074b41d2c 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDaySave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumDaySave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.noderef.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.MetricPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.NodeRefResSumIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.noderef.NodeRefResSumIndex;
public class NodeRefResSumDaySave extends MetricPersistenceMember {
NodeRefResSumDaySave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,9 +29,7 @@ public class NodeRefResSumDaySave extends MetricPersistenceMember {
return NodeRefResSumIndex.TYPE_DAY;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -39,12 +37,9 @@ public class NodeRefResSumDaySave extends MetricPersistenceMember {
@Override
public NodeRefResSumDaySave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeRefResSumDaySave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.NodeRef.NodeRefResSumDaySave.SIZE;
+ NodeRefResSumDaySave worker = new NodeRefResSumDaySave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumGroupWithTimeSlice.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumGroupWithTimeSlice.java
index c62eaad19..defc8261d 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumGroupWithTimeSlice.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumGroupWithTimeSlice.java
@@ -80,7 +80,7 @@ public class NodeRefResSumGroupWithTimeSlice extends AbstractLocalSyncWorker {
JsonObject resJsonObj = (JsonObject)response;
resJsonObj.add("result", nodeRefResSumArray);
} else {
- throw new IllegalArgumentException("message instance must be RequestEntity");
+ logger.error("unhandled message, message instance must NodeRefResSumGroupWithTimeSlice.RequestEntity, but is %s", request.getClass().toString());
}
}
@@ -91,8 +91,6 @@ public class NodeRefResSumGroupWithTimeSlice extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourAgg.java
index 4ec8b6dab..8799b42c6 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourAgg.java
@@ -30,13 +30,11 @@ public class NodeRefResSumHourAgg extends AbstractClusterWorker {
if (message instanceof MetricData) {
getSelfContext().lookup(NodeRefResSumHourSave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must MetricData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourSave.java
index f4e58efe2..776a511eb 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumHourSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.noderef.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.MetricPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.NodeRefResSumIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.noderef.NodeRefResSumIndex;
public class NodeRefResSumHourSave extends MetricPersistenceMember {
NodeRefResSumHourSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,9 +29,7 @@ public class NodeRefResSumHourSave extends MetricPersistenceMember {
return NodeRefResSumIndex.TYPE_HOUR;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -39,12 +37,9 @@ public class NodeRefResSumHourSave extends MetricPersistenceMember {
@Override
public NodeRefResSumHourSave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeRefResSumHourSave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.NodeRef.NodeRefResSumHourSave.SIZE;
+ NodeRefResSumHourSave worker = new NodeRefResSumHourSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteAgg.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteAgg.java
index 6b0b94816..244edb5b9 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteAgg.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteAgg.java
@@ -30,13 +30,11 @@ public class NodeRefResSumMinuteAgg extends AbstractClusterWorker {
if (message instanceof MetricData) {
getSelfContext().lookup(NodeRefResSumMinuteSave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must MetricData, but is %s", message.getClass().toString());
}
}
public static class Factory extends AbstractClusterWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return Role.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteSave.java
index 0cead785c..040b20c9b 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumMinuteSave.java
@@ -1,13 +1,13 @@
package com.a.eye.skywalking.collector.worker.noderef.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.MetricPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.noderef.NodeRefResSumIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
@@ -15,7 +15,7 @@ import com.a.eye.skywalking.collector.worker.noderef.NodeRefResSumIndex;
public class NodeRefResSumMinuteSave extends MetricPersistenceMember {
NodeRefResSumMinuteSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -29,9 +29,7 @@ public class NodeRefResSumMinuteSave extends MetricPersistenceMember {
return NodeRefResSumIndex.TYPE_MINUTE;
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
@@ -39,12 +37,9 @@ public class NodeRefResSumMinuteSave extends MetricPersistenceMember {
@Override
public NodeRefResSumMinuteSave workerInstance(ClusterWorkerContext clusterContext) {
- return new NodeRefResSumMinuteSave(role(), clusterContext, new LocalWorkerContext());
- }
-
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.NodeRef.NodeRefResSumMinuteSave.SIZE;
+ NodeRefResSumMinuteSave worker = new NodeRefResSumMinuteSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumSearchWithTimeSlice.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumSearchWithTimeSlice.java
index 0fa7c19fe..c26b9a505 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumSearchWithTimeSlice.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefResSumSearchWithTimeSlice.java
@@ -91,7 +91,7 @@ public class NodeRefResSumSearchWithTimeSlice extends AbstractLocalSyncWorker {
JsonObject resJsonObj = (JsonObject)response;
resJsonObj.add("result", nodeRefResSumArray);
} else {
- throw new IllegalArgumentException("message instance must be RequestEntity");
+ logger.error("unhandled message, message instance must NodeRefResSumSearchWithTimeSlice.RequestEntity, but is %s", request.getClass().toString());
}
}
@@ -102,8 +102,6 @@ public class NodeRefResSumSearchWithTimeSlice extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefSearchWithTimeSlice.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefSearchWithTimeSlice.java
index c6f272853..f1027c65f 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefSearchWithTimeSlice.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/persistence/NodeRefSearchWithTimeSlice.java
@@ -63,7 +63,7 @@ public class NodeRefSearchWithTimeSlice extends AbstractLocalSyncWorker {
JsonObject resJsonObj = (JsonObject)response;
resJsonObj.add("result", nodeRefArray);
} else {
- throw new IllegalArgumentException("message instance must be RequestEntity");
+ logger.error("unhandled message, message instance must NodeRefSearchWithTimeSlice.RequestEntity, but is %s", request.getClass().toString());
}
}
@@ -74,8 +74,6 @@ public class NodeRefSearchWithTimeSlice extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentCostIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentCostIndex.java
index a8e74ef0e..833d46af5 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentCostIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentCostIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.segment;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -28,32 +29,37 @@ public class SegmentCostIndex extends AbstractIndex {
return true;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.SegmentCostIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
return XContentFactory.jsonBuilder()
- .startObject()
- .startObject("properties")
- .startObject(SEG_ID)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(START_TIME)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(END_TIME)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(OPERATION_NAME)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(COST)
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .endObject()
- .endObject();
+ .startObject()
+ .startObject("properties")
+ .startObject(SEG_ID)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(START_TIME)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(END_TIME)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(OPERATION_NAME)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(COST)
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .endObject()
+ .endObject();
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentExceptionIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentExceptionIndex.java
index 65efbd7bf..575060dfa 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentExceptionIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentExceptionIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.segment;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -25,25 +26,30 @@ public class SegmentExceptionIndex extends AbstractIndex {
return true;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.SegmentExceptionIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
XContentBuilder mappingBuilder = XContentFactory.jsonBuilder()
- .startObject()
- .startObject("properties")
- .startObject(SEG_ID)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(IS_ERROR)
- .field("type", "boolean")
- .field("index", "not_analyzed")
- .endObject()
- .startObject(ERROR_KIND)
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .endObject()
- .endObject();
+ .startObject()
+ .startObject("properties")
+ .startObject(SEG_ID)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(IS_ERROR)
+ .field("type", "boolean")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(ERROR_KIND)
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .endObject()
+ .endObject();
return mappingBuilder;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentIndex.java
index 83cb3fd22..951d5b2ee 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentIndex.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.segment;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
import org.elasticsearch.common.xcontent.XContentBuilder;
import org.elasticsearch.common.xcontent.XContentFactory;
@@ -23,40 +24,45 @@ public class SegmentIndex extends AbstractIndex {
return true;
}
+ @Override
+ public int refreshInterval() {
+ return EsConfig.Es.Index.RefreshInterval.SegmentIndex.VALUE;
+ }
+
@Override
public XContentBuilder createMappingBuilder() throws IOException {
return XContentFactory.jsonBuilder()
- .startObject()
- .startObject("properties")
- .startObject("traceSegmentId")
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject("startTime")
- .field("type", "date")
- .field("index", "not_analyzed")
- .endObject()
- .startObject("endTime")
- .field("type", "date")
- .field("index", "not_analyzed")
- .endObject()
- .startObject("applicationCode")
- .field("type", "string")
- .field("index", "not_analyzed")
- .endObject()
- .startObject("minute")
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject("hour")
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .startObject("day")
- .field("type", "long")
- .field("index", "not_analyzed")
- .endObject()
- .endObject()
- .endObject();
+ .startObject()
+ .startObject("properties")
+ .startObject("traceSegmentId")
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject("startTime")
+ .field("type", "date")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject("endTime")
+ .field("type", "date")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject("applicationCode")
+ .field("type", "string")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject("minute")
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject("hour")
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject("day")
+ .field("type", "long")
+ .field("index", "not_analyzed")
+ .endObject()
+ .endObject()
+ .endObject();
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentPost.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentPost.java
index 4e950d5de..3802bc421 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentPost.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentPost.java
@@ -18,10 +18,10 @@ import com.a.eye.skywalking.collector.worker.node.analysis.NodeMappingMinuteAnal
import com.a.eye.skywalking.collector.worker.noderef.analysis.NodeRefDayAnalysis;
import com.a.eye.skywalking.collector.worker.noderef.analysis.NodeRefHourAnalysis;
import com.a.eye.skywalking.collector.worker.noderef.analysis.NodeRefMinuteAnalysis;
+import com.a.eye.skywalking.collector.worker.segment.analysis.SegmentAnalysis;
+import com.a.eye.skywalking.collector.worker.segment.analysis.SegmentCostAnalysis;
+import com.a.eye.skywalking.collector.worker.segment.analysis.SegmentExceptionAnalysis;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.segment.persistence.SegmentCostSave;
-import com.a.eye.skywalking.collector.worker.segment.persistence.SegmentExceptionSave;
-import com.a.eye.skywalking.collector.worker.segment.persistence.SegmentSave;
import com.a.eye.skywalking.collector.worker.storage.AbstractTimeSlice;
import com.a.eye.skywalking.collector.worker.tools.DateTools;
import org.apache.logging.log4j.LogManager;
@@ -41,16 +41,16 @@ public class SegmentPost extends AbstractPost {
public void preStart() throws ProviderNotFoundException {
getClusterContext().findProvider(GlobalTraceAnalysis.Role.INSTANCE).create(this);
- getClusterContext().findProvider(NodeCompAnalysis.Role.INSTANCE).create(this);
-
- getClusterContext().findProvider(SegmentSave.Role.INSTANCE).create(this);
- getClusterContext().findProvider(SegmentCostSave.Role.INSTANCE).create(this);
- getClusterContext().findProvider(SegmentExceptionSave.Role.INSTANCE).create(this);
+ getClusterContext().findProvider(SegmentAnalysis.Role.INSTANCE).create(this);
+ getClusterContext().findProvider(SegmentCostAnalysis.Role.INSTANCE).create(this);
+ getClusterContext().findProvider(SegmentExceptionAnalysis.Role.INSTANCE).create(this);
getClusterContext().findProvider(NodeRefMinuteAnalysis.Role.INSTANCE).create(this);
getClusterContext().findProvider(NodeRefHourAnalysis.Role.INSTANCE).create(this);
getClusterContext().findProvider(NodeRefDayAnalysis.Role.INSTANCE).create(this);
+ getClusterContext().findProvider(NodeCompAnalysis.Role.INSTANCE).create(this);
+
getClusterContext().findProvider(NodeMappingDayAnalysis.Role.INSTANCE).create(this);
getClusterContext().findProvider(NodeMappingHourAnalysis.Role.INSTANCE).create(this);
getClusterContext().findProvider(NodeMappingMinuteAnalysis.Role.INSTANCE).create(this);
@@ -75,11 +75,11 @@ public class SegmentPost extends AbstractPost {
logger.debug("minuteSlice: %s, hourSlice: %s, daySlice: %s, second:%s", minuteSlice, hourSlice, daySlice, second);
SegmentWithTimeSlice segmentWithTimeSlice = new SegmentWithTimeSlice(segment, minuteSlice, hourSlice, daySlice, second);
- getSelfContext().lookup(SegmentSave.Role.INSTANCE).tell(segment);
+ getSelfContext().lookup(SegmentAnalysis.Role.INSTANCE).tell(segment);
- getSelfContext().lookup(SegmentCostSave.Role.INSTANCE).tell(segmentWithTimeSlice);
+ getSelfContext().lookup(SegmentCostAnalysis.Role.INSTANCE).tell(segmentWithTimeSlice);
getSelfContext().lookup(GlobalTraceAnalysis.Role.INSTANCE).tell(segmentWithTimeSlice);
- getSelfContext().lookup(SegmentExceptionSave.Role.INSTANCE).tell(segmentWithTimeSlice);
+ getSelfContext().lookup(SegmentExceptionAnalysis.Role.INSTANCE).tell(segmentWithTimeSlice);
getSelfContext().lookup(NodeCompAnalysis.Role.INSTANCE).tell(segmentWithTimeSlice);
@@ -110,8 +110,6 @@ public class SegmentPost extends AbstractPost {
}
public static class Factory extends AbstractPostProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public String servletPath() {
return "/segments";
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithGlobalTraceId.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithGlobalTraceId.java
index d7f0d4985..11623812c 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithGlobalTraceId.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithGlobalTraceId.java
@@ -62,8 +62,6 @@ public class SegmentTopGetWithGlobalTraceId extends AbstractGet {
}
public static class Factory extends AbstractGetProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithTimeSlice.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithTimeSlice.java
index 1448fc227..0ff5fd416 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithTimeSlice.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/SegmentTopGetWithTimeSlice.java
@@ -86,8 +86,6 @@ public class SegmentTopGetWithTimeSlice extends AbstractGet {
}
public static class Factory extends AbstractGetProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentAnalysis.java
new file mode 100644
index 000000000..4027fb4c9
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentAnalysis.java
@@ -0,0 +1,74 @@
+package com.a.eye.skywalking.collector.worker.segment.analysis;
+
+import com.a.eye.skywalking.collector.actor.*;
+import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
+import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
+import com.a.eye.skywalking.collector.worker.RecordAnalysisMember;
+import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
+import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
+import com.a.eye.skywalking.collector.worker.segment.persistence.SegmentSave;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @author pengys5
+ */
+public class SegmentAnalysis extends RecordAnalysisMember {
+
+ private Logger logger = LogManager.getFormatterLogger(SegmentAnalysis.class);
+
+ SegmentAnalysis(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ super(role, clusterContext, selfContext);
+ }
+
+ @Override
+ public void preStart() throws ProviderNotFoundException {
+ getClusterContext().findProvider(SegmentSave.Role.INSTANCE).create(this);
+ }
+
+ @Override
+ public void analyse(Object message) throws Exception {
+ if (message instanceof Segment) {
+ Segment segment = (Segment) message;
+ getSelfContext().lookup(SegmentSave.Role.INSTANCE).tell(segment);
+ } else {
+ logger.error("unhandled message, message instance must Segment, but is %s", message.getClass().toString());
+ }
+ }
+
+ @Override
+ protected WorkerRefs aggWorkRefs() {
+ return null;
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+ @Override
+ public Role role() {
+ return SegmentAnalysis.Role.INSTANCE;
+ }
+
+ @Override
+ public SegmentAnalysis workerInstance(ClusterWorkerContext clusterContext) {
+ return new SegmentAnalysis(role(), clusterContext, new LocalWorkerContext());
+ }
+
+ @Override
+ public int queueSize() {
+ return WorkerConfig.Queue.Segment.SegmentAnalysis.SIZE;
+ }
+ }
+
+ public enum Role implements com.a.eye.skywalking.collector.actor.Role {
+ INSTANCE;
+
+ @Override
+ public String roleName() {
+ return SegmentAnalysis.class.getSimpleName();
+ }
+
+ @Override
+ public WorkerSelector workerSelector() {
+ return new RollingSelector();
+ }
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentCostAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentCostAnalysis.java
new file mode 100644
index 000000000..44622d0e6
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentCostAnalysis.java
@@ -0,0 +1,106 @@
+package com.a.eye.skywalking.collector.worker.segment.analysis;
+
+import com.a.eye.skywalking.collector.actor.*;
+import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
+import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
+import com.a.eye.skywalking.collector.worker.RecordAnalysisMember;
+import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
+import com.a.eye.skywalking.collector.worker.segment.SegmentCostIndex;
+import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
+import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
+import com.a.eye.skywalking.collector.worker.segment.entity.Span;
+import com.a.eye.skywalking.collector.worker.segment.persistence.SegmentCostSave;
+import com.a.eye.skywalking.collector.worker.tools.CollectionTools;
+import com.google.gson.JsonObject;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @author pengys5
+ */
+public class SegmentCostAnalysis extends RecordAnalysisMember {
+
+ private Logger logger = LogManager.getFormatterLogger(SegmentCostAnalysis.class);
+
+ SegmentCostAnalysis(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ super(role, clusterContext, selfContext);
+ }
+
+ @Override
+ public void preStart() throws ProviderNotFoundException {
+ getClusterContext().findProvider(SegmentCostSave.Role.INSTANCE).create(this);
+ }
+
+ @Override
+ public void analyse(Object message) throws Exception {
+ if (message instanceof SegmentPost.SegmentWithTimeSlice) {
+ SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice) message;
+ Segment segment = segmentWithTimeSlice.getSegment();
+
+ if (CollectionTools.isNotEmpty(segment.getSpans())) {
+ for (Span span : segment.getSpans()) {
+ if (span.getParentSpanId() == -1) {
+ JsonObject dataJsonObj = new JsonObject();
+ dataJsonObj.addProperty(SegmentCostIndex.SEG_ID, segment.getTraceSegmentId());
+ dataJsonObj.addProperty(SegmentCostIndex.START_TIME, span.getStartTime());
+ dataJsonObj.addProperty(SegmentCostIndex.END_TIME, span.getEndTime());
+ dataJsonObj.addProperty(SegmentCostIndex.OPERATION_NAME, span.getOperationName());
+ dataJsonObj.addProperty(SegmentCostIndex.TIME_SLICE, segmentWithTimeSlice.getMinute());
+
+ long startTime = span.getStartTime();
+ long endTime = span.getEndTime();
+ long cost = endTime - startTime;
+ if (cost == 0) {
+ cost = 1;
+ }
+ dataJsonObj.addProperty(SegmentCostIndex.COST, cost);
+ setRecord(segment.getTraceSegmentId(), dataJsonObj);
+ }
+ }
+ }
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
+ }
+ }
+
+ @Override
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getSelfContext().lookup(SegmentCostSave.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", SegmentCostSave.Role.INSTANCE.roleName());
+ }
+ return null;
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+ @Override
+ public Role role() {
+ return SegmentCostAnalysis.Role.INSTANCE;
+ }
+
+ @Override
+ public SegmentCostAnalysis workerInstance(ClusterWorkerContext clusterContext) {
+ return new SegmentCostAnalysis(role(), clusterContext, new LocalWorkerContext());
+ }
+
+ @Override
+ public int queueSize() {
+ return WorkerConfig.Queue.Segment.SegmentCostAnalysis.SIZE;
+ }
+ }
+
+ public enum Role implements com.a.eye.skywalking.collector.actor.Role {
+ INSTANCE;
+
+ @Override
+ public String roleName() {
+ return SegmentCostAnalysis.class.getSimpleName();
+ }
+
+ @Override
+ public WorkerSelector workerSelector() {
+ return new RollingSelector();
+ }
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentExceptionAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentExceptionAnalysis.java
new file mode 100644
index 000000000..fef05789e
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/analysis/SegmentExceptionAnalysis.java
@@ -0,0 +1,111 @@
+package com.a.eye.skywalking.collector.worker.segment.analysis;
+
+import com.a.eye.skywalking.collector.actor.*;
+import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
+import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
+import com.a.eye.skywalking.collector.worker.RecordAnalysisMember;
+import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
+import com.a.eye.skywalking.collector.worker.segment.SegmentExceptionIndex;
+import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
+import com.a.eye.skywalking.collector.worker.segment.entity.LogData;
+import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
+import com.a.eye.skywalking.collector.worker.segment.entity.Span;
+import com.a.eye.skywalking.collector.worker.segment.entity.tag.Tags;
+import com.a.eye.skywalking.collector.worker.segment.persistence.SegmentExceptionSave;
+import com.a.eye.skywalking.collector.worker.tools.CollectionTools;
+import com.google.gson.JsonArray;
+import com.google.gson.JsonObject;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
+import java.util.List;
+
+/**
+ * @author pengys5
+ */
+public class SegmentExceptionAnalysis extends RecordAnalysisMember {
+
+ private Logger logger = LogManager.getFormatterLogger(SegmentExceptionAnalysis.class);
+
+ SegmentExceptionAnalysis(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ super(role, clusterContext, selfContext);
+ }
+
+ @Override
+ public void preStart() throws ProviderNotFoundException {
+ getClusterContext().findProvider(SegmentExceptionSave.Role.INSTANCE).create(this);
+ }
+
+ @Override
+ public void analyse(Object message) throws Exception {
+ if (message instanceof SegmentPost.SegmentWithTimeSlice) {
+ SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice) message;
+ Segment segment = segmentWithTimeSlice.getSegment();
+
+ if (CollectionTools.isNotEmpty(segment.getSpans())) {
+ for (Span span : segment.getSpans()) {
+ boolean isError = Tags.ERROR.get(span);
+
+ JsonObject dataJsonObj = new JsonObject();
+ dataJsonObj.addProperty(SegmentExceptionIndex.IS_ERROR, isError);
+ dataJsonObj.addProperty(SegmentExceptionIndex.SEG_ID, segment.getTraceSegmentId());
+
+ JsonArray errorKind = new JsonArray();
+ if (isError) {
+ List logDataList = span.getLogs();
+ for (LogData logData : logDataList) {
+ if (logData.getFields().containsKey("error.kind")) {
+ errorKind.add(String.valueOf(logData.getFields().get("error.kind")));
+ }
+ }
+ }
+ dataJsonObj.add(SegmentExceptionIndex.ERROR_KIND, errorKind);
+ setRecord(segment.getTraceSegmentId(), dataJsonObj);
+ }
+ }
+ } else {
+ logger.error("unhandled message, message instance must SegmentPost.SegmentWithTimeSlice, but is %s", message.getClass().toString());
+ }
+ }
+
+ @Override
+ protected WorkerRefs aggWorkRefs() {
+ try {
+ return getSelfContext().lookup(SegmentExceptionSave.Role.INSTANCE);
+ } catch (WorkerNotFoundException e) {
+ logger.error("The role of %s worker not found", SegmentExceptionSave.Role.INSTANCE.roleName());
+ }
+ return null;
+ }
+
+ public static class Factory extends AbstractLocalAsyncWorkerProvider {
+ @Override
+ public Role role() {
+ return SegmentExceptionAnalysis.Role.INSTANCE;
+ }
+
+ @Override
+ public SegmentExceptionAnalysis workerInstance(ClusterWorkerContext clusterContext) {
+ return new SegmentExceptionAnalysis(role(), clusterContext, new LocalWorkerContext());
+ }
+
+ @Override
+ public int queueSize() {
+ return WorkerConfig.Queue.Segment.SegmentExceptionAnalysis.SIZE;
+ }
+ }
+
+ public enum Role implements com.a.eye.skywalking.collector.actor.Role {
+ INSTANCE;
+
+ @Override
+ public String roleName() {
+ return SegmentExceptionAnalysis.class.getSimpleName();
+ }
+
+ @Override
+ public WorkerSelector workerSelector() {
+ return new RollingSelector();
+ }
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/entity/TraceSegmentRef.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/entity/TraceSegmentRef.java
index e710e6edf..3386ec462 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/entity/TraceSegmentRef.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/entity/TraceSegmentRef.java
@@ -40,7 +40,7 @@ public class TraceSegmentRef extends DeserializeObject {
reader.beginObject();
while (reader.hasNext()) {
switch (reader.nextName()) {
- case "rs":
+ case "ts":
String ts = reader.nextString();
this.traceSegmentId = ts;
JsonBuilder.INSTANCE.append(stringBuilder, "ts", ts, first);
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentCostSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentCostSave.java
index 33288e5c4..e1f8238c3 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentCostSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentCostSave.java
@@ -1,29 +1,18 @@
package com.a.eye.skywalking.collector.worker.segment.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.segment.SegmentCostIndex;
-import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
-import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.segment.entity.Span;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
-import com.a.eye.skywalking.collector.worker.tools.CollectionTools;
-import com.google.gson.JsonObject;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
*/
public class SegmentCostSave extends RecordPersistenceMember {
-
- private Logger logger = LogManager.getFormatterLogger(SegmentCostSave.class);
-
@Override
public String esIndex() {
return SegmentCostIndex.INDEX;
@@ -35,61 +24,21 @@ public class SegmentCostSave extends RecordPersistenceMember {
}
protected SegmentCostSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
- @Override
- public void analyse(Object message) throws Exception {
- if (message instanceof SegmentPost.SegmentWithTimeSlice) {
- SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice)message;
- Segment segment = segmentWithTimeSlice.getSegment();
-
- if (CollectionTools.isNotEmpty(segment.getSpans())) {
- for (Span span : segment.getSpans()) {
- if (span.getParentSpanId() == -1) {
- JsonObject dataJsonObj = new JsonObject();
- dataJsonObj.addProperty(SegmentCostIndex.SEG_ID, segment.getTraceSegmentId());
- dataJsonObj.addProperty(SegmentCostIndex.START_TIME, span.getStartTime());
- dataJsonObj.addProperty(SegmentCostIndex.END_TIME, span.getEndTime());
- dataJsonObj.addProperty(SegmentCostIndex.OPERATION_NAME, span.getOperationName());
- dataJsonObj.addProperty(SegmentCostIndex.TIME_SLICE, segmentWithTimeSlice.getMinute());
-
- long startTime = span.getStartTime();
- long endTime = span.getEndTime();
- long cost = endTime - startTime;
- if (cost == 0) {
- cost = 1;
- }
- dataJsonObj.addProperty(SegmentCostIndex.COST, cost);
-
- RecordData recordData = new RecordData(segment.getTraceSegmentId());
- recordData.setRecord(dataJsonObj);
- super.analyse(recordData);
- }
- }
- }
- } else {
- logger.error("unhandled message, message instance must JsonObject, but is %s", message.getClass().toString());
- }
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
}
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.Segment.SegmentCostSave.SIZE;
- }
-
@Override
public SegmentCostSave workerInstance(ClusterWorkerContext clusterContext) {
- return new SegmentCostSave(role(), clusterContext, new LocalWorkerContext());
+ SegmentCostSave worker = new SegmentCostSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionSave.java
index f06be6f13..ca8d88700 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionSave.java
@@ -1,35 +1,19 @@
package com.a.eye.skywalking.collector.worker.segment.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.segment.SegmentExceptionIndex;
-import com.a.eye.skywalking.collector.worker.segment.SegmentPost;
-import com.a.eye.skywalking.collector.worker.segment.entity.LogData;
-import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.segment.entity.Span;
-import com.a.eye.skywalking.collector.worker.segment.entity.tag.Tags;
import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
-import com.a.eye.skywalking.collector.worker.tools.CollectionTools;
-import com.google.gson.JsonArray;
-import com.google.gson.JsonObject;
-import org.apache.logging.log4j.LogManager;
-import org.apache.logging.log4j.Logger;
-
-import java.util.List;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
*/
public class SegmentExceptionSave extends RecordPersistenceMember {
-
- private Logger logger = LogManager.getFormatterLogger(SegmentExceptionSave.class);
-
@Override
public String esIndex() {
return SegmentExceptionIndex.INDEX;
@@ -41,61 +25,21 @@ public class SegmentExceptionSave extends RecordPersistenceMember {
}
protected SegmentExceptionSave(com.a.eye.skywalking.collector.actor.Role role, ClusterWorkerContext clusterContext,
- LocalWorkerContext selfContext) {
+ LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
- @Override
- public void analyse(Object message) throws Exception {
- if (message instanceof SegmentPost.SegmentWithTimeSlice) {
- SegmentPost.SegmentWithTimeSlice segmentWithTimeSlice = (SegmentPost.SegmentWithTimeSlice)message;
- Segment segment = segmentWithTimeSlice.getSegment();
-
- if (CollectionTools.isNotEmpty(segment.getSpans())) {
- for (Span span : segment.getSpans()) {
- boolean isError = Tags.ERROR.get(span);
-
- JsonObject dataJsonObj = new JsonObject();
- dataJsonObj.addProperty(SegmentExceptionIndex.IS_ERROR, isError);
- dataJsonObj.addProperty(SegmentExceptionIndex.SEG_ID, segment.getTraceSegmentId());
-
- JsonArray errorKind = new JsonArray();
- if (isError) {
- List logDataList = span.getLogs();
- for (LogData logData : logDataList) {
- if (logData.getFields().containsKey("error.kind")) {
- errorKind.add(String.valueOf(logData.getFields().get("error.kind")));
- }
- }
- }
- dataJsonObj.add(SegmentExceptionIndex.ERROR_KIND, errorKind);
-
- RecordData recordData = new RecordData(segment.getTraceSegmentId());
- recordData.setRecord(dataJsonObj);
- super.analyse(recordData);
- }
- }
- } else {
- logger.error("unhandled message, message instance must JsonObject, but is %s", message.getClass().toString());
- }
- }
-
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
}
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.Segment.SegmentExceptionSave.SIZE;
- }
-
@Override
public SegmentExceptionSave workerInstance(ClusterWorkerContext clusterContext) {
- return new SegmentExceptionSave(role(), clusterContext, new LocalWorkerContext());
+ SegmentExceptionSave worker = new SegmentExceptionSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionWithSegId.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionWithSegId.java
index f492f8e63..620100653 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionWithSegId.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentExceptionWithSegId.java
@@ -42,8 +42,6 @@ public class SegmentExceptionWithSegId extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentSave.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentSave.java
index c02c542dd..ea55ce124 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentSave.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentSave.java
@@ -1,35 +1,31 @@
package com.a.eye.skywalking.collector.worker.segment.persistence;
-import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorkerProvider;
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorkerProvider;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
-import com.a.eye.skywalking.collector.worker.RecordPersistenceMember;
+import com.a.eye.skywalking.collector.worker.PersistenceMember;
import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.segment.SegmentIndex;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
-import com.a.eye.skywalking.collector.worker.storage.AbstractIndex;
-import com.a.eye.skywalking.collector.worker.storage.EsClient;
+import com.a.eye.skywalking.collector.worker.storage.*;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
-import org.elasticsearch.action.bulk.BulkRequestBuilder;
-import org.elasticsearch.action.bulk.BulkResponse;
+import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.client.Client;
-import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
/**
* @author pengys5
*/
-public class SegmentSave extends RecordPersistenceMember {
+public class SegmentSave extends PersistenceMember {
private Logger logger = LogManager.getFormatterLogger(SegmentSave.class);
- private Map persistenceData = new LinkedHashMap<>();
-
@Override
public String esIndex() {
return SegmentIndex.INDEX;
@@ -46,56 +42,63 @@ public class SegmentSave extends RecordPersistenceMember {
}
@Override
- public void analyse(Object message) throws Exception {
+ public SegmentPersistenceData initializeData() {
+ return new SegmentPersistenceData();
+ }
+
+ int i = 0;
+
+ @Override
+ final public void analyse(Object message) throws Exception {
if (message instanceof Segment) {
Segment segment = (Segment) message;
- persistenceData.put(segment.getTraceSegmentId(), segment.getJsonStr());
- if (persistenceData.size() >= CacheSizeConfig.Cache.Persistence.SIZE) {
- persistence();
+ SegmentPersistenceData data = getPersistenceData();
+ data.holdData();
+ data.getElseCreate(segment.getTraceSegmentId() + i).setSegmentStr(segment.getJsonStr());
+ if (data.size() >= CacheSizeConfig.Cache.Persistence.SIZE) {
+ persistence(data.asMap());
}
+ data.releaseData();
+ i++;
} else {
- logger.error("unhandled message, message instance must JsonObject, but is %s", message.getClass().toString());
+ logger.error("unhandled message, message instance must Segment, but is %s", message.getClass().toString());
}
}
+ private void persistence(Map dataMap) {
+ List builderList = new LinkedList<>();
+ Client client = EsClient.INSTANCE.getClient();
+ dataMap.forEach((key, value) -> {
+ IndexRequestBuilder builder = client.prepareIndex(esIndex(), esType(), key).setSource(value.getSegmentStr());
+ builderList.add(builder);
+ });
+ EsClient.INSTANCE.bulk(builderList);
+ dataMap.clear();
+ }
+
@Override
- protected void persistence() {
- boolean success = saveToEs();
- if (success) {
- persistenceData.clear();
- }
- }
+ final protected void prepareIndex(List builderList) {
+ Map lastData = getPersistenceData().getLast().asMap();
- private boolean saveToEs() {
Client client = EsClient.INSTANCE.getClient();
- BulkRequestBuilder bulkRequest = client.prepareBulk();
- logger.debug("persistenceData SIZE: %s", persistenceData.size());
-
- persistenceData.forEach((key, value) -> bulkRequest.add(client.prepareIndex(esIndex(), esType(), key).setSource(value)));
-
- BulkResponse bulkResponse = bulkRequest.execute().actionGet();
- if (bulkResponse.hasFailures()) {
- logger.error(bulkResponse.buildFailureMessage());
- }
- return !bulkResponse.hasFailures();
+ lastData.forEach((key, value) -> {
+ IndexRequestBuilder builder = client.prepareIndex(esIndex(), esType(), key).setSource(value.getSegmentStr());
+ builderList.add(builder);
+ });
+ lastData.clear();
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
+ public static class Factory extends AbstractLocalSyncWorkerProvider {
@Override
public Role role() {
return Role.INSTANCE;
}
- @Override
- public int queueSize() {
- return WorkerConfig.Queue.Segment.SegmentSave.SIZE;
- }
-
@Override
public SegmentSave workerInstance(ClusterWorkerContext clusterContext) {
- return new SegmentSave(role(), clusterContext, new LocalWorkerContext());
+ SegmentSave worker = new SegmentSave(role(), clusterContext, new LocalWorkerContext());
+ PersistenceWorkerListener.INSTANCE.register(worker);
+ return worker;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithGlobalTraceId.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithGlobalTraceId.java
index e7daa8e78..b29e7258b 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithGlobalTraceId.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithGlobalTraceId.java
@@ -138,8 +138,6 @@ public class SegmentTopSearchWithGlobalTraceId extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithTimeSlice.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithTimeSlice.java
index c80cd54d2..14eb9fcf4 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithTimeSlice.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/segment/persistence/SegmentTopSearchWithTimeSlice.java
@@ -168,8 +168,6 @@ public class SegmentTopSearchWithTimeSlice extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/SpanGetWithId.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/SpanGetWithId.java
index e7e174d85..04001c45b 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/SpanGetWithId.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/SpanGetWithId.java
@@ -48,8 +48,6 @@ public class SpanGetWithId extends AbstractGet {
}
public static class Factory extends AbstractGetProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/persistence/SpanSearchWithId.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/persistence/SpanSearchWithId.java
index 151f7ca3c..fe753148e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/persistence/SpanSearchWithId.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/span/persistence/SpanSearchWithId.java
@@ -68,8 +68,6 @@ public class SpanSearchWithId extends AbstractLocalSyncWorker {
}
public static class Factory extends AbstractLocalSyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/AbstractIndex.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/AbstractIndex.java
index b949e1849..130e1789a 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/AbstractIndex.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/AbstractIndex.java
@@ -30,12 +30,15 @@ public abstract class AbstractIndex {
final XContentBuilder createSettingBuilder() throws IOException {
return XContentFactory.jsonBuilder()
- .startObject()
- .field("index.number_of_shards", EsConfig.Es.Index.Shards.NUMBER)
- .field("index.number_of_replicas", EsConfig.Es.Index.Replicas.NUMBER)
- .endObject();
+ .startObject()
+ .field("index.number_of_shards", EsConfig.Es.Index.Shards.NUMBER)
+ .field("index.number_of_replicas", EsConfig.Es.Index.Replicas.NUMBER)
+ .field("index.refresh_interval", String.valueOf(refreshInterval()) + "s")
+ .endObject();
}
+ public abstract int refreshInterval();
+
public abstract boolean isRecord();
public abstract XContentBuilder createMappingBuilder() throws IOException;
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Data.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Data.java
new file mode 100644
index 000000000..199221d01
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Data.java
@@ -0,0 +1,12 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public interface Data {
+ String getId();
+
+ void merge(Map dbData);
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/EsClient.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/EsClient.java
index a50ed93cb..fdc5238ad 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/EsClient.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/EsClient.java
@@ -5,6 +5,9 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.elasticsearch.action.admin.indices.refresh.RefreshRequest;
import org.elasticsearch.action.admin.indices.refresh.RefreshResponse;
+import org.elasticsearch.action.bulk.BulkRequestBuilder;
+import org.elasticsearch.action.bulk.BulkResponse;
+import org.elasticsearch.action.index.IndexRequestBuilder;
import org.elasticsearch.client.Client;
import org.elasticsearch.common.settings.Settings;
import org.elasticsearch.common.transport.InetSocketTransportAddress;
@@ -77,4 +80,21 @@ public enum EsClient {
this.port = port;
}
}
+
+ public void bulk(List dataList){
+ Client client = EsClient.INSTANCE.getClient();
+ BulkRequestBuilder bulkRequest = client.prepareBulk();
+
+ logger.info("bulk data size: %s", dataList.size());
+ if (dataList.size() > 0) {
+ for (IndexRequestBuilder builder : dataList) {
+ bulkRequest.add(builder);
+ }
+
+ BulkResponse bulkResponse = bulkRequest.execute().actionGet();
+ if (bulkResponse.hasFailures()) {
+ logger.error(bulkResponse.buildFailureMessage());
+ }
+ }
+ }
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/FlushAndSwitch.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/FlushAndSwitch.java
new file mode 100644
index 000000000..7b24bb674
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/FlushAndSwitch.java
@@ -0,0 +1,7 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+/**
+ * @author pengys5
+ */
+public class FlushAndSwitch {
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeAnalysisData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeAnalysisData.java
new file mode 100644
index 000000000..920b567e0
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeAnalysisData.java
@@ -0,0 +1,23 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public class MergeAnalysisData {
+
+ private WindowData windowData = new WindowData(new LinkedHashMap());
+
+ public MergeData getElseCreate(String id) {
+ if (!windowData.containsKey(id)) {
+ windowData.put(id, new MergeData(id));
+ }
+ return windowData.get(id);
+ }
+
+ public Map asMap() {
+ return windowData.asMap();
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeData.java
index 375261696..8c179f629 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeData.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeData.java
@@ -1,16 +1,14 @@
package com.a.eye.skywalking.collector.worker.storage;
import com.a.eye.skywalking.collector.actor.selector.AbstractHashMessage;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
+
+import java.util.*;
/**
* @author pengys5
*/
-public class MergeData extends AbstractHashMessage {
+public class MergeData extends AbstractHashMessage implements Data {
+
public static final String SPLIT = ",";
private String id;
@@ -34,48 +32,39 @@ public class MergeData extends AbstractHashMessage {
}
public void merge(MergeData data) {
- for (Map.Entry> entry : data.mergeData.entrySet()) {
- String column = entry.getKey();
- Set value = entry.getValue();
- Iterator iterator = value.iterator();
- while (iterator.hasNext()) {
- setMergeData(column, iterator.next());
- }
- }
+ data.mergeData.forEach((column, valueSet) -> valueSet.forEach(value -> setMergeData(column, value)));
}
- public void merge(Map dbData) {
- for (Map.Entry entry : dbData.entrySet()) {
- if (!AbstractIndex.TIME_SLICE.equals(entry.getKey())
- && !AbstractIndex.AGG_COLUMN.equals(entry.getKey())) {
- String dbValue = String.valueOf(entry.getValue());
- String[] dbValues = dbValue.split(SPLIT);
+ public void merge(Map dbData) {
+ dbData.forEach((column, dbValue) -> {
+ if (!AbstractIndex.TIME_SLICE.equals(column) && !AbstractIndex.AGG_COLUMN.equals(column)) {
+ String[] dbValues = String.valueOf(dbValue).split(SPLIT);
for (String value : dbValues) {
- setMergeData(entry.getKey(), value);
+ setMergeData(column, value);
}
}
- }
+ });
}
- public Map toMap() {
+ public Map asMap() {
Map source = new HashMap<>();
- for (Map.Entry> entry : mergeData.entrySet()) {
- String column = entry.getKey();
- Iterator iterator = entry.getValue().iterator();
- StringBuffer value = new StringBuffer();
+ mergeData.forEach((column, valueSet) -> {
+ Iterator iterator = valueSet.iterator();
+ StringBuilder builder = new StringBuilder();
int i = 0;
+
while (iterator.hasNext()) {
if (i == 0) {
- value.append(iterator.next());
+ builder.append(iterator.next());
} else {
- value.append(SPLIT).append(iterator.next());
+ builder.append(SPLIT).append(iterator.next());
}
i++;
}
- source.put(column, value.toString());
- }
+ source.put(column, builder.toString());
+ });
return source;
}
-}
+}
\ No newline at end of file
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergePersistenceData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergePersistenceData.java
index 4a5ccec67..437ab1f37 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergePersistenceData.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergePersistenceData.java
@@ -1,51 +1,25 @@
package com.a.eye.skywalking.collector.worker.storage;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Spliterator;
-import java.util.function.Consumer;
-
/**
* @author pengys5
*/
-public class MergePersistenceData implements Iterable {
+public class MergePersistenceData extends Window implements PersistenceData {
- private Map persistenceData = new HashMap<>();
+ private WindowData lockedWindowData;
public MergeData getElseCreate(String id) {
- if (!persistenceData.containsKey(id)) {
- persistenceData.put(id, new MergeData(id));
+ if (!lockedWindowData.containsKey(id)) {
+ lockedWindowData.put(id, new MergeData(id));
}
- return persistenceData.get(id);
+ return lockedWindowData.get(id);
}
- public int size() {
- return persistenceData.size();
+ public void holdData() {
+ lockedWindowData = getCurrentAndHold();
}
- public void clear() {
- persistenceData.clear();
- }
-
- public MergeData pushOne() {
- MergeData one = persistenceData.entrySet().iterator().next().getValue();
- persistenceData.remove(one.getId());
- return one;
- }
-
- @Override
- public void forEach(Consumer action) {
- throw new UnsupportedOperationException("forEach");
- }
-
- @Override
- public Spliterator spliterator() {
- throw new UnsupportedOperationException("spliterator");
- }
-
- @Override
- public Iterator> iterator() {
- return persistenceData.entrySet().iterator();
+ public void releaseData() {
+ lockedWindowData.release();
+ lockedWindowData = null;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricAnalysisData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricAnalysisData.java
new file mode 100644
index 000000000..5fb110ebf
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricAnalysisData.java
@@ -0,0 +1,23 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public class MetricAnalysisData {
+
+ private WindowData windowData = new WindowData(new LinkedHashMap());
+
+ public MetricData getElseCreate(String id) {
+ if (!windowData.containsKey(id)) {
+ windowData.put(id, new MetricData(id));
+ }
+ return windowData.get(id);
+ }
+
+ public Map asMap() {
+ return windowData.asMap();
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricData.java
index d10cc5143..12d942dc7 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricData.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricData.java
@@ -3,13 +3,13 @@ package com.a.eye.skywalking.collector.worker.storage;
import com.a.eye.skywalking.collector.actor.selector.AbstractHashMessage;
import com.a.eye.skywalking.collector.worker.Const;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Map;
/**
* @author pengys5
*/
-public class MetricData extends AbstractHashMessage {
+public class MetricData extends AbstractHashMessage implements Data {
private String id;
private Map value;
@@ -17,28 +17,25 @@ public class MetricData extends AbstractHashMessage {
public MetricData(String id) {
super(id);
this.id = id;
- value = new HashMap<>();
+ value = new LinkedHashMap<>();
String[] ids = id.split(Const.IDS_SPLIT);
String slice = ids[0];
- String aggId = "";
+ StringBuilder aggId = new StringBuilder();
for (int i = 1; i < ids.length; i++) {
- if (i == 1) {
- aggId = ids[i];
- } else {
- aggId = aggId + Const.ID_SPLIT + ids[i];
- }
+ if (i == 1) aggId = new StringBuilder(ids[i]);
+ else aggId.append(Const.ID_SPLIT).append(ids[i]);
}
value.put(AbstractIndex.TIME_SLICE, Long.valueOf(slice));
- value.put(AbstractIndex.AGG_COLUMN, aggId);
+ value.put(AbstractIndex.AGG_COLUMN, aggId.toString());
}
public void setMetric(String column, Long value) {
long valueAdd = value;
if (this.value.containsKey(column) && !AbstractIndex.TIME_SLICE.equals(column)
- && !AbstractIndex.AGG_COLUMN.equals(column)) {
- valueAdd += (Long)this.value.get(column);
+ && !AbstractIndex.AGG_COLUMN.equals(column)) {
+ valueAdd += (Long) this.value.get(column);
}
this.value.put(column, valueAdd);
}
@@ -46,27 +43,27 @@ public class MetricData extends AbstractHashMessage {
public void merge(MetricData metricData) {
for (Map.Entry entry : metricData.value.entrySet()) {
if (!AbstractIndex.TIME_SLICE.equals(entry.getKey())
- && !AbstractIndex.AGG_COLUMN.equals(entry.getKey())) {
- setMetric(entry.getKey(), (Long)entry.getValue());
+ && !AbstractIndex.AGG_COLUMN.equals(entry.getKey())) {
+ setMetric(entry.getKey(), (Long) entry.getValue());
}
}
}
- public void merge(Map dbData) {
- for (Map.Entry entry : dbData.entrySet()) {
+ public void merge(Map dbData) {
+ for (Map.Entry entry : dbData.entrySet()) {
if (!AbstractIndex.TIME_SLICE.equals(entry.getKey())
- && !AbstractIndex.AGG_COLUMN.equals(entry.getKey())) {
- long dbValue = ((Number)entry.getValue()).longValue();
+ && !AbstractIndex.AGG_COLUMN.equals(entry.getKey())) {
+ long dbValue = ((Number) entry.getValue()).longValue();
setMetric(entry.getKey(), dbValue);
}
}
}
- public Map toMap() {
- return value;
- }
-
public String getId() {
return id;
}
+
+ public Map asMap() {
+ return value;
+ }
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricPersistenceData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricPersistenceData.java
index 23aa83044..a18d3f51a 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricPersistenceData.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MetricPersistenceData.java
@@ -1,45 +1,25 @@
package com.a.eye.skywalking.collector.worker.storage;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Spliterator;
-
/**
* @author pengys5
*/
-public class MetricPersistenceData implements Iterable {
+public class MetricPersistenceData extends Window implements PersistenceData {
- private Map persistenceData = new HashMap<>();
+ private WindowData lockedWindowData;
public MetricData getElseCreate(String id) {
- if (!persistenceData.containsKey(id)) {
- persistenceData.put(id, new MetricData(id));
+ if (!lockedWindowData.containsKey(id)) {
+ lockedWindowData.put(id, new MetricData(id));
}
- return persistenceData.get(id);
+ return lockedWindowData.get(id);
}
- public int size() {
- return persistenceData.size();
+ public void holdData() {
+ lockedWindowData = getCurrentAndHold();
}
- public void clear() {
- persistenceData.clear();
- }
-
- public MetricData pushOne() {
- MetricData one = persistenceData.entrySet().iterator().next().getValue();
- persistenceData.remove(one.getId());
- return one;
- }
-
- @Override
- public Spliterator spliterator() {
- throw new UnsupportedOperationException("spliterator");
- }
-
- @Override
- public Iterator> iterator() {
- return persistenceData.entrySet().iterator();
+ public void releaseData() {
+ lockedWindowData.release();
+ lockedWindowData = null;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceData.java
new file mode 100644
index 000000000..6bbc6b451
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceData.java
@@ -0,0 +1,13 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+/**
+ * @author pengys5
+ */
+public interface PersistenceData {
+
+ T getElseCreate(String id);
+
+ void releaseData();
+
+ void holdData();
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceTimer.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceTimer.java
new file mode 100644
index 000000000..4b315ef3c
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceTimer.java
@@ -0,0 +1,53 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorker;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author pengys5
+ */
+public enum PersistenceTimer {
+ INSTANCE;
+
+ private Logger logger = LogManager.getFormatterLogger(PersistenceTimer.class);
+
+ public void boot() {
+ logger.info("persistence timer start");
+ final long timeInterval = EsConfig.Es.Persistence.Timer.VALUE * 1000;
+
+ Runnable runnable = () -> {
+ while (true) {
+ try {
+ extractDataAndSave();
+ Thread.sleep(timeInterval);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ };
+ Thread thread = new Thread(runnable);
+ thread.start();
+ }
+
+ private void extractDataAndSave() {
+ List dataList = new LinkedList<>();
+
+ List workers = PersistenceWorkerListener.INSTANCE.getWorkers();
+ for (AbstractLocalSyncWorker worker : workers) {
+ logger.info("worker role name: %s", worker.getRole().roleName());
+ try {
+ worker.allocateJob(new FlushAndSwitch(), dataList);
+ } catch (Exception e) {
+ logger.error("flush persistence worker data error, worker role name: %s", worker.getRole().roleName());
+ e.printStackTrace();
+ }
+ }
+ EsClient.INSTANCE.bulk(dataList);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceWorkerListener.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceWorkerListener.java
new file mode 100644
index 000000000..2e1d289ba
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceWorkerListener.java
@@ -0,0 +1,23 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorker;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author pengys5
+ */
+public enum PersistenceWorkerListener {
+ INSTANCE;
+
+ private List workers = new ArrayList<>();
+
+ public void register(AbstractLocalSyncWorker worker) {
+ workers.add(worker);
+ }
+
+ public List getWorkers() {
+ return workers;
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordAnalysisData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordAnalysisData.java
new file mode 100644
index 000000000..a2ec96043
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordAnalysisData.java
@@ -0,0 +1,23 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public class RecordAnalysisData {
+
+ private WindowData windowData = new WindowData(new LinkedHashMap());
+
+ public RecordData getElseCreate(String id) {
+ if (!windowData.containsKey(id)) {
+ windowData.put(id, new RecordData(id));
+ }
+ return windowData.get(id);
+ }
+
+ public Map asMap() {
+ return windowData.asMap();
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordData.java
index f4b8f2261..ca1162cac 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordData.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordData.java
@@ -4,10 +4,12 @@ import com.a.eye.skywalking.collector.actor.selector.AbstractHashMessage;
import com.a.eye.skywalking.collector.worker.Const;
import com.google.gson.JsonObject;
+import java.util.Map;
+
/**
* @author pengys5
*/
-public class RecordData extends AbstractHashMessage {
+public class RecordData extends AbstractHashMessage implements Data {
private String id;
private String aggId;
@@ -21,7 +23,7 @@ public class RecordData extends AbstractHashMessage {
if (i == 1) {
this.aggId = ids[i];
} else {
- this.aggId = this.aggId + Const.ID_SPLIT + ids[i];
+ this.aggId += Const.ID_SPLIT + ids[i];
}
}
record = new JsonObject();
@@ -39,4 +41,8 @@ public class RecordData extends AbstractHashMessage {
public void setRecord(JsonObject record) {
this.record = record;
}
+
+ @Override
+ public void merge(Map dbData) {
+ }
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordPersistenceData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordPersistenceData.java
index cfcf54505..77a498f6b 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordPersistenceData.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/RecordPersistenceData.java
@@ -1,55 +1,25 @@
package com.a.eye.skywalking.collector.worker.storage;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Spliterator;
-import java.util.function.Consumer;
-
/**
* @author pengys5
*/
-public class RecordPersistenceData implements Iterable {
+public class RecordPersistenceData extends Window implements PersistenceData {
- private Map persistenceData = new HashMap();
+ private WindowData lockedWindowData;
public RecordData getElseCreate(String id) {
- if (!persistenceData.containsKey(id)) {
- persistenceData.put(id, new RecordData(id));
+ if (!lockedWindowData.containsKey(id)) {
+ lockedWindowData.put(id, new RecordData(id));
}
- return persistenceData.get(id);
+ return lockedWindowData.get(id);
}
- public int size() {
- return persistenceData.size();
+ public void holdData() {
+ lockedWindowData = getCurrentAndHold();
}
- public void clear() {
- persistenceData.clear();
- }
-
- public boolean hasNext() {
- return persistenceData.entrySet().iterator().hasNext();
- }
-
- public RecordData pushOne() {
- RecordData one = persistenceData.entrySet().iterator().next().getValue();
- persistenceData.remove(one.getId());
- return one;
- }
-
- @Override
- public void forEach(Consumer action) {
- throw new UnsupportedOperationException("forEach");
- }
-
- @Override
- public Spliterator spliterator() {
- throw new UnsupportedOperationException("spliterator");
- }
-
- @Override
- public Iterator> iterator() {
- return persistenceData.entrySet().iterator();
+ public void releaseData() {
+ lockedWindowData.release();
+ lockedWindowData = null;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentData.java
new file mode 100644
index 000000000..c5539e64f
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentData.java
@@ -0,0 +1,32 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public class SegmentData implements Data {
+
+ private String id;
+ private String segmentStr;
+
+ public SegmentData(String key) {
+ this.id = key;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void merge(Map dbData) {
+ }
+
+ public String getSegmentStr() {
+ return segmentStr;
+ }
+
+ public void setSegmentStr(String segmentStr) {
+ this.segmentStr = segmentStr;
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentPersistenceData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentPersistenceData.java
new file mode 100644
index 000000000..eff19be7b
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/SegmentPersistenceData.java
@@ -0,0 +1,35 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public class SegmentPersistenceData extends Window implements PersistenceData {
+
+ private WindowData lockedWindowData;
+
+ public SegmentData getElseCreate(String id) {
+ if (!lockedWindowData.containsKey(id)) {
+ lockedWindowData.put(id, new SegmentData(id));
+ }
+ return lockedWindowData.get(id);
+ }
+
+ public void holdData() {
+ lockedWindowData = getCurrentAndHold();
+ }
+
+ public void releaseData() {
+ lockedWindowData.release();
+ lockedWindowData = null;
+ }
+
+ public int size() {
+ return lockedWindowData.size();
+ }
+
+ public Map asMap() {
+ return lockedWindowData.asMap();
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Window.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Window.java
new file mode 100644
index 000000000..9c36d7674
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Window.java
@@ -0,0 +1,50 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.HashMap;
+
+/**
+ * @author pengys5
+ */
+public abstract class Window {
+
+ private Pointer current;
+
+ private WindowData windowDataA;
+ private WindowData windowDataB;
+
+ public Window() {
+ windowDataA = new WindowData(new HashMap<>());
+ windowDataB = new WindowData(new HashMap<>());
+ current = Pointer.A;
+ }
+
+ public void switchPointer() {
+ if (current.equals(Pointer.A)) {
+ current = Pointer.B;
+ } else {
+ current = Pointer.A;
+ }
+ }
+
+ protected WindowData getCurrentAndHold() {
+ if (Pointer.A.equals(current)) {
+ windowDataA.hold();
+ return windowDataA;
+ } else {
+ windowDataB.hold();
+ return windowDataB;
+ }
+ }
+
+ public WindowData getLast() {
+ if (Pointer.A.equals(current)) {
+ return windowDataB;
+ } else {
+ return windowDataA;
+ }
+ }
+
+ enum Pointer {
+ A, B
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/WindowData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/WindowData.java
new file mode 100644
index 000000000..de299b31a
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/WindowData.java
@@ -0,0 +1,52 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public class WindowData {
+ private Map data;
+ private boolean isHold;
+
+ WindowData(Map data) {
+ this.data = data;
+ this.isHold = false;
+ }
+
+ public void release() {
+ isHold = false;
+ }
+
+ public void hold() {
+ isHold = true;
+ }
+
+ public boolean isHolding() {
+ return isHold;
+ }
+
+ public boolean containsKey(String key) {
+ return data.containsKey(key);
+ }
+
+ public void put(String key, T value) {
+ data.put(key, value);
+ }
+
+ public T get(String key) {
+ return data.get(key);
+ }
+
+ public int size() {
+ return data.size();
+ }
+
+ public void clear() {
+ data.clear();
+ }
+
+ public Map asMap() {
+ return data;
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/resources/META-INF/services/com.a.eye.skywalking.collector.actor.AbstractLocalWorkerProvider b/skywalking-collector/skywalking-collector-worker/src/main/resources/META-INF/services/com.a.eye.skywalking.collector.actor.AbstractLocalWorkerProvider
index 30b0397fe..b6e1772ed 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/resources/META-INF/services/com.a.eye.skywalking.collector.actor.AbstractLocalWorkerProvider
+++ b/skywalking-collector/skywalking-collector-worker/src/main/resources/META-INF/services/com.a.eye.skywalking.collector.actor.AbstractLocalWorkerProvider
@@ -1,3 +1,7 @@
+com.a.eye.skywalking.collector.worker.segment.analysis.SegmentAnalysis$Factory
+com.a.eye.skywalking.collector.worker.segment.analysis.SegmentCostAnalysis$Factory
+com.a.eye.skywalking.collector.worker.segment.analysis.SegmentExceptionAnalysis$Factory
+
com.a.eye.skywalking.collector.worker.segment.persistence.SegmentSave$Factory
com.a.eye.skywalking.collector.worker.segment.persistence.SegmentCostSave$Factory
com.a.eye.skywalking.collector.worker.segment.persistence.SegmentExceptionSave$Factory
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/resources/collector.config b/skywalking-collector/skywalking-collector-worker/src/main/resources/collector.config
index 54ebbc1a0..51586efaa 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/resources/collector.config
+++ b/skywalking-collector/skywalking-collector-worker/src/main/resources/collector.config
@@ -27,7 +27,7 @@ es.cluster.nodes=127.0.0.1:9300
# auto: create index when it doesn't exist.
# forced: delete and create.
# manual: do nothing.
-es.index.initialize.mode=auto
+es.index.initialize.mode=forced
# Config of shards or replicas in Elasticsearch.
es.index.shards.number=2
es.index.replicas.number=0
@@ -42,5 +42,5 @@ http.contextPath=/
# Cache size of analysis worker. The value determines whether sending to next worker and clear, or not.
cache.analysis.size=1024
# Cache size of persistence worker. The value determines whether save data and clear, or not.
-cache.persistence.size=1024
+cache.persistence.size=4096
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/resources/log4j2.xml b/skywalking-collector/skywalking-collector-worker/src/main/resources/log4j2.xml
index fe1aadabd..066c9bd62 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/resources/log4j2.xml
+++ b/skywalking-collector/skywalking-collector-worker/src/main/resources/log4j2.xml
@@ -15,6 +15,11 @@
+
+
+
+
+
@@ -22,5 +27,8 @@
+
+
+
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMemberTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMemberTestCase.java
deleted file mode 100644
index 18b4e9292..000000000
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMemberTestCase.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.a.eye.skywalking.collector.worker;
-
-import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
-import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
-import com.a.eye.skywalking.collector.worker.config.CacheSizeConfig;
-import com.a.eye.skywalking.collector.worker.storage.MergeData;
-import com.a.eye.skywalking.collector.worker.storage.MergePersistenceData;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-
-import static org.powermock.api.mockito.PowerMockito.*;
-
-/**
- * @author pengys5
- */
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(TestMergeAnalysisMember.class)
-@PowerMockIgnore({"javax.management.*"})
-public class MergeAnalysisMemberTestCase {
-
- private TestMergeAnalysisMember mergeAnalysisMember;
- private MergePersistenceData persistenceData;
-
- @Before
- public void init() throws Exception {
- ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(null);
- LocalWorkerContext localWorkerContext = new LocalWorkerContext();
- mergeAnalysisMember = PowerMockito.spy(new TestMergeAnalysisMember(TestMergeAnalysisMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
-
- persistenceData = mock(MergePersistenceData.class);
- MergeData mergeData = mock(MergeData.class);
-
- when(mergeAnalysisMember, "getPersistenceData").thenReturn(persistenceData);
- when(persistenceData.getElseCreate(Mockito.anyString())).thenReturn(mergeData);
-
- doCallRealMethod().when(mergeAnalysisMember).setMergeData(Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
- }
-
- @Test
- public void testSetMergeDataNotFull() throws Exception {
- when(persistenceData.size()).thenReturn(CacheSizeConfig.Cache.Analysis.SIZE - 1);
-
- mergeAnalysisMember.setMergeData("segment_1", "column", "value");
- Mockito.verify(mergeAnalysisMember, Mockito.never()).aggregation();
- }
-
- @Test
- public void testSetMergeDataFull() throws Exception {
- when(persistenceData.size()).thenReturn(CacheSizeConfig.Cache.Analysis.SIZE);
-
- mergeAnalysisMember.setMergeData("segment_1", "column", "value");
- Mockito.verify(mergeAnalysisMember, Mockito.times(1)).aggregation();
- }
-
- @Test
- public void testPushOne() throws Exception {
- MergePersistenceData persistenceData = new MergePersistenceData();
- persistenceData.getElseCreate("segment_1").setMergeData("column", "value");
-
- when(mergeAnalysisMember, "getPersistenceData").thenReturn(persistenceData);
- doCallRealMethod().when(mergeAnalysisMember).pushOne();
-
- Assert.assertEquals("segment_1", mergeAnalysisMember.pushOne().getId());
- Assert.assertEquals(null, mergeAnalysisMember.pushOne());
- }
-}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergePersistenceMemberTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergePersistenceMemberTestCase.java
index 263e0d6e7..f370eed67 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergePersistenceMemberTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergePersistenceMemberTestCase.java
@@ -2,7 +2,6 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
-import com.a.eye.skywalking.collector.queue.EndOfBatchCommand;
import com.a.eye.skywalking.collector.worker.mock.MockEsBulkClient;
import com.a.eye.skywalking.collector.worker.storage.EsClient;
import com.a.eye.skywalking.collector.worker.storage.MergeData;
@@ -53,7 +52,6 @@ public class MergePersistenceMemberTestCase {
MergeData mergeData = new MergeData(id);
mergeData.setMergeData("Column", "VALUE");
-// mergePersistenceMember.analyse(mergeData);
-// mergePersistenceMember.onWork(new EndOfBatchCommand());
+ mergePersistenceMember.analyse(mergeData);
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestMergeAnalysisMember.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestMergeAnalysisMember.java
index 9f9bdf94d..96cc8fd6a 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestMergeAnalysisMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestMergeAnalysisMember.java
@@ -3,6 +3,7 @@ package com.a.eye.skywalking.collector.worker;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.ProviderNotFoundException;
+import com.a.eye.skywalking.collector.actor.WorkerRefs;
import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
/**
@@ -25,8 +26,8 @@ public class TestMergeAnalysisMember extends MergeAnalysisMember {
}
@Override
- protected void aggregation() throws Exception {
-
+ protected WorkerRefs aggWorkRefs() {
+ return null;
}
public enum Role implements com.a.eye.skywalking.collector.actor.Role {
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/MetricDataMergeJson.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/MetricDataMergeJson.java
index 73d14278b..dab0829fb 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/MetricDataMergeJson.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/MetricDataMergeJson.java
@@ -2,7 +2,6 @@ package com.a.eye.skywalking.collector.worker.datamerge;
import com.a.eye.skywalking.collector.worker.Const;
import com.a.eye.skywalking.collector.worker.storage.MetricData;
-import com.a.eye.skywalking.collector.worker.storage.RecordData;
import com.a.eye.skywalking.collector.worker.tools.DateTools;
import com.a.eye.skywalking.collector.worker.tools.JsonFileReader;
import com.google.gson.Gson;
@@ -75,7 +74,7 @@ public enum MetricDataMergeJson {
Map recordDataMap = new HashMap<>();
Gson gson = new Gson();
for (MetricData metricData : recordDataList) {
- JsonObject jsonObject = gson.fromJson(gson.toJson(metricData.toMap()), JsonObject.class);
+ JsonObject jsonObject = gson.fromJson(gson.toJson(metricData.asMap()), JsonObject.class);
recordDataMap.put(id2UTCSlice(metricData.getId()), jsonObject);
}
return recordDataMap;
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalIdTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalIdTestCase.java
index 573edc74e..bf7ed4246 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalIdTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceGetWithGlobalIdTestCase.java
@@ -59,14 +59,15 @@ public class GlobalTraceGetWithGlobalIdTestCase {
@Test
public void testFactory() {
- Assert.assertEquals(GlobalTraceGetWithGlobalId.class.getSimpleName(), GlobalTraceGetWithGlobalId.Factory.INSTANCE.role().roleName());
- Assert.assertEquals(GlobalTraceGetWithGlobalId.class.getSimpleName(), GlobalTraceGetWithGlobalId.Factory.INSTANCE.workerInstance(null).getClass().getSimpleName());
- Assert.assertEquals("/globalTrace/globalId", GlobalTraceGetWithGlobalId.Factory.INSTANCE.servletPath());
+ GlobalTraceGetWithGlobalId.Factory factory = new GlobalTraceGetWithGlobalId.Factory();
+ Assert.assertEquals(GlobalTraceGetWithGlobalId.class.getSimpleName(), factory.role().roleName());
+ Assert.assertEquals(GlobalTraceGetWithGlobalId.class.getSimpleName(), factory.workerInstance(null).getClass().getSimpleName());
+ Assert.assertEquals("/globalTrace/globalId", factory.servletPath());
}
@Test
public void testPreStart() throws ProviderNotFoundException {
- when(clusterWorkerContext.findProvider(GlobalTraceSearchWithGlobalId.WorkerRole.INSTANCE)).thenReturn(GlobalTraceSearchWithGlobalId.Factory.INSTANCE);
+ when(clusterWorkerContext.findProvider(GlobalTraceSearchWithGlobalId.WorkerRole.INSTANCE)).thenReturn(new GlobalTraceSearchWithGlobalId.Factory());
ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(GlobalTraceSearchWithGlobalId.WorkerRole.class);
getObj.preStart();
@@ -94,7 +95,7 @@ public class GlobalTraceGetWithGlobalIdTestCase {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
- String globalId = (String)invocation.getArguments()[0];
+ String globalId = (String) invocation.getArguments()[0];
System.out.println(globalId);
Assert.assertEquals("Test", globalId);
return null;
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceSearchTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceSearchTestCase.java
index 5d480a9f0..f6619f33b 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceSearchTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceSearchTestCase.java
@@ -3,58 +3,53 @@ package com.a.eye.skywalking.collector.worker.globaltrace;
import com.a.eye.skywalking.collector.worker.globaltrace.persistence.GlobalTraceSearchWithGlobalId;
import com.a.eye.skywalking.collector.worker.segment.SegmentIndex;
import com.a.eye.skywalking.collector.worker.storage.EsClient;
+import com.a.eye.skywalking.collector.worker.storage.GetResponseFromEs;
import com.a.eye.skywalking.collector.worker.tools.JsonFileReader;
import com.google.gson.JsonObject;
-import org.elasticsearch.action.get.GetRequestBuilder;
import org.elasticsearch.action.get.GetResponse;
-import org.elasticsearch.client.Client;
import org.junit.Test;
import org.junit.runner.RunWith;
+import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PowerMockIgnore;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
-import static org.powermock.api.mockito.PowerMockito.*;
+import static org.powermock.api.mockito.PowerMockito.mock;
+import static org.powermock.api.mockito.PowerMockito.when;
/**
* @author pengys5
*/
@RunWith(PowerMockRunner.class)
-@PrepareForTest({EsClient.class})
+@PrepareForTest({EsClient.class, GetResponseFromEs.class})
@PowerMockIgnore("javax.management.*")
public class GlobalTraceSearchTestCase {
@Test
public void testSearchWithGlobalId() throws Exception {
- Client client = mock(Client.class);
- mockStatic(EsClient.class);
-// when(EsClient.INSTANCE.getClient()).thenReturn(client);
-
String globalTraceId = "Global.1";
- String segment_1 = "SEGMENT.1";
- String segment_2 = "SEGMENT.2";
+ String segment_1 = "Segment.1490922929258.927784221.5991.27.1";
-// String globalData = JsonFileReader.INSTANCE.read(this.getClass().getResource("/").getPath() + "/json/globaltrace/global.json");
-// mockSegment(client, GlobalTraceIndex.INDEX, GlobalTraceIndex.Type_Record, globalTraceId, globalData);
-//
-// String segment_1_Data = JsonFileReader.INSTANCE.read(this.getClass().getResource("/").getPath() + "/json/globaltrace/segment_1.json");
-// mockSegment(client, SegmentIndex.INDEX, SegmentIndex.Type_Record, segment_1, segment_1_Data);
-//
-// String segment_2_Data = JsonFileReader.INSTANCE.read(this.getClass().getResource("/").getPath() + "/json/globaltrace/segment_2.json");
-// mockSegment(client, SegmentIndex.INDEX, SegmentIndex.Type_Record, segment_2, segment_2_Data);
-//
-// GlobalTraceSearchWithGlobalId search = new GlobalTraceSearchWithGlobalId(null, null, null);
-//
-// JsonObject responseObj = new JsonObject();
+ GetResponseFromEs getResponseFromEs = PowerMockito.mock(GetResponseFromEs.class);
+ Whitebox.setInternalState(GetResponseFromEs.class, "INSTANCE", getResponseFromEs);
+
+ String globalData = JsonFileReader.INSTANCE.read(this.getClass().getResource("/").getPath() + "/json/globaltrace/persistence/globaltrace_search.json");
+ mockSegment(getResponseFromEs, GlobalTraceIndex.INDEX, GlobalTraceIndex.TYPE_RECORD, globalTraceId, globalData);
+
+ String segment_Data = JsonFileReader.INSTANCE.read(this.getClass().getResource("/").getPath() + "/json/globaltrace/persistence/globaltrace_segment.json");
+ mockSegment(getResponseFromEs, SegmentIndex.INDEX, SegmentIndex.TYPE_RECORD, segment_1, segment_Data);
+
+ GlobalTraceSearchWithGlobalId search = new GlobalTraceSearchWithGlobalId(null, null, null);
+
+ JsonObject responseObj = new JsonObject();
// search.allocateJob(globalTraceId, responseObj);
// System.out.println(responseObj);
}
- private void mockSegment(Client client, String index, String type, String segmentId, String source) {
- GetRequestBuilder builder = mock(GetRequestBuilder.class);
- when(client.prepareGet(index, type, segmentId)).thenReturn(builder);
- GetResponse response = mock(GetResponse.class);
- when(builder.get()).thenReturn(response);
- when(response.getSourceAsString()).thenReturn(source);
+ private void mockSegment(GetResponseFromEs getResponseFromEs, String index, String type, String id, String source) {
+ GetResponse getResponse = mock(GetResponse.class);
+ when(getResponseFromEs.get(index, type, id)).thenReturn(getResponse);
+ when(getResponse.getSourceAsString()).thenReturn(source);
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysisTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysisTestCase.java
index 1c95619d4..381bd809b 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysisTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/analysis/GlobalTraceAnalysisTestCase.java
@@ -62,12 +62,13 @@ public class GlobalTraceAnalysisTestCase {
@Test
public void testFactory() {
- Assert.assertEquals(GlobalTraceAnalysis.class.getSimpleName(), GlobalTraceAnalysis.Factory.INSTANCE.role().roleName());
- Assert.assertEquals(GlobalTraceAnalysis.class.getSimpleName(), GlobalTraceAnalysis.Factory.INSTANCE.workerInstance(null).getClass().getSimpleName());
+ GlobalTraceAnalysis.Factory factory = new GlobalTraceAnalysis.Factory();
+ Assert.assertEquals(GlobalTraceAnalysis.class.getSimpleName(), factory.role().roleName());
+ Assert.assertEquals(GlobalTraceAnalysis.class.getSimpleName(), factory.workerInstance(null).getClass().getSimpleName());
int testSize = 10;
WorkerConfig.Queue.GlobalTrace.GlobalTraceAnalysis.SIZE = testSize;
- Assert.assertEquals(testSize, GlobalTraceAnalysis.Factory.INSTANCE.queueSize());
+ Assert.assertEquals(testSize, factory.queueSize());
}
@Test
@@ -77,7 +78,7 @@ public class GlobalTraceAnalysisTestCase {
Assert.assertEquals(1, answer.getMergeDataList().size());
MergeData mergeData = answer.getMergeDataList().get(0);
Assert.assertEquals(id, mergeData.getId());
- String subSegIds = mergeData.toMap().get("subSegIds");
+ String subSegIds = mergeData.asMap().get("subSegIds").toString();
Assert.assertEquals(cacheServiceSubSegIds, subSegIds);
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAggTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAggTestCase.java
index cc7050553..48dcce9a1 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAggTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceAggTestCase.java
@@ -61,17 +61,18 @@ public class GlobalTraceAggTestCase {
@Test
public void testFactory() {
- Assert.assertEquals(GlobalTraceAgg.class.getSimpleName(), GlobalTraceAgg.Factory.INSTANCE.role().roleName());
- Assert.assertEquals(GlobalTraceAgg.class.getSimpleName(), GlobalTraceAgg.Factory.INSTANCE.workerInstance(null).getClass().getSimpleName());
+ GlobalTraceAgg.Factory factory = new GlobalTraceAgg.Factory();
+ Assert.assertEquals(GlobalTraceAgg.class.getSimpleName(), factory.role().roleName());
+ Assert.assertEquals(GlobalTraceAgg.class.getSimpleName(), factory.workerInstance(null).getClass().getSimpleName());
int testSize = 10;
WorkerConfig.WorkerNum.GlobalTrace.GlobalTraceAgg.VALUE = testSize;
- Assert.assertEquals(testSize, GlobalTraceAgg.Factory.INSTANCE.workerNum());
+ Assert.assertEquals(testSize, factory.workerNum());
}
@Test
public void testPreStart() throws ProviderNotFoundException {
- when(clusterWorkerContext.findProvider(GlobalTraceSave.Role.INSTANCE)).thenReturn(GlobalTraceSave.Factory.INSTANCE);
+ when(clusterWorkerContext.findProvider(GlobalTraceSave.Role.INSTANCE)).thenReturn(new GlobalTraceSave.Factory());
ArgumentCaptor argumentCaptor = ArgumentCaptor.forClass(GlobalTraceSave.Role.class);
agg.preStart();
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSaveTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSaveTestCase.java
index 9843bcf2b..230290195 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSaveTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSaveTestCase.java
@@ -3,7 +3,6 @@ package com.a.eye.skywalking.collector.worker.globaltrace.persistence;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
import com.a.eye.skywalking.collector.actor.selector.HashCodeSelector;
-import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.globaltrace.GlobalTraceIndex;
import org.junit.Assert;
import org.junit.Before;
@@ -46,11 +45,8 @@ public class GlobalTraceSaveTestCase {
@Test
public void testFactory() {
- Assert.assertEquals(GlobalTraceSave.class.getSimpleName(), GlobalTraceSave.Factory.INSTANCE.role().roleName());
- Assert.assertEquals(GlobalTraceSave.class.getSimpleName(), GlobalTraceSave.Factory.INSTANCE.workerInstance(null).getClass().getSimpleName());
-
- int testSize = 10;
- WorkerConfig.Queue.GlobalTrace.GlobalTraceSave.SIZE = testSize;
- Assert.assertEquals(testSize, GlobalTraceSave.Factory.INSTANCE.queueSize());
+ GlobalTraceSave.Factory factory = new GlobalTraceSave.Factory();
+ Assert.assertEquals(GlobalTraceSave.class.getSimpleName(), factory.role().roleName());
+ Assert.assertEquals(GlobalTraceSave.class.getSimpleName(), factory.workerInstance(null).getClass().getSimpleName());
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdTestCase.java
index f887aa6e2..dc1f7a421 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdTestCase.java
@@ -53,8 +53,9 @@ public class GlobalTraceSearchWithGlobalIdTestCase {
@Test
public void testFactory() {
- Assert.assertEquals(GlobalTraceSearchWithGlobalId.class.getSimpleName(), GlobalTraceSearchWithGlobalId.Factory.INSTANCE.role().roleName());
- Assert.assertEquals(GlobalTraceSearchWithGlobalId.class.getSimpleName(), GlobalTraceSearchWithGlobalId.Factory.INSTANCE.workerInstance(null).getClass().getSimpleName());
+ GlobalTraceSearchWithGlobalId.Factory factory = new GlobalTraceSearchWithGlobalId.Factory();
+ Assert.assertEquals(GlobalTraceSearchWithGlobalId.class.getSimpleName(), factory.role().roleName());
+ Assert.assertEquals(GlobalTraceSearchWithGlobalId.class.getSimpleName(), factory.workerInstance(null).getClass().getSimpleName());
}
@Test
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdUseDB.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdUseDB.java
index b23cc9faf..d68a6f044 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdUseDB.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/persistence/GlobalTraceSearchWithGlobalIdUseDB.java
@@ -2,8 +2,6 @@ package com.a.eye.skywalking.collector.worker.globaltrace.persistence;
import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
-import com.a.eye.skywalking.collector.worker.node.NodeMappingIndex;
-import com.a.eye.skywalking.collector.worker.node.persistence.NodeMappingSearchWithTimeSlice;
import com.a.eye.skywalking.collector.worker.storage.EsClient;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/AbstractPostTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/AbstractPostTestCase.java
index d54e85de6..3c0bf7af8 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/AbstractPostTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/AbstractPostTestCase.java
@@ -41,6 +41,6 @@ public class AbstractPostTestCase {
@Test
public void testOnWorkError() throws Exception {
post.onWork(new JsonObject());
-// PowerMockito.verifyPrivate(post).invoke("saveException", any(IllegalArgumentException.class));
+ PowerMockito.verifyPrivate(post).invoke("saveException", any(IllegalArgumentException.class));
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/mock/MergeDataAnswer.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/mock/MergeDataAnswer.java
index cad7c474f..cb163e650 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/mock/MergeDataAnswer.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/mock/MergeDataAnswer.java
@@ -20,9 +20,9 @@ public class MergeDataAnswer implements Answer