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/AbstractClusterWorker.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorker.java
index 5775bea81..a7e5ddf49 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorker.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorker.java
@@ -7,7 +7,7 @@ import akka.cluster.Member;
import akka.cluster.MemberStatus;
import com.a.eye.skywalking.collector.cluster.WorkerListenerMessage;
import com.a.eye.skywalking.collector.cluster.WorkersListener;
-import org.apache.logging.log4j.LogManager;
+import com.a.eye.skywalking.collector.log.LogManager;
import org.apache.logging.log4j.Logger;
/**
@@ -52,7 +52,7 @@ public abstract class AbstractClusterWorker extends AbstractWorker {
protected abstract void onWork(Object message) throws Exception;
static class WorkerWithAkka extends UntypedActor {
- private Logger logger = LogManager.getFormatterLogger(WorkerWithAkka.class);
+ private Logger logger = LogManager.INSTANCE.getFormatterLogger(WorkerWithAkka.class);
private Cluster cluster;
private final AbstractClusterWorker ownerWorker;
diff --git a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorker.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorker.java
index e5a5f8a03..81d5774df 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorker.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/actor/AbstractWorker.java
@@ -1,9 +1,15 @@
package com.a.eye.skywalking.collector.actor;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+
/**
* @author pengys5
*/
public abstract class AbstractWorker {
+
+ private final Logger logger;
+
private final LocalWorkerContext selfContext;
private final Role role;
@@ -14,6 +20,11 @@ public abstract class AbstractWorker {
this.role = role;
this.clusterContext = clusterContext;
this.selfContext = selfContext;
+ this.logger = LogManager.getFormatterLogger(role.roleName());
+ }
+
+ final public Logger logger() {
+ return logger;
}
public abstract void preStart() throws ProviderNotFoundException;
@@ -35,6 +46,6 @@ public abstract class AbstractWorker {
}
final protected void saveException(Exception e) {
-// e.printStackTrace();
+ logger().error(e);
}
}
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-cluster/src/main/java/com/a/eye/skywalking/collector/log/LogManager.java b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/log/LogManager.java
new file mode 100644
index 000000000..c374de557
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/main/java/com/a/eye/skywalking/collector/log/LogManager.java
@@ -0,0 +1,14 @@
+package com.a.eye.skywalking.collector.log;
+
+import org.apache.logging.log4j.Logger;
+
+/**
+ * @author pengys5
+ */
+public enum LogManager {
+ INSTANCE;
+
+ public Logger getFormatterLogger(final Class> clazz) {
+ return org.apache.logging.log4j.LogManager.getFormatterLogger(clazz);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorkerProviderTestCase.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorkerProviderTestCase.java
new file mode 100644
index 000000000..6b6927217
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorkerProviderTestCase.java
@@ -0,0 +1,58 @@
+package com.a.eye.skywalking.collector.actor;
+
+import akka.actor.ActorSystem;
+import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
+import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
+import com.a.eye.skywalking.collector.log.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.mockito.Mockito;
+import org.powermock.reflect.Whitebox;
+
+/**
+ * @author pengys5
+ */
+//@RunWith(PowerMockRunner.class)
+//@PrepareForTest({LogManager.class})
+public class AbstractClusterWorkerProviderTestCase {
+
+// @Test
+ public void testOnCreate() throws ProviderNotFoundException {
+ LogManager logManager = Mockito.mock(LogManager.class);
+ Whitebox.setInternalState(LogManager.class, "INSTANCE", logManager);
+ Logger logger = Mockito.mock(Logger.class);
+ Mockito.when(logManager.getFormatterLogger(Mockito.any())).thenReturn(logger);
+
+ ActorSystem actorSystem = Mockito.mock(ActorSystem.class);
+ ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(actorSystem);
+ Impl impl = new Impl();
+ impl.onCreate(null);
+ }
+
+ class Impl extends AbstractClusterWorkerProvider {
+ @Override public Role role() {
+ return Role.INSTANCE;
+ }
+
+ @Override public AbstractClusterWorkerTestCase.Impl workerInstance(ClusterWorkerContext clusterContext) {
+ return new AbstractClusterWorkerTestCase.Impl(role(), clusterContext, new LocalWorkerContext());
+ }
+
+ @Override public int workerNum() {
+ return 0;
+ }
+ }
+
+ enum Role implements com.a.eye.skywalking.collector.actor.Role {
+ INSTANCE;
+
+ @Override
+ public String roleName() {
+ return AbstractClusterWorkerTestCase.Impl.class.getSimpleName();
+ }
+
+ @Override
+ public WorkerSelector workerSelector() {
+ return new RollingSelector();
+ }
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorkerTestCase.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorkerTestCase.java
index 968ff41ed..96c2de6ea 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorkerTestCase.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/AbstractClusterWorkerTestCase.java
@@ -1,21 +1,99 @@
package com.a.eye.skywalking.collector.actor;
+import akka.actor.Address;
+import akka.cluster.ClusterEvent;
+import akka.cluster.Member;
+import com.a.eye.skywalking.collector.actor.selector.RollingSelector;
+import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
+import org.apache.logging.log4j.Logger;
+import org.junit.Before;
import org.junit.Test;
-import org.mockito.Mockito;
+import org.junit.runner.RunWith;
import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.powermock.reflect.Whitebox;
+
+import static org.mockito.Mockito.CALLS_REAL_METHODS;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
/**
* @author pengys5
*/
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({ClusterEvent.MemberUp.class, Address.class})
public class AbstractClusterWorkerTestCase {
+ private AbstractClusterWorker.WorkerWithAkka workerWithAkka = mock(AbstractClusterWorker.WorkerWithAkka.class, CALLS_REAL_METHODS);
+ private AbstractClusterWorker worker = PowerMockito.spy(new Impl(WorkerRole.INSTANCE, null, null));
+
+ @Before
+ public void init(){
+ Logger logger = mock(Logger.class);
+ Whitebox.setInternalState(workerWithAkka, "logger", logger);
+ Whitebox.setInternalState(workerWithAkka, "ownerWorker", worker);
+ }
+
@Test
public void testAllocateJob() throws Exception {
- AbstractClusterWorker worker = PowerMockito.mock(AbstractClusterWorker.class);
String jobStr = "TestJob";
worker.allocateJob(jobStr);
- Mockito.verify(worker).onWork(jobStr);
+ verify(worker).onWork(jobStr);
+ }
+
+ @Test
+ public void testMemberUp() throws Throwable {
+ ClusterEvent.MemberUp memberUp = mock(ClusterEvent.MemberUp.class);
+
+ Address address = mock(Address.class);
+ when(address.toString()).thenReturn("address");
+
+ Member member = mock(Member.class);
+ when(member.address()).thenReturn(address);
+
+ when(memberUp.member()).thenReturn(member);
+
+ workerWithAkka.onReceive(memberUp);
+
+ verify(workerWithAkka).register(member);
+ }
+
+ @Test
+ public void testMessage() throws Throwable {
+ String message = "test";
+ workerWithAkka.onReceive(message);
+
+ verify(worker).allocateJob(message);
+ }
+
+ static class Impl extends AbstractClusterWorker {
+ @Override public void preStart() throws ProviderNotFoundException {
+ }
+
+ public Impl(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ super(role, clusterContext, selfContext);
+ }
+
+ @Override protected void onWork(Object message) throws Exception {
+
+ }
+ }
+
+ public enum WorkerRole implements Role {
+ INSTANCE;
+
+ @Override
+ public String roleName() {
+ return Impl.class.getSimpleName();
+ }
+
+ @Override
+ public WorkerSelector workerSelector() {
+ return new RollingSelector();
+ }
}
}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/selector/AbstractHashMessageTestCase.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/selector/AbstractHashMessageTestCase.java
new file mode 100644
index 000000000..f3a66c952
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/selector/AbstractHashMessageTestCase.java
@@ -0,0 +1,24 @@
+package com.a.eye.skywalking.collector.actor.selector;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pengys5
+ */
+public class AbstractHashMessageTestCase {
+
+ @Test
+ public void testGetHashCode() {
+ String key = "key";
+
+ Impl impl = new Impl(key);
+ Assert.assertEquals(key.hashCode(), impl.getHashCode());
+ }
+
+ class Impl extends AbstractHashMessage {
+ public Impl(String key) {
+ super(key);
+ }
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelectorTestCase.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelectorTestCase.java
index 13cfda87c..9a71c6b19 100644
--- a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelectorTestCase.java
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/actor/selector/HashCodeSelectorTestCase.java
@@ -46,4 +46,10 @@ public class HashCodeSelectorTestCase {
WorkerRef select_3 = selector.select(members, message_3);
Assert.assertEquals(workerRef_3.hashCode(), select_3.hashCode());
}
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testSelectError() {
+ HashCodeSelector selector = new HashCodeSelector();
+ selector.select(null, new Object());
+ }
}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/log/MockLog.java b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/log/MockLog.java
new file mode 100644
index 000000000..313fa0463
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-cluster/src/test/java/com/a/eye/skywalking/collector/log/MockLog.java
@@ -0,0 +1,18 @@
+package com.a.eye.skywalking.collector.log;
+
+import org.apache.logging.log4j.Logger;
+import org.mockito.Mockito;
+import org.powermock.api.mockito.PowerMockito;
+
+/**
+ * @author pengys5
+ */
+public class MockLog {
+
+ public Logger mockito() {
+ LogManager logManager = PowerMockito.mock(LogManager.class);
+ Logger logger = Mockito.mock(Logger.class);
+ Mockito.when(logManager.getFormatterLogger(Mockito.any())).thenReturn(logger);
+ return logger;
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-cluster/src/test/resources/application.conf b/skywalking-collector/skywalking-collector-cluster/src/test/resources/application.conf
deleted file mode 100644
index 63ff45216..000000000
--- a/skywalking-collector/skywalking-collector-cluster/src/test/resources/application.conf
+++ /dev/null
@@ -1,37 +0,0 @@
-akka {
- actor {
- provider = "akka.cluster.ClusterActorRefProvider"
-
- serializers {
- java = "akka.serialization.JavaSerializer"
- proto = "akka.remote.serialization.ProtobufSerializer"
-// data = "com.a.eye.skywalking.collector.worker.TraceSegmentSerializer"
-// json = "com.a.eye.skywalking.collector.commons.serializer.JsonSerializer"
- }
-
- serialization-bindings {
- "java.lang.String" = java
- "com.google.protobuf.Message" = proto
-// "com.a.eye.skywalking.messages.ISerializable" = data
-// "com.google.gson.JsonObject" = json
- // "java.io.Serializable" = none
- }
-
- // serialize-messages = on
- warn-about-java-serializer-usage = on
- }
-
- remote {
- log-remote-lifecycle-events = off
-
- netty.tcp {
- hostname = "127.0.0.1"
- port = 1000
- }
- }
-
- cluster {
- auto-down-unreachable-after = off
- metrics.enabled = off
- }
-}
\ No newline at end of file
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/JoinAndSplitAnalysisMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/JoinAndSplitAnalysisMember.java
new file mode 100644
index 000000000..92f61295e
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/JoinAndSplitAnalysisMember.java
@@ -0,0 +1,41 @@
+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.actor.WorkerRefs;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitAnalysisData;
+
+/**
+ * @author pengys5
+ */
+public abstract class JoinAndSplitAnalysisMember extends AnalysisMember {
+ private JoinAndSplitAnalysisData joinAndSplitAnalysisData;
+
+ public JoinAndSplitAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ super(role, clusterContext, selfContext);
+ joinAndSplitAnalysisData = new JoinAndSplitAnalysisData();
+ }
+
+ private JoinAndSplitAnalysisData getJoinAndSplitAnalysisData() {
+ return joinAndSplitAnalysisData;
+ }
+
+ final protected void set(String id, String attributeName, String value) throws Exception {
+ getJoinAndSplitAnalysisData().getOrCreate(id).set(attributeName, value);
+ }
+
+ @Override
+ final protected void aggregation() throws Exception {
+ getJoinAndSplitAnalysisData().asMap().forEach((key, value) -> {
+ try {
+ aggWorkRefs().tell(value);
+ } catch (Exception e) {
+ logger().error(e);
+ }
+ });
+ getJoinAndSplitAnalysisData().asMap().clear();
+ }
+
+ protected abstract WorkerRefs aggWorkRefs();
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/JoinAndSplitPersistenceMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/JoinAndSplitPersistenceMember.java
new file mode 100644
index 000000000..81b9f27a7
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/JoinAndSplitPersistenceMember.java
@@ -0,0 +1,58 @@
+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.storage.EsClient;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitData;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitPersistenceData;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.client.Client;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author pengys5
+ */
+public abstract class JoinAndSplitPersistenceMember extends PersistenceMember {
+
+ private Logger logger = LogManager.getFormatterLogger(JoinAndSplitPersistenceMember.class);
+
+ protected JoinAndSplitPersistenceMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ super(role, clusterContext, selfContext);
+ }
+
+ @Override
+ public JoinAndSplitPersistenceData initializeData() {
+ return new JoinAndSplitPersistenceData();
+ }
+
+ @Override
+ final public void analyse(Object message) throws Exception {
+ if (message instanceof JoinAndSplitData) {
+ JoinAndSplitData joinAndSplitData = (JoinAndSplitData) message;
+ JoinAndSplitPersistenceData data = getPersistenceData();
+ data.hold();
+ data.getOrCreate(joinAndSplitData.getId()).merge(joinAndSplitData);
+ data.release();
+ } else {
+ logger.error("unhandled message, message instance must JoinAndSplitData, but is %s", message.getClass().toString());
+ }
+ }
+
+ @Override
+ final protected void prepareIndex(List builderList) {
+ Map lastData = getPersistenceData().getLast().asMap();
+ extractData(lastData);
+
+ Client client = EsClient.INSTANCE.getClient();
+ 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/MergeAnalysisMember.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMember.java
deleted file mode 100644
index 9864a5e29..000000000
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergeAnalysisMember.java
+++ /dev/null
@@ -1,39 +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.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;
-
-/**
- * @author pengys5
- */
-public abstract class MergeAnalysisMember extends AnalysisMember {
-
- private MergePersistenceData persistenceData;
-
- protected MergeAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
- super(role, clusterContext, selfContext);
- persistenceData = new MergePersistenceData();
- }
-
- private MergePersistenceData getPersistenceData() {
- return persistenceData;
- }
-
- 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();
- }
- }
-
- final public MergeData pushOne() {
- if (getPersistenceData().iterator().hasNext()) {
- return getPersistenceData().pushOne();
- }
- return null;
- }
-}
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
deleted file mode 100644
index f6d7ebf75..000000000
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/MergePersistenceMember.java
+++ /dev/null
@@ -1,95 +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.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.client.Client;
-
-import java.util.Iterator;
-import java.util.Map;
-
-/**
- * @author pengys5
- */
-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 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();
- }
- } else {
- logger.error("message unhandled");
- }
- }
-
- 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());
- }
- }
-
- 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();
- }
-}
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..51d1e64e3 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();
- }
+ final protected void set(String id, String metricName, Long value) throws Exception {
+ getMetricAnalysisData().getOrCreate(id).set(metricName, 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..520b100ef 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,55 @@ 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.MetricPersistenceData;
+import java.util.List;
+import java.util.Map;
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.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.hold();
+ data.getOrCreate(metricData.getId()).merge(metricData);
+ data.release();
} 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..137b9698d 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,33 +3,43 @@ 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;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
*/
public abstract class RecordAnalysisMember extends AnalysisMember {
- private RecordPersistenceData persistenceData = new RecordPersistenceData();
+ private Logger logger = LogManager.getFormatterLogger(RecordAnalysisMember.class);
+
+ 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();
- }
+ final public void set(String id, JsonObject record) throws Exception {
+ getRecordAnalysisData().getOrCreate(id).set(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) {
+ logger.error(e);
+ }
+ });
+ 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..ec0f56095 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,52 @@ 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.RecordData;
import com.a.eye.skywalking.collector.worker.storage.RecordPersistenceData;
-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.client.Client;
-
-import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.client.Client;
/**
* @author pengys5
*/
-public abstract class RecordPersistenceMember extends PersistenceMember {
-
- private Logger logger = LogManager.getFormatterLogger(RecordPersistenceMember.class);
-
- private RecordPersistenceData persistenceData;
+public abstract class RecordPersistenceMember extends PersistenceMember {
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;
- 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();
- }
+ RecordData recordData = (RecordData) message;
+ logger().debug("set: id: %s, data: %s", recordData.getId(), recordData.get());
+ RecordPersistenceData data = getPersistenceData();
+ data.hold();
+ data.getOrCreate(recordData.getId()).set(recordData.get());
+ data.release();
} else {
- logger.error("message unhandled");
+ 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.get().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..760fa5516 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,14 +25,18 @@ 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()
.startObject()
.startObject("properties")
.startObject(SUB_SEG_IDS)
- .field("type", "text")
- .field("index", "not_analyzed")
+ .field("type", "keyword")
.endObject()
.endObject()
.endObject();
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..27a72d1fe 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,26 +1,27 @@
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;
+import com.a.eye.skywalking.collector.worker.JoinAndSplitAnalysisMember;
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.globaltrace.persistence.GlobalTraceAgg;
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;
/**
* @author pengys5
*/
-public class GlobalTraceAnalysis extends MergeAnalysisMember {
+public class GlobalTraceAnalysis extends JoinAndSplitAnalysisMember {
+
+ private Logger logger = LogManager.getFormatterLogger(GlobalTraceAnalysis.class);
GlobalTraceAnalysis(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
@@ -36,23 +37,25 @@ public class GlobalTraceAnalysis extends MergeAnalysisMember {
if (CollectionTools.isNotEmpty(globalTraceIdList)) {
for (GlobalTraceId disTraceId : globalTraceIdList) {
String traceId = disTraceId.get();
- setMergeData(traceId, GlobalTraceIndex.SUB_SEG_IDS, subSegmentId);
+ set(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..5335b20c4 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
@@ -4,7 +4,7 @@ import com.a.eye.skywalking.collector.actor.*;
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.MergeData;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitData;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
@@ -27,16 +27,14 @@ public class GlobalTraceAgg extends AbstractClusterWorker {
@Override
protected void onWork(Object message) throws Exception {
- if (message instanceof MergeData) {
+ if (message instanceof JoinAndSplitData) {
getSelfContext().lookup(GlobalTraceSave.Role.INSTANCE).tell(message);
} else {
- logger.error("message unhandled");
+ logger.error("unhandled message, message instance must JoinAndSplitData, 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..e5d91a38f 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,21 +1,21 @@
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.JoinAndSplitPersistenceMember;
import com.a.eye.skywalking.collector.worker.globaltrace.GlobalTraceIndex;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
/**
* @author pengys5
*/
-public class GlobalTraceSave extends MergePersistenceMember {
+public class GlobalTraceSave extends JoinAndSplitPersistenceMember {
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..62a4442dd 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
@@ -8,7 +8,7 @@ import com.a.eye.skywalking.collector.worker.globaltrace.GlobalTraceIndex;
import com.a.eye.skywalking.collector.worker.segment.SegmentIndex;
import com.a.eye.skywalking.collector.worker.segment.entity.*;
import com.a.eye.skywalking.collector.worker.storage.GetResponseFromEs;
-import com.a.eye.skywalking.collector.worker.storage.MergeData;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitData;
import com.a.eye.skywalking.collector.worker.tools.CollectionTools;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
@@ -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);
}
@@ -41,7 +41,7 @@ public class GlobalTraceSearchWithGlobalId extends AbstractLocalSyncWorker {
logger.debug("globalTraceObj: %s", globalTraceObj);
String subSegIdsStr = globalTraceObj.get(GlobalTraceIndex.SUB_SEG_IDS).getAsString();
- String[] subSegIds = subSegIdsStr.split(MergeData.SPLIT);
+ String[] subSegIds = subSegIdsStr.split(JoinAndSplitData.SPLIT);
List spanViewList = new ArrayList<>();
for (String subSegId : subSegIds) {
@@ -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/httpserver/AbstractPost.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/httpserver/AbstractPost.java
index e2c39dd0c..90c945b29 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/httpserver/AbstractPost.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/httpserver/AbstractPost.java
@@ -1,15 +1,20 @@
package com.a.eye.skywalking.collector.worker.httpserver;
-import com.a.eye.skywalking.collector.actor.*;
+import com.a.eye.skywalking.collector.actor.AbstractLocalAsyncWorker;
+import com.a.eye.skywalking.collector.actor.ClusterWorkerContext;
+import com.a.eye.skywalking.collector.actor.LocalAsyncWorkerRef;
+import com.a.eye.skywalking.collector.actor.LocalWorkerContext;
+import com.a.eye.skywalking.collector.actor.Role;
import com.a.eye.skywalking.collector.worker.segment.entity.Segment;
import com.google.gson.JsonObject;
import com.google.gson.stream.JsonReader;
-
+import java.io.BufferedReader;
+import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedReader;
-import java.io.IOException;
+import org.apache.logging.log4j.LogManager;
+import org.apache.logging.log4j.Logger;
/**
* @author pengys5
@@ -21,8 +26,7 @@ public abstract class AbstractPost extends AbstractLocalAsyncWorker {
super(role, clusterContext, selfContext);
}
- @Override
- final public void onWork(Object message) throws Exception {
+ @Override final public void onWork(Object message) throws Exception {
onReceive(message);
}
@@ -30,21 +34,23 @@ public abstract class AbstractPost extends AbstractLocalAsyncWorker {
static class PostWithHttpServlet extends AbstractHttpServlet {
+ private Logger logger = LogManager.getFormatterLogger(PostWithHttpServlet.class);
+
private final LocalAsyncWorkerRef ownerWorkerRef;
PostWithHttpServlet(LocalAsyncWorkerRef ownerWorkerRef) {
this.ownerWorkerRef = ownerWorkerRef;
}
- @Override
- final protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+ @Override final protected void doPost(HttpServletRequest request,
+ HttpServletResponse response) throws ServletException, IOException {
JsonObject resJson = new JsonObject();
try {
BufferedReader bufferedReader = request.getReader();
streamReader(bufferedReader);
reply(response, resJson, HttpServletResponse.SC_OK);
} catch (Exception e) {
- e.printStackTrace();
+ logger.error(e);
resJson.addProperty("error", e.getMessage());
reply(response, resJson, HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
}
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..3c9995505 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,27 @@ 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", "keyword")
+ .endObject()
+ .startObject(PEERS)
+ .field("type", "keyword")
+ .endObject()
+ .startObject(AGG_COLUMN)
+ .field("type", "keyword")
+ .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..81c155816 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));
@@ -43,7 +43,7 @@ abstract class AbstractNodeCompAnalysis extends RecordAnalysisMember {
compJsonObj.addProperty(NodeCompIndex.PEERS, peers);
compJsonObj.addProperty(NodeCompIndex.NAME, Tags.COMPONENT.get(span));
- setRecord(peers, compJsonObj);
+ set(peers, compJsonObj);
} else if (Tags.SPAN_KIND_SERVER.equals(kind) && span.getParentSpanId() == -1) {
String peers = segment.getApplicationCode();
@@ -51,9 +51,7 @@ abstract class AbstractNodeCompAnalysis extends RecordAnalysisMember {
compJsonObj.addProperty(NodeCompIndex.PEERS, peers);
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());
+ set(peers, compJsonObj);
}
}
}
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..59c43b49d 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));
@@ -42,7 +42,7 @@ abstract class AbstractNodeMappingAnalysis extends RecordAnalysisMember {
nodeMappingJsonObj.addProperty(NodeMappingIndex.TIME_SLICE, timeSlice);
String id = timeSlice + Const.ID_SPLIT + code + Const.ID_SPLIT + peers;
- setRecord(id, nodeMappingJsonObj);
+ set(id, nodeMappingJsonObj);
}
}
}
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..1c268b2ee 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,30 +27,32 @@ 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")
+ .field("type", "keyword")
.endObject()
.startObject(FRONT_IS_REAL_CODE)
.field("type", "boolean")
.field("index", "not_analyzed")
.endObject()
.startObject(BEHIND)
- .field("type", "string")
- .field("index", "not_analyzed")
+ .field("type", "keyword")
.endObject()
.startObject(BEHIND_IS_REAL_CODE)
.field("type", "boolean")
.field("index", "not_analyzed")
.endObject()
.startObject(AGG_COLUMN)
- .field("type", "string")
- .field("index", "not_analyzed")
+ .field("type", "keyword")
.endObject()
.startObject(TIME_SLICE)
.field("type", "long")
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..796deb1b5 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,49 @@ 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", "keyword")
+ .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/AbstractNodeRefAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/AbstractNodeRefAnalysis.java
index 328319c2e..2fd6b5ba7 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/AbstractNodeRefAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/AbstractNodeRefAnalysis.java
@@ -49,7 +49,7 @@ abstract class AbstractNodeRefAnalysis extends RecordAnalysisMember {
String id = timeSlice + Const.ID_SPLIT + front + Const.ID_SPLIT + behind;
logger.debug("dag node ref: %s", dataJsonObj.toString());
- setRecord(id, dataJsonObj);
+ set(id, dataJsonObj);
buildNodeRefResRecordData(id, span, minute, hour, day, second);
} else if (Tags.SPAN_KIND_SERVER.equals(Tags.SPAN_KIND.get(span))) {
if (span.getParentSpanId() == -1 && CollectionTools.isEmpty(segment.getRefs())) {
@@ -60,7 +60,7 @@ abstract class AbstractNodeRefAnalysis extends RecordAnalysisMember {
dataJsonObj.addProperty(NodeRefIndex.FRONT, front);
String id = timeSlice + Const.ID_SPLIT + front + Const.ID_SPLIT + behind;
- setRecord(id, dataJsonObj);
+ set(id, dataJsonObj);
buildNodeRefResRecordData(id, span, minute, hour, day, second);
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/AbstractNodeRefResSumAnalysis.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/AbstractNodeRefResSumAnalysis.java
index d0068831d..ac57873c7 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/AbstractNodeRefResSumAnalysis.java
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/noderef/analysis/AbstractNodeRefResSumAnalysis.java
@@ -22,23 +22,23 @@ abstract class AbstractNodeRefResSumAnalysis extends MetricAnalysisMember {
boolean isError = nodeRefRes.isError;
long cost = endTime - startTime;
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.ONE_SECOND_LESS, 0L);
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.THREE_SECOND_LESS, 0L);
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_LESS, 0L);
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_GREATER, 0L);
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.ERROR, 0L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ONE_SECOND_LESS, 0L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.THREE_SECOND_LESS, 0L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_LESS, 0L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_GREATER, 0L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ERROR, 0L);
if (cost <= 1000 && !isError) {
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.ONE_SECOND_LESS, 1L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ONE_SECOND_LESS, 1L);
} else if (1000 < cost && cost <= 3000 && !isError) {
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.THREE_SECOND_LESS, 1L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.THREE_SECOND_LESS, 1L);
} else if (3000 < cost && cost <= 5000 && !isError) {
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_LESS, 1L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_LESS, 1L);
} else if (5000 < cost && !isError) {
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_GREATER, 1L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.FIVE_SECOND_GREATER, 1L);
} else {
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.ERROR, 1L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.ERROR, 1L);
}
- setMetric(nodeRefRes.nodeRefId, NodeRefResSumIndex.SUMMARY, 1L);
+ set(nodeRefRes.nodeRefId, NodeRefResSumIndex.SUMMARY, 1L);
}
public static class NodeRefResRecord extends AbstractTimeSlice {
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..823b43f82 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,35 @@ 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", "keyword")
+ .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", "keyword")
+ .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..54b199ac4 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,28 @@ 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", "keyword")
+ .endObject()
+ .startObject(IS_ERROR)
+ .field("type", "boolean")
+ .field("index", "not_analyzed")
+ .endObject()
+ .startObject(ERROR_KIND)
+ .field("type", "keyword")
+ .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..56a3a995b 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,43 @@ 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", "keyword")
+ .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", "keyword")
+ .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..85c01dd83
--- /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);
+ set(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..f7df85b47
--- /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);
+ set(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..203e4798e 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,34 +1,29 @@
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 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.client.Client;
-
-import java.util.LinkedHashMap;
+import com.a.eye.skywalking.collector.worker.storage.PersistenceWorkerListener;
+import com.a.eye.skywalking.collector.worker.storage.SegmentData;
+import com.a.eye.skywalking.collector.worker.storage.SegmentPersistenceData;
+import java.util.LinkedList;
+import java.util.List;
import java.util.Map;
+import org.elasticsearch.action.index.IndexRequestBuilder;
+import org.elasticsearch.client.Client;
/**
* @author pengys5
*/
-public class SegmentSave extends RecordPersistenceMember {
-
- private Logger logger = LogManager.getFormatterLogger(SegmentSave.class);
-
- private Map persistenceData = new LinkedHashMap<>();
+public class SegmentSave extends PersistenceMember {
@Override
public String esIndex() {
@@ -46,56 +41,60 @@ public class SegmentSave extends RecordPersistenceMember {
}
@Override
- 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();
- }
- } else {
- logger.error("unhandled message, message instance must JsonObject, but is %s", message.getClass().toString());
- }
+ public SegmentPersistenceData initializeData() {
+ return new SegmentPersistenceData();
}
@Override
- protected void persistence() {
- boolean success = saveToEs();
- if (success) {
- persistenceData.clear();
+ final public void analyse(Object message) throws Exception {
+ if (message instanceof Segment) {
+ Segment segment = (Segment) message;
+ SegmentPersistenceData data = getPersistenceData();
+ data.hold();
+ data.getOrCreate(segment.getTraceSegmentId()).setSegmentStr(segment.getJsonStr());
+ if (data.size() >= CacheSizeConfig.Cache.Persistence.SIZE) {
+ persistence(data.asMap());
+ }
+ data.release();
+ } else {
+ logger().error("unhandled message, message instance must Segment, but is %s", message.getClass().toString());
}
}
- private boolean saveToEs() {
+ private void persistence(Map dataMap) {
+ List builderList = new LinkedList<>();
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();
+ dataMap.forEach((key, value) -> {
+ IndexRequestBuilder builder = client.prepareIndex(esIndex(), esType(), key).setSource(value.getSegmentStr());
+ builderList.add(builder);
+ });
+ EsClient.INSTANCE.bulk(builderList);
+ dataMap.clear();
}
- public static class Factory extends AbstractLocalAsyncWorkerProvider {
- public static Factory INSTANCE = new Factory();
+ @Override
+ final protected void prepareIndex(List builderList) {
+ Map lastData = getPersistenceData().getLast().asMap();
+ Client client = EsClient.INSTANCE.getClient();
+ lastData.forEach((key, value) -> {
+ IndexRequestBuilder builder = client.prepareIndex(esIndex(), esType(), key).setSource(value.getSegmentStr());
+ builderList.add(builder);
+ });
+ lastData.clear();
+ }
+
+ 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..3dc324deb 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
@@ -11,7 +11,7 @@ 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.segment.entity.SegmentDeserialize;
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.JoinAndSplitData;
import com.a.eye.skywalking.collector.worker.tools.CollectionTools;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
@@ -55,7 +55,7 @@ public class SegmentTopSearchWithGlobalTraceId extends AbstractLocalSyncWorker {
if (globalTraceObj != null && globalTraceObj.has(GlobalTraceIndex.SUB_SEG_IDS)) {
String subSegIdsStr = globalTraceObj.get(GlobalTraceIndex.SUB_SEG_IDS).getAsString();
- String[] subSegIds = subSegIdsStr.split(MergeData.SPLIT);
+ String[] subSegIds = subSegIdsStr.split(JoinAndSplitData.SPLIT);
topSegPaging.addProperty("recordsTotal", subSegIds.length);
@@ -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..784ddd0f4 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/JoinAndSplitAnalysisData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/JoinAndSplitAnalysisData.java
new file mode 100644
index 000000000..9c4a96674
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/JoinAndSplitAnalysisData.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 JoinAndSplitAnalysisData {
+
+ private WindowData windowData = new WindowData(new LinkedHashMap());
+
+ public JoinAndSplitData getOrCreate(String id) {
+ if (!windowData.containsKey(id)) {
+ windowData.put(id, new JoinAndSplitData(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/JoinAndSplitData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/JoinAndSplitData.java
new file mode 100644
index 000000000..c78db6431
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/JoinAndSplitData.java
@@ -0,0 +1,70 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import com.a.eye.skywalking.collector.actor.selector.AbstractHashMessage;
+
+import java.util.*;
+
+/**
+ * @author pengys5
+ */
+public class JoinAndSplitData extends AbstractHashMessage implements Data {
+
+ public static final String SPLIT = ",";
+
+ private String id;
+
+ private Map> data = new HashMap<>();
+
+ public JoinAndSplitData(String key) {
+ super(key);
+ this.id = key;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ public void set(String attributeName, String value) {
+ if (!data.containsKey(attributeName)) {
+ data.put(attributeName, new HashSet<>());
+ }
+ data.get(attributeName).add(value);
+ }
+
+ public void merge(JoinAndSplitData source) {
+ source.data.forEach((attributeName, valueSet) -> valueSet.forEach(value -> set(attributeName, value)));
+ }
+
+ public void merge(Map source) {
+ source.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) {
+ set(column, value);
+ }
+ }
+ });
+ }
+
+ public Map asMap() {
+ Map source = new HashMap<>();
+ data.forEach((attributeName, valueSet) -> {
+ Iterator iterator = valueSet.iterator();
+ StringBuilder builder = new StringBuilder();
+
+ int i = 0;
+
+ while (iterator.hasNext()) {
+ if (i == 0) {
+ builder.append(iterator.next());
+ } else {
+ builder.append(SPLIT).append(iterator.next());
+ }
+ i++;
+ }
+ source.put(attributeName, 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/JoinAndSplitPersistenceData.java b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/JoinAndSplitPersistenceData.java
new file mode 100644
index 000000000..00f8082d4
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/JoinAndSplitPersistenceData.java
@@ -0,0 +1,25 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+/**
+ * @author pengys5
+ */
+public class JoinAndSplitPersistenceData extends Window implements PersistenceData {
+
+ private WindowData lockedWindowData;
+
+ public JoinAndSplitData getOrCreate(String id) {
+ if (!lockedWindowData.containsKey(id)) {
+ lockedWindowData.put(id, new JoinAndSplitData(id));
+ }
+ return lockedWindowData.get(id);
+ }
+
+ public void hold() {
+ lockedWindowData = getCurrentAndHold();
+ }
+
+ public void release() {
+ lockedWindowData.release();
+ lockedWindowData = null;
+ }
+}
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
deleted file mode 100644
index 375261696..000000000
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergeData.java
+++ /dev/null
@@ -1,81 +0,0 @@
-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;
-
-/**
- * @author pengys5
- */
-public class MergeData extends AbstractHashMessage {
- public static final String SPLIT = ",";
-
- private String id;
-
- private Map> mergeData = new HashMap<>();
-
- public MergeData(String key) {
- super(key);
- this.id = key;
- }
-
- public String getId() {
- return id;
- }
-
- public void setMergeData(String column, String value) {
- if (!mergeData.containsKey(column)) {
- mergeData.put(column, new HashSet<>());
- }
- mergeData.get(column).add(value);
- }
-
- 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());
- }
- }
- }
-
- 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);
- for (String value : dbValues) {
- setMergeData(entry.getKey(), value);
- }
- }
- }
- }
-
- public Map toMap() {
- Map source = new HashMap<>();
- for (Map.Entry> entry : mergeData.entrySet()) {
- String column = entry.getKey();
- Iterator iterator = entry.getValue().iterator();
- StringBuffer value = new StringBuffer();
-
- int i = 0;
- while (iterator.hasNext()) {
- if (i == 0) {
- value.append(iterator.next());
- } else {
- value.append(SPLIT).append(iterator.next());
- }
- i++;
- }
- source.put(column, value.toString());
- }
-
- return source;
- }
-}
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
deleted file mode 100644
index 4a5ccec67..000000000
--- a/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/MergePersistenceData.java
+++ /dev/null
@@ -1,51 +0,0 @@
-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 {
-
- private Map persistenceData = new HashMap<>();
-
- public MergeData getElseCreate(String id) {
- if (!persistenceData.containsKey(id)) {
- persistenceData.put(id, new MergeData(id));
- }
- return persistenceData.get(id);
- }
-
- public int size() {
- return persistenceData.size();
- }
-
- 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();
- }
-}
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..394302f75
--- /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 getOrCreate(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..ea9a29100 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,70 +3,69 @@ 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;
+ private Map data;
public MetricData(String id) {
super(id);
this.id = id;
- value = new HashMap<>();
+ data = 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);
+ data.put(AbstractIndex.TIME_SLICE, Long.valueOf(slice));
+ data.put(AbstractIndex.AGG_COLUMN, aggId.toString());
}
- public void setMetric(String column, Long value) {
+ public void set(String metricName, 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);
+ if (this.data.containsKey(metricName) && !AbstractIndex.TIME_SLICE.equals(metricName)
+ && !AbstractIndex.AGG_COLUMN.equals(metricName)) {
+ valueAdd += (Long) this.data.get(metricName);
}
- this.value.put(column, valueAdd);
+ this.data.put(metricName, valueAdd);
}
- public void merge(MetricData metricData) {
- for (Map.Entry entry : metricData.value.entrySet()) {
+ public void merge(MetricData source) {
+ for (Map.Entry entry : source.data.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())) {
+ set(entry.getKey(), (Long) entry.getValue());
}
}
}
- public void merge(Map dbData) {
- for (Map.Entry entry : dbData.entrySet()) {
+ @Override
+ public void merge(Map source) {
+ for (Map.Entry entry : source.entrySet()) {
if (!AbstractIndex.TIME_SLICE.equals(entry.getKey())
- && !AbstractIndex.AGG_COLUMN.equals(entry.getKey())) {
- long dbValue = ((Number)entry.getValue()).longValue();
- setMetric(entry.getKey(), dbValue);
+ && !AbstractIndex.AGG_COLUMN.equals(entry.getKey())) {
+ long dbValue = ((Number) entry.getValue()).longValue();
+ set(entry.getKey(), dbValue);
}
}
}
- public Map toMap() {
- return value;
- }
-
+ @Override
public String getId() {
return id;
}
+
+ public Map asMap() {
+ return data;
+ }
}
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..e8ed10b86 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));
+ public MetricData getOrCreate(String 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 hold() {
+ 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 release() {
+ 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..f73f83659
--- /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 getOrCreate(String id);
+
+ void release();
+
+ void hold();
+}
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..a3c007211
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceTimer.java
@@ -0,0 +1,54 @@
+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.apache.logging.log4j.message.StringFormattedMessage;
+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 (Throwable e) {
+ logger.error(e);
+ }
+ }
+ };
+ Thread persistenceThread = new Thread(runnable);
+ persistenceThread.setName("timerPersistence");
+ persistenceThread.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(new StringFormattedMessage("flush persistence worker data error, worker role name: %s", worker.getRole().roleName()), e);
+ }
+ }
+ 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..e68642801
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/PersistenceWorkerListener.java
@@ -0,0 +1,26 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import com.a.eye.skywalking.collector.actor.AbstractLocalSyncWorker;
+import java.util.LinkedList;
+import java.util.List;
+
+/**
+ * @author pengys5
+ */
+public enum PersistenceWorkerListener {
+ INSTANCE;
+
+ private List workers = new LinkedList<>();
+
+ public void register(AbstractLocalSyncWorker worker) {
+ workers.add(worker);
+ }
+
+ public List getWorkers() {
+ return workers;
+ }
+
+ public void reset() {
+ workers.clear();
+ }
+}
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..aa96482c7
--- /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 getOrCreate(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..f3263585a 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,39 +4,45 @@ 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;
- private JsonObject record;
+ private JsonObject data;
- public RecordData(String key) {
- super(key);
- this.id = key;
- String[] ids = id.split(Const.IDS_SPLIT);
+ public RecordData(String id) {
+ super(id);
+ this.id = id;
+ String[] ids = this.id.split(Const.IDS_SPLIT);
for (int i = 1; i < ids.length; i++) {
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();
+ data = new JsonObject();
}
public String getId() {
return id;
}
- public JsonObject getRecord() {
- record.addProperty(AbstractIndex.AGG_COLUMN, this.aggId);
- return record;
+ public JsonObject get() {
+ data.addProperty(AbstractIndex.AGG_COLUMN, this.aggId);
+ return data;
}
- public void setRecord(JsonObject record) {
- this.record = record;
+ public void set(JsonObject record) {
+ this.data = record;
+ }
+
+ @Override
+ public void merge(Map source) {
}
}
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..9d4890806 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));
+ public RecordData getOrCreate(String 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 hold() {
+ 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 release() {
+ 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..79dfb6153
--- /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 id) {
+ this.id = id;
+ }
+
+ public String getId() {
+ return id;
+ }
+
+ @Override
+ public void merge(Map source) {
+ }
+
+ 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..2934a48e5
--- /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 getOrCreate(String id) {
+ if (!lockedWindowData.containsKey(id)) {
+ lockedWindowData.put(id, new SegmentData(id));
+ }
+ return lockedWindowData.get(id);
+ }
+
+ public void hold() {
+ lockedWindowData = getCurrentAndHold();
+ }
+
+ public void release() {
+ 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..615dbc138
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/main/java/com/a/eye/skywalking/collector/worker/storage/Window.java
@@ -0,0 +1,46 @@
+package com.a.eye.skywalking.collector.worker.storage;
+
+import java.util.HashMap;
+
+/**
+ * @author pengys5
+ */
+public abstract class Window {
+
+ private WindowData pointer;
+
+ private WindowData windowDataA;
+ private WindowData windowDataB;
+
+ public Window() {
+ windowDataA = new WindowData(new HashMap<>());
+ windowDataB = new WindowData(new HashMap<>());
+ pointer = windowDataA;
+ }
+
+ public void switchPointer() {
+ if (pointer == windowDataA) {
+ pointer = windowDataB;
+ } else {
+ pointer = windowDataA;
+ }
+ }
+
+ protected WindowData getCurrentAndHold() {
+ if (pointer == windowDataA) {
+ windowDataA.hold();
+ return windowDataA;
+ } else {
+ windowDataB.hold();
+ return windowDataB;
+ }
+ }
+
+ public WindowData getLast() {
+ if (pointer == windowDataA) {
+ return windowDataB;
+ } else {
+ return windowDataA;
+ }
+ }
+}
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..f630654be
--- /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 volatile 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..d139c48ed 100644
--- a/skywalking-collector/skywalking-collector-worker/src/main/resources/log4j2.xml
+++ b/skywalking-collector/skywalking-collector-worker/src/main/resources/log4j2.xml
@@ -16,10 +16,10 @@
-
-
-
-
+
+
+
+
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/JoinAndSplitPersistenceMemberTestCase.java
similarity index 57%
rename from skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/MergePersistenceMemberTestCase.java
rename to skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/JoinAndSplitPersistenceMemberTestCase.java
index 263e0d6e7..5b4477667 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/JoinAndSplitPersistenceMemberTestCase.java
@@ -2,11 +2,10 @@ 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;
-import com.a.eye.skywalking.collector.worker.storage.MergePersistenceData;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitData;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitPersistenceData;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@@ -22,12 +21,12 @@ import static org.powermock.api.mockito.PowerMockito.*;
* @author pengys5
*/
@RunWith(PowerMockRunner.class)
-@PrepareForTest({TestMergePersistenceMember.class, EsClient.class})
+@PrepareForTest({TestJoinAndSplitPersistenceMember.class, EsClient.class})
@PowerMockIgnore({"javax.management.*"})
-public class MergePersistenceMemberTestCase {
+public class JoinAndSplitPersistenceMemberTestCase {
- private TestMergePersistenceMember mergePersistenceMember;
- private MergePersistenceData persistenceData;
+ private TestJoinAndSplitPersistenceMember mergePersistenceMember;
+ private JoinAndSplitPersistenceData persistenceData;
@Before
public void init() throws Exception {
@@ -36,24 +35,23 @@ public class MergePersistenceMemberTestCase {
ClusterWorkerContext clusterWorkerContext = new ClusterWorkerContext(null);
LocalWorkerContext localWorkerContext = new LocalWorkerContext();
- mergePersistenceMember = PowerMockito.spy(new TestMergePersistenceMember(TestMergePersistenceMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
+ mergePersistenceMember = PowerMockito.spy(new TestJoinAndSplitPersistenceMember(TestJoinAndSplitPersistenceMember.Role.INSTANCE, clusterWorkerContext, localWorkerContext));
- persistenceData = mock(MergePersistenceData.class);
- MergeData mergeData = mock(MergeData.class);
+ persistenceData = mock(JoinAndSplitPersistenceData.class);
+ JoinAndSplitData joinAndSplitData = mock(JoinAndSplitData.class);
when(mergePersistenceMember, "getPersistenceData").thenReturn(persistenceData);
- when(persistenceData.getElseCreate(Mockito.anyString())).thenReturn(mergeData);
+ when(persistenceData.getOrCreate(Mockito.anyString())).thenReturn(joinAndSplitData);
- doCallRealMethod().when(mergePersistenceMember).analyse(Mockito.any(MergeData.class));
+ doCallRealMethod().when(mergePersistenceMember).analyse(Mockito.any(JoinAndSplitData.class));
}
@Test
public void testAnalyse() throws Exception {
String id = "2016" + Const.ID_SPLIT + "A" + Const.ID_SPLIT + "B";
- MergeData mergeData = new MergeData(id);
- mergeData.setMergeData("Column", "VALUE");
+ JoinAndSplitData joinAndSplitData = new JoinAndSplitData(id);
+ joinAndSplitData.set("Column", "VALUE");
-// mergePersistenceMember.analyse(mergeData);
-// mergePersistenceMember.onWork(new EndOfBatchCommand());
+ mergePersistenceMember.analyse(joinAndSplitData);
}
}
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/RecordPersistenceMemberTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/RecordPersistenceMemberTestCase.java
new file mode 100644
index 000000000..c1d27e9c1
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/RecordPersistenceMemberTestCase.java
@@ -0,0 +1,41 @@
+package com.a.eye.skywalking.collector.worker;
+
+import com.a.eye.skywalking.collector.worker.storage.RecordData;
+import com.a.eye.skywalking.collector.worker.storage.RecordPersistenceData;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.api.mockito.PowerMockito;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+import org.apache.logging.log4j.Logger;
+
+import static org.mockito.Mockito.*;
+
+/**
+ * @author pengys5
+ */
+@RunWith(PowerMockRunner.class)
+@PrepareForTest(RecordPersistenceMember.class)
+public class RecordPersistenceMemberTestCase {
+
+ @Test
+ public void analyse() throws Exception {
+ RecordPersistenceMember member = PowerMockito.mock(RecordPersistenceMember.class, CALLS_REAL_METHODS);
+ Logger logger = mock(Logger.class);
+ when(member.logger()).thenReturn(logger);
+
+ RecordPersistenceData data = mock(RecordPersistenceData.class);
+ RecordData recordData = new RecordData("test1");
+ when(data.getOrCreate(anyString())).thenReturn(recordData);
+
+ when(member.getPersistenceData()).thenReturn(data);
+
+ RecordData recordData_1 = new RecordData("test2");
+ member.analyse(recordData_1);
+
+ verify(data).hold();
+ verify(data).release();
+
+ member.analyse(new Object());
+ }
+}
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/TestJoinAndSplitAnalysisMember.java
similarity index 74%
rename from skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestMergeAnalysisMember.java
rename to skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestJoinAndSplitAnalysisMember.java
index 9f9bdf94d..8b9fdce1b 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/TestJoinAndSplitAnalysisMember.java
@@ -3,14 +3,15 @@ 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;
/**
* @author pengys5
*/
-public class TestMergeAnalysisMember extends MergeAnalysisMember {
+public class TestJoinAndSplitAnalysisMember extends JoinAndSplitAnalysisMember {
- TestMergeAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+ TestJoinAndSplitAnalysisMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
@@ -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/TestMergePersistenceMember.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestJoinAndSplitPersistenceMember.java
similarity index 78%
rename from skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestMergePersistenceMember.java
rename to skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestJoinAndSplitPersistenceMember.java
index 0f81a9043..e69f182ee 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestMergePersistenceMember.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/TestJoinAndSplitPersistenceMember.java
@@ -7,8 +7,8 @@ import com.a.eye.skywalking.collector.actor.selector.WorkerSelector;
/**
* @author pengys5
*/
-public class TestMergePersistenceMember extends MergePersistenceMember {
- TestMergePersistenceMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
+public class TestJoinAndSplitPersistenceMember extends JoinAndSplitPersistenceMember {
+ TestJoinAndSplitPersistenceMember(Role role, ClusterWorkerContext clusterContext, LocalWorkerContext selfContext) {
super(role, clusterContext, selfContext);
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfigProviderTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfigProviderTestCase.java
new file mode 100644
index 000000000..05cd29bfe
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfigProviderTestCase.java
@@ -0,0 +1,18 @@
+package com.a.eye.skywalking.collector.worker.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pengys5
+ */
+public class CacheSizeConfigProviderTestCase {
+
+ @Test
+ public void test() {
+ CacheSizeConfigProvider provider = new CacheSizeConfigProvider();
+ provider.cliArgs();
+
+ Assert.assertEquals(CacheSizeConfig.class, provider.configClass());
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfigTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfigTestCase.java
new file mode 100644
index 000000000..fba27a200
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/CacheSizeConfigTestCase.java
@@ -0,0 +1,16 @@
+package com.a.eye.skywalking.collector.worker.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pengys5
+ */
+public class CacheSizeConfigTestCase {
+
+ @Test
+ public void test() {
+ Assert.assertEquals(1024, CacheSizeConfig.Cache.Analysis.SIZE);
+ Assert.assertEquals(5000, CacheSizeConfig.Cache.Persistence.SIZE);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/EsConfigProviderTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/EsConfigProviderTestCase.java
new file mode 100644
index 000000000..05298f394
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/EsConfigProviderTestCase.java
@@ -0,0 +1,30 @@
+package com.a.eye.skywalking.collector.worker.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pengys5
+ */
+public class EsConfigProviderTestCase {
+
+ @Test
+ public void test() {
+ EsConfigProvider provider = new EsConfigProvider();
+
+ Assert.assertEquals(EsConfig.class, provider.configClass());
+
+ System.setProperty("es.cluster.NAME", "A");
+ System.setProperty("es.cluster.NODES", "B");
+ System.setProperty("es.cluster.transport.SNIFFER", "C");
+ System.setProperty("es.index.shards.NUMBER", "10");
+ System.setProperty("es.index.replicas.NUMBER", "20");
+ provider.cliArgs();
+
+ Assert.assertEquals("A", EsConfig.Es.Cluster.NAME);
+ Assert.assertEquals("B", EsConfig.Es.Cluster.NODES);
+ Assert.assertEquals("C", EsConfig.Es.Cluster.Transport.SNIFFER);
+ Assert.assertEquals("10", EsConfig.Es.Index.Shards.NUMBER);
+ Assert.assertEquals("20", EsConfig.Es.Index.Replicas.NUMBER);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/HttpConfigProviderTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/HttpConfigProviderTestCase.java
new file mode 100644
index 000000000..b0677d7e0
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/HttpConfigProviderTestCase.java
@@ -0,0 +1,26 @@
+package com.a.eye.skywalking.collector.worker.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pengys5
+ */
+public class HttpConfigProviderTestCase {
+
+ @Test
+ public void test() {
+ HttpConfigProvider provider = new HttpConfigProvider();
+
+ Assert.assertEquals(HttpConfig.class, provider.configClass());
+
+ System.setProperty("http.HOSTNAME", "A");
+ System.setProperty("http.PORT", "B");
+ System.setProperty("http.CONTEXTPATH", "C");
+ provider.cliArgs();
+
+ Assert.assertEquals("A", HttpConfig.Http.HOSTNAME);
+ Assert.assertEquals("B", HttpConfig.Http.PORT);
+ Assert.assertEquals("C", HttpConfig.Http.CONTEXTPATH);
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/WorkerConfigProviderTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/WorkerConfigProviderTestCase.java
new file mode 100644
index 000000000..cb6a47b7a
--- /dev/null
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/config/WorkerConfigProviderTestCase.java
@@ -0,0 +1,18 @@
+package com.a.eye.skywalking.collector.worker.config;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/**
+ * @author pengys5
+ */
+public class WorkerConfigProviderTestCase {
+
+ @Test
+ public void test() {
+ WorkerConfigProvider provider = new WorkerConfigProvider();
+ provider.cliArgs();
+
+ Assert.assertEquals(WorkerConfig.class, provider.configClass());
+ }
+}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/JsonDataMerge.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/JsonDataMerge.java
index 803fb69c6..b14d036e9 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/JsonDataMerge.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/JsonDataMerge.java
@@ -40,7 +40,6 @@ public enum JsonDataMerge {
if (!entry.getValue().isJsonNull()) {
value = entry.getValue().getAsString();
}
- System.out.printf("key: %s, value: %s \n", key, value);
if (entry.getValue().isJsonNull()) {
Assert.assertEquals(true, actualData.get(key).isJsonNull());
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..30d487b13 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;
@@ -56,7 +55,6 @@ public enum MetricDataMergeJson {
if (!entry.getValue().isJsonNull()) {
value = entry.getValue().getAsString();
}
- System.out.printf("key: %s, value: %s \n", key, value);
if (entry.getValue().isJsonNull()) {
Assert.assertEquals(true, actualData.get(key).isJsonNull());
@@ -75,7 +73,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;
@@ -91,7 +89,6 @@ public enum MetricDataMergeJson {
changedId = changedId + Const.ID_SPLIT + ids[i];
}
changedId = String.valueOf(changedSlice) + changedId;
- System.out.printf("changedId: %s", changedId);
return changedId;
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/RecordDataMergeJson.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/RecordDataMergeJson.java
index 6c9a96d4f..92f0da2ce 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/RecordDataMergeJson.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/datamerge/RecordDataMergeJson.java
@@ -55,7 +55,6 @@ public enum RecordDataMergeJson {
if (!entry.getValue().isJsonNull()) {
value = entry.getValue().getAsString();
}
- System.out.printf("key: %s, value: %s \n", key, value);
if (entry.getValue().isJsonNull()) {
Assert.assertEquals(true, actualData.get(key).isJsonNull());
@@ -71,7 +70,7 @@ public enum RecordDataMergeJson {
private Map recordData2Map(List recordDataList) {
Map recordDataMap = new HashMap<>();
for (RecordData recordData : recordDataList) {
- recordDataMap.put(recordData.getId(), recordData.getRecord());
+ recordDataMap.put(recordData.getId(), recordData.get());
}
return recordDataMap;
}
@@ -86,7 +85,6 @@ public enum RecordDataMergeJson {
changedId = changedId + Const.ID_SPLIT + ids[i];
}
changedId = String.valueOf(changedSlice) + changedId;
- System.out.printf("changedId: %s", changedId);
return changedId;
} else {
return id;
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..b6830d6b5 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,8 +95,7 @@ public class GlobalTraceGetWithGlobalIdTestCase {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
- String globalId = (String)invocation.getArguments()[0];
- System.out.println(globalId);
+ String globalId = (String) invocation.getArguments()[0];
Assert.assertEquals("Test", globalId);
return null;
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndexTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndexTestCase.java
index ebd960295..871495e4e 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndexTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/globaltrace/GlobalTraceIndexTestCase.java
@@ -1,5 +1,6 @@
package com.a.eye.skywalking.collector.worker.globaltrace;
+import com.a.eye.skywalking.collector.worker.config.EsConfig;
import org.junit.Assert;
import org.junit.Test;
@@ -20,6 +21,12 @@ public class GlobalTraceIndexTestCase {
@Test
public void testBuilder() throws IOException {
GlobalTraceIndex index = new GlobalTraceIndex();
- Assert.assertEquals("{\"properties\":{\"subSegIds\":{\"type\":\"text\",\"index\":\"not_analyzed\"}}}", index.createMappingBuilder().string());
+ Assert.assertEquals("{\"properties\":{\"subSegIds\":{\"type\":\"keyword\"}}}", index.createMappingBuilder().string());
+ }
+
+ @Test
+ public void refreshInterval() {
+ GlobalTraceIndex index = new GlobalTraceIndex();
+ Assert.assertEquals(EsConfig.Es.Index.RefreshInterval.GlobalTraceIndex.VALUE.intValue(), index.refreshInterval());
}
}
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..e8c243221 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(GlobalTraceSearchWithGlobalId.WorkerRole.INSTANCE, 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..b97502f66 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
@@ -8,7 +8,7 @@ import com.a.eye.skywalking.collector.worker.config.WorkerConfig;
import com.a.eye.skywalking.collector.worker.globaltrace.persistence.GlobalTraceAgg;
import com.a.eye.skywalking.collector.worker.mock.MergeDataAnswer;
import com.a.eye.skywalking.collector.worker.segment.mock.SegmentMock;
-import com.a.eye.skywalking.collector.worker.storage.MergeData;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitData;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@@ -46,7 +46,7 @@ public class GlobalTraceAnalysisTestCase {
clusterWorkerContext = PowerMockito.mock(ClusterWorkerContext.class);
WorkerRefs workerRefs = mock(WorkerRefs.class);
answer = new MergeDataAnswer();
- doAnswer(answer).when(workerRefs).tell(Mockito.any(MergeData.class));
+ doAnswer(answer).when(workerRefs).tell(Mockito.any(JoinAndSplitData.class));
when(clusterWorkerContext.lookup(GlobalTraceAgg.Role.INSTANCE)).thenReturn(workerRefs);
@@ -62,22 +62,23 @@ 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
public void testAnalyse() throws Exception {
segmentMock.executeAnalysis(analysis);
- Assert.assertEquals(1, answer.getMergeDataList().size());
- MergeData mergeData = answer.getMergeDataList().get(0);
- Assert.assertEquals(id, mergeData.getId());
- String subSegIds = mergeData.toMap().get("subSegIds");
+ Assert.assertEquals(1, answer.getJoinAndSplitDataList().size());
+ JoinAndSplitData joinAndSplitData = answer.getJoinAndSplitDataList().get(0);
+ Assert.assertEquals(id, joinAndSplitData.getId());
+ String subSegIds = joinAndSplitData.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..b916df583 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;
@@ -25,11 +23,8 @@ public class GlobalTraceSearchWithGlobalIdUseDB {
globalTraceSearchWithGlobalId.onWork("Trace.1491277147443.-1562443425.70539.65.2", response);
JsonArray nodeArray = response.get("result").getAsJsonArray();
- System.out.println(nodeArray.size());
- System.out.println(nodeArray.toString());
for (int i = 0; i < nodeArray.size(); i++) {
JsonObject nodeJsonObj = nodeArray.get(i).getAsJsonObject();
- System.out.println(nodeJsonObj);
}
}
}
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/httpserver/GetWithHttpServletTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/GetWithHttpServletTestCase.java
index 820f6a24f..2f69a4b4a 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/GetWithHttpServletTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/GetWithHttpServletTestCase.java
@@ -30,7 +30,6 @@ public class GetWithHttpServletTestCase {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Integer status = (Integer)invocation.getArguments()[0];
- System.out.println(status);
Assert.assertEquals(new Integer(200), status);
return null;
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/PostWithHttpServletTestCase.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/PostWithHttpServletTestCase.java
index 7c7b417f6..94a30ed34 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/PostWithHttpServletTestCase.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/PostWithHttpServletTestCase.java
@@ -47,7 +47,6 @@ public class PostWithHttpServletTestCase {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Integer status = (Integer)invocation.getArguments()[0];
- System.out.println(status);
Assert.assertEquals(new Integer(200), status);
return null;
}
@@ -57,7 +56,6 @@ public class PostWithHttpServletTestCase {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Segment segment = (Segment)invocation.getArguments()[0];
- System.out.println(segment.getTraceSegmentId());
Assert.assertEquals("TestTest2", segment.getTraceSegmentId());
return null;
}
@@ -76,7 +74,6 @@ public class PostWithHttpServletTestCase {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
Integer status = (Integer)invocation.getArguments()[0];
- System.out.println(status);
Assert.assertEquals(new Integer(500), status);
return null;
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGet.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGet.java
index d1a1df0a2..f00c45d41 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGet.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGet.java
@@ -29,8 +29,6 @@ public class TestAbstractGet extends AbstractGet {
}
public static class Factory extends AbstractGetProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public Role role() {
return TestAbstractGet.WorkerRole.INSTANCE;
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGetProvider.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGetProvider.java
index 82ddc918c..16e49e0c7 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGetProvider.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractGetProvider.java
@@ -15,11 +15,11 @@ public class TestAbstractGetProvider extends AbstractGetProvider {
@Override
public Role role() {
- return null;
+ return TestAbstractGet.WorkerRole.INSTANCE;
}
@Override
public AbstractWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new TestAbstractGet(null, null, null);
+ return new TestAbstractGet(role(), null, null);
}
}
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPost.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPost.java
index 5a0e21226..0539137a8 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPost.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPost.java
@@ -39,8 +39,6 @@ public class TestAbstractPost extends AbstractPost {
}
public static class Factory extends AbstractPostProvider {
- public static Factory INSTANCE = new Factory();
-
@Override
public String servletPath() {
return "/TestAbstractPost";
diff --git a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPostProvider.java b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPostProvider.java
index 086f65188..e8c01916f 100644
--- a/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPostProvider.java
+++ b/skywalking-collector/skywalking-collector-worker/src/test/java/com/a/eye/skywalking/collector/worker/httpserver/TestAbstractPostProvider.java
@@ -25,6 +25,6 @@ public class TestAbstractPostProvider extends AbstractPostProvider {
@Override
public AbstractWorker workerInstance(ClusterWorkerContext clusterContext) {
- return new TestAbstractPost(null, null, null);
+ return new TestAbstractPost(TestAbstractPost.WorkerRole.INSTANCE, null, null);
}
}
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..46a13ffac 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
@@ -1,33 +1,27 @@
package com.a.eye.skywalking.collector.worker.mock;
-import com.a.eye.skywalking.collector.worker.storage.MergeData;
+import com.a.eye.skywalking.collector.worker.storage.JoinAndSplitData;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
/**
* @author pengys5
*/
public class MergeDataAnswer implements Answer