From f187931e8df54cfb717b8f7edb1e086b0d30d377 Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 10 Sep 2017 01:25:34 +0800 Subject: [PATCH 1/7] zk add node listener --- .../grpc/AgentJVMGRPCDataListener.java | 6 +- .../grpc/AgentRegisterGRPCDataListener.java | 7 ++- .../jetty/AgentRegisterJettyDataListener.java | 7 ++- .../jetty/AgentServerJettyDataListener.java | 6 +- .../handler/AgentStreamGRPCServerHandler.java | 4 +- .../AgentStreamJettyServerHandler.java | 4 +- .../jetty/handler/UIJettyServerHandler.java | 4 +- .../grpc/AgentStreamGRPCDataListener.java | 7 ++- .../jetty/AgentStreamJettyDataListener.java | 7 ++- .../src/main/resources/application.yml | 62 +++++++++++-------- .../apm/collector/client/grpc/GRPCClient.java | 8 +-- .../zookeeper/ClusterZKDataMonitor.java | 19 +++--- .../core/cluster/ClusterDataListener.java | 20 +++--- .../ClusterModuleRegistrationReader.java | 4 +- .../noderef/NodeReferenceDataDefine.java | 28 ++++----- .../define/register/InstanceDataDefine.java | 1 + .../ServiceReferenceDataDefine.java | 32 +++++----- .../stream/StreamModuleGroupDefine.java | 2 +- .../stream/grpc/StreamGRPCDataListener.java | 60 ++++++++---------- .../stream/grpc/StreamGRPCModuleDefine.java | 2 +- .../handler/RemoteCommonServiceHandler.java | 6 +- .../stream/worker/RemoteWorkerRef.java | 26 ++++++-- .../collector/stream/worker/WorkerRefs.java | 5 ++ .../ui/jetty/UIJettyDataListener.java | 7 ++- 24 files changed, 194 insertions(+), 140 deletions(-) diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java index b25fcdb8d..b60afc4fd 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java +++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java @@ -15,7 +15,11 @@ public class AgentJVMGRPCDataListener extends ClusterDataListener { return PATH; } - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { + + } + + @Override public void serverQuitNotify() { } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java index 6ff6004d9..a8ad38c14 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java @@ -15,6 +15,11 @@ public class AgentRegisterGRPCDataListener extends ClusterDataListener { return PATH; } - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { + + } + + @Override public void serverQuitNotify() { + } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java index a15ff860e..d56a04930 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java @@ -15,6 +15,11 @@ public class AgentRegisterJettyDataListener extends ClusterDataListener { return PATH; } - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { + + } + + @Override public void serverQuitNotify() { + } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java index 1ce44e9d8..9c4f25468 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java @@ -13,7 +13,11 @@ public class AgentServerJettyDataListener extends ClusterDataListener { return ClusterModuleDefine.BASE_CATALOG + "." + AgentServerModuleGroupDefine.GROUP_NAME + "." + AgentServerJettyModuleDefine.MODULE_NAME; } - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { + + } + + @Override public void serverQuitNotify() { } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java index f1cd49461..652af12c3 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java @@ -2,7 +2,7 @@ package org.skywalking.apm.collector.agentserver.jetty.handler; import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import java.util.List; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.skywalking.apm.collector.agentstream.grpc.AgentStreamGRPCDataListener; import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; @@ -23,7 +23,7 @@ public class AgentStreamGRPCServerHandler extends JettyHandler { @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { ClusterModuleRegistrationReader reader = ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getReader(); - List servers = reader.read(AgentStreamGRPCDataListener.PATH); + Set servers = reader.read(AgentStreamGRPCDataListener.PATH); JsonArray serverArray = new JsonArray(); servers.forEach(server -> serverArray.add(server)); return serverArray; diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java index bfcecdbf7..40a1e339a 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java @@ -2,7 +2,7 @@ package org.skywalking.apm.collector.agentserver.jetty.handler; import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import java.util.List; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.skywalking.apm.collector.agentstream.jetty.AgentStreamJettyDataListener; import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; @@ -23,7 +23,7 @@ public class AgentStreamJettyServerHandler extends JettyHandler { @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { ClusterModuleRegistrationReader reader = ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getReader(); - List servers = reader.read(AgentStreamJettyDataListener.PATH); + Set servers = reader.read(AgentStreamJettyDataListener.PATH); JsonArray serverArray = new JsonArray(); servers.forEach(server -> { serverArray.add(server); diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java index d38868f38..9c81388bc 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java @@ -2,7 +2,7 @@ package org.skywalking.apm.collector.agentserver.jetty.handler; import com.google.gson.JsonArray; import com.google.gson.JsonElement; -import java.util.List; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; @@ -23,7 +23,7 @@ public class UIJettyServerHandler extends JettyHandler { @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { ClusterModuleRegistrationReader reader = ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getReader(); - List servers = reader.read(UIJettyDataListener.PATH); + Set servers = reader.read(UIJettyDataListener.PATH); JsonArray serverArray = new JsonArray(); servers.forEach(server -> { serverArray.add(server); diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java index dd3428ec3..12b28c8a0 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java @@ -15,6 +15,11 @@ public class AgentStreamGRPCDataListener extends ClusterDataListener { return PATH; } - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { + + } + + @Override public void serverQuitNotify() { + } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java index 375c84754..4b2774dd4 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java @@ -15,6 +15,11 @@ public class AgentStreamJettyDataListener extends ClusterDataListener { return PATH; } - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { + + } + + @Override public void serverQuitNotify() { + } } diff --git a/apm-collector/apm-collector-boot/src/main/resources/application.yml b/apm-collector/apm-collector-boot/src/main/resources/application.yml index 2477d79ec..0ff32ca04 100644 --- a/apm-collector/apm-collector-boot/src/main/resources/application.yml +++ b/apm-collector/apm-collector-boot/src/main/resources/application.yml @@ -2,34 +2,42 @@ cluster: zookeeper: hostPort: localhost:2181 sessionTimeout: 100000 -#agent_server: -# jetty: -# host: localhost -# port: 10800 -# context_path: / -#agent_register: -# grpc: -# host: localhost -# port: 11800 -# jetty: -# host: localhost -# port: 12800 -# context_path: / -#agent_stream: -# grpc: -# host: localhost -# port: 11800 -# jetty: -# host: localhost -# port: 12800 -# context_path: / -#ui: -# jetty: -# host: localhost -# port: 12800 -# context_path: / +agent_server: + jetty: + host: localhost + port: 10800 + context_path: / +agent_register: + grpc: + host: localhost + port: 11800 + jetty: + host: localhost + port: 12800 + context_path: / +agent_stream: + grpc: + host: localhost + port: 11800 + jetty: + host: localhost + port: 12800 + context_path: / +agent_jvm: + grpc: + host: localhost + port: 11800 +ui: + jetty: + host: localhost + port: 12800 + context_path: / +collector_inside: + grpc: + host: localhost + port: 11800 storage: elasticsearch: cluster_name: CollectorDBCluster cluster_transport_sniffer: true - cluster_nodes: localhost:9300 \ No newline at end of file + cluster_nodes: localhost:9300 diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java index 8788a5472..19a077514 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java +++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java @@ -4,16 +4,12 @@ import io.grpc.ManagedChannel; import io.grpc.ManagedChannelBuilder; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.ClientException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public class GRPCClient implements Client { - private final Logger logger = LoggerFactory.getLogger(GRPCClient.class); - private final String host; private final int port; @@ -32,4 +28,8 @@ public class GRPCClient implements Client { public ManagedChannel getChannel() { return channel; } + + @Override public String toString() { + return host + ":" + port; + } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java index a2e6c862f..da6d99e11 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java @@ -7,6 +7,7 @@ import org.apache.zookeeper.CreateMode; import org.apache.zookeeper.WatchedEvent; import org.apache.zookeeper.Watcher; import org.apache.zookeeper.ZooDefs; +import org.apache.zookeeper.data.Stat; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException; import org.skywalking.apm.collector.client.zookeeper.util.PathUtils; @@ -36,19 +37,22 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { } @Override public void process(WatchedEvent event) { - logger.debug("changed path {}", event.getPath()); + logger.info("changed path {}, event type: {}", event.getPath(), event.getType().name()); if (listeners.containsKey(event.getPath())) { - List paths = null; + List paths; try { paths = client.getChildren(event.getPath(), true); - listeners.get(event.getPath()).clearData(); if (CollectionUtils.isNotEmpty(paths)) { for (String serverPath : paths) { - byte[] data = client.getData(event.getPath() + "/" + serverPath, false, null); + Stat stat = new Stat(); + byte[] data = client.getData(event.getPath() + "/" + serverPath, true, stat); String dataStr = new String(data); - logger.debug("path children has been changed, path: {}, data: {}", event.getPath() + "/" + serverPath, dataStr); - listeners.get(event.getPath()).addAddress(serverPath + dataStr); - listeners.get(event.getPath()).addressChangedNotify(); + if (stat.getCzxid() == stat.getMzxid()) { + logger.info("path children has been created, path: {}, data: {}", event.getPath() + "/" + serverPath, dataStr); + listeners.get(event.getPath()).serverJoinNotify(serverPath + dataStr); + } else { + logger.info("path children has been changed, path: {}, data: {}", event.getPath() + "/" + serverPath, dataStr); + } } } } catch (ZookeeperClientException e) { @@ -73,7 +77,6 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { client.getChildren(path, true); String serverPath = path + "/" + value.getHostPort(); - listener.addAddress(value.getHostPort() + contextPath); if (client.exists(serverPath, false) == null) { setData(serverPath, contextPath); diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java index 463a33adf..6613678c5 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java @@ -1,7 +1,7 @@ package org.skywalking.apm.collector.core.cluster; -import java.util.LinkedList; -import java.util.List; +import java.util.HashSet; +import java.util.Set; import org.skywalking.apm.collector.core.framework.Listener; /** @@ -9,10 +9,10 @@ import org.skywalking.apm.collector.core.framework.Listener; */ public abstract class ClusterDataListener implements Listener { - private List addresses; + private Set addresses; public ClusterDataListener() { - addresses = new LinkedList<>(); + addresses = new HashSet<>(); } public abstract String path(); @@ -21,13 +21,15 @@ public abstract class ClusterDataListener implements Listener { addresses.add(address); } - public final List getAddresses() { + public final void removeAddress(String address) { + addresses.remove(address); + } + + public final Set getAddresses() { return addresses; } - public final void clearData() { - addresses.clear(); - } + public abstract void serverJoinNotify(String serverAddress); - public abstract void addressChangedNotify(); + public abstract void serverQuitNotify(); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleRegistrationReader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleRegistrationReader.java index ddfcdd56a..67e1b82a7 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleRegistrationReader.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterModuleRegistrationReader.java @@ -1,6 +1,6 @@ package org.skywalking.apm.collector.core.cluster; -import java.util.List; +import java.util.Set; import org.skywalking.apm.collector.core.client.DataMonitor; /** @@ -14,7 +14,7 @@ public abstract class ClusterModuleRegistrationReader { this.dataMonitor = dataMonitor; } - public final List read(String path) { + public final Set read(String path) { return dataMonitor.getListener(path).getAddresses(); } } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java index a1d514e3e..66c61a0d9 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/noderef/NodeReferenceDataDefine.java @@ -34,7 +34,7 @@ public class NodeReferenceDataDefine extends DataDefine { @Override public Object deserialize(RemoteData remoteData) { String id = remoteData.getDataStrings(0); - int applicationId = remoteData.getDataIntegers(0); + int frontApplicationId = remoteData.getDataIntegers(0); int behindApplicationId = remoteData.getDataIntegers(1); String behindPeer = remoteData.getDataStrings(1); int s1LTE = remoteData.getDataIntegers(2); @@ -44,23 +44,23 @@ public class NodeReferenceDataDefine extends DataDefine { int summary = remoteData.getDataIntegers(6); int error = remoteData.getDataIntegers(7); long timeBucket = remoteData.getDataLongs(0); - return new NodeReference(id, applicationId, behindApplicationId, behindPeer, s1LTE, s3LTE, s5LTE, s5GT, summary, error, timeBucket); + return new NodeReference(id, frontApplicationId, behindApplicationId, behindPeer, s1LTE, s3LTE, s5LTE, s5GT, summary, error, timeBucket); } @Override public RemoteData serialize(Object object) { - NodeReference nodeReference = (NodeReference)object; + Data data = (Data)object; RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(nodeReference.getId()); - builder.addDataIntegers(nodeReference.getFrontApplicationId()); - builder.addDataIntegers(nodeReference.getBehindApplicationId()); - builder.addDataStrings(nodeReference.getBehindPeer()); - builder.addDataIntegers(nodeReference.getS1LTE()); - builder.addDataIntegers(nodeReference.getS3LTE()); - builder.addDataIntegers(nodeReference.getS5LTE()); - builder.addDataIntegers(nodeReference.getS5GT()); - builder.addDataIntegers(nodeReference.getSummary()); - builder.addDataIntegers(nodeReference.getError()); - builder.addDataLongs(nodeReference.getTimeBucket()); + builder.addDataStrings(data.getDataString(0)); + builder.addDataIntegers(data.getDataInteger(0)); + builder.addDataIntegers(data.getDataInteger(1)); + builder.addDataStrings(data.getDataString(1)); + builder.addDataIntegers(data.getDataInteger(2)); + builder.addDataIntegers(data.getDataInteger(3)); + builder.addDataIntegers(data.getDataInteger(4)); + builder.addDataIntegers(data.getDataInteger(5)); + builder.addDataIntegers(data.getDataInteger(6)); + builder.addDataIntegers(data.getDataInteger(7)); + builder.addDataLongs(data.getDataLong(0)); return builder.build(); } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceDataDefine.java index 20c604334..b079aec93 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceDataDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/register/InstanceDataDefine.java @@ -43,6 +43,7 @@ public class InstanceDataDefine extends DataDefine { builder.addDataStrings(instance.getId()); builder.addDataIntegers(instance.getApplicationId()); builder.addDataStrings(instance.getAgentUUID()); + builder.addDataIntegers(instance.getInstanceId()); builder.addDataLongs(instance.getRegisterTime()); builder.addDataLongs(instance.getHeartBeatTime()); builder.addDataStrings(instance.getOsInfo()); diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java index e0ad40e9f..2e1358d18 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/define/serviceref/ServiceReferenceDataDefine.java @@ -57,23 +57,23 @@ public class ServiceReferenceDataDefine extends DataDefine { } @Override public RemoteData serialize(Object object) { - ServiceReference serviceReference = (ServiceReference)object; + Data data = (Data)object; RemoteData.Builder builder = RemoteData.newBuilder(); - builder.addDataStrings(serviceReference.getId()); - builder.addDataIntegers(serviceReference.getEntryServiceId()); - builder.addDataStrings(serviceReference.getEntryServiceName()); - builder.addDataIntegers(serviceReference.getFrontServiceId()); - builder.addDataStrings(serviceReference.getFrontServiceName()); - builder.addDataIntegers(serviceReference.getBehindServiceId()); - builder.addDataStrings(serviceReference.getBehindServiceName()); - builder.addDataLongs(serviceReference.getS1Lte()); - builder.addDataLongs(serviceReference.getS3Lte()); - builder.addDataLongs(serviceReference.getS5Lte()); - builder.addDataLongs(serviceReference.getS5Gt()); - builder.addDataLongs(serviceReference.getSummary()); - builder.addDataLongs(serviceReference.getError()); - builder.addDataLongs(serviceReference.getCostSummary()); - builder.addDataLongs(serviceReference.getTimeBucket()); + builder.addDataStrings(data.getDataString(0)); + builder.addDataIntegers(data.getDataInteger(0)); + builder.addDataStrings(data.getDataString(1)); + builder.addDataIntegers(data.getDataInteger(1)); + builder.addDataStrings(data.getDataString(2)); + builder.addDataIntegers(data.getDataInteger(2)); + builder.addDataStrings(data.getDataString(3)); + builder.addDataLongs(data.getDataLong(0)); + builder.addDataLongs(data.getDataLong(1)); + builder.addDataLongs(data.getDataLong(2)); + builder.addDataLongs(data.getDataLong(3)); + builder.addDataLongs(data.getDataLong(4)); + builder.addDataLongs(data.getDataLong(5)); + builder.addDataLongs(data.getDataLong(6)); + builder.addDataLongs(data.getDataLong(7)); return builder.build(); } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java index e320a817d..99b11bbbb 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java @@ -9,7 +9,7 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; */ public class StreamModuleGroupDefine implements ModuleGroupDefine { - public static final String GROUP_NAME = "stream"; + public static final String GROUP_NAME = "collector_inside"; @Override public String name() { return GROUP_NAME; diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java index 89f7e64a3..781e65d55 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java @@ -1,7 +1,6 @@ package org.skywalking.apm.collector.stream.grpc; import java.util.HashMap; -import java.util.List; import java.util.Map; import org.skywalking.apm.collector.client.grpc.GRPCClient; import org.skywalking.apm.collector.cluster.ClusterModuleDefine; @@ -10,7 +9,6 @@ import org.skywalking.apm.collector.core.cluster.ClusterDataListener; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.stream.StreamModuleContext; import org.skywalking.apm.collector.stream.StreamModuleGroupDefine; -import org.skywalking.apm.collector.stream.worker.RemoteWorkerRef; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -28,47 +26,39 @@ public class StreamGRPCDataListener extends ClusterDataListener { } private Map clients = new HashMap<>(); - private Map workerRefs = new HashMap<>(); - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { String selfAddress = StreamGRPCConfig.HOST + ":" + StreamGRPCConfig.PORT; - StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME); - List addresses = getAddresses(); - clients.keySet().forEach(address -> { - if (!addresses.contains(address)) { - context.getClusterWorkerContext().remove(workerRefs.get(address)); - workerRefs.remove(address); + if (!clients.containsKey(serverAddress)) { + logger.info("new address: {}, create this address remote worker reference", serverAddress); + String[] hostPort = serverAddress.split(":"); + GRPCClient client = new GRPCClient(hostPort[0], Integer.valueOf(hostPort[1])); + try { + client.initialize(); + } catch (ClientException e) { + e.printStackTrace(); } - }); + clients.put(serverAddress, client); - for (String address : addresses) { - if (!clients.containsKey(address)) { - logger.debug("new address: {}, create this address remote worker reference", address); - String[] hostPort = address.split(":"); - GRPCClient client = new GRPCClient(hostPort[0], Integer.valueOf(hostPort[1])); - try { - client.initialize(); - } catch (ClientException e) { - e.printStackTrace(); - } - clients.put(address, client); - - if (selfAddress.equals(address)) { - context.getClusterWorkerContext().getProviders().forEach(provider -> { - logger.debug("create remote worker self reference, role: {}", provider.role().roleName()); - provider.create(); - }); - } else { - context.getClusterWorkerContext().getProviders().forEach(provider -> { - logger.debug("create remote worker reference, role: {}", provider.role().roleName()); - RemoteWorkerRef workerRef = provider.create(client); - }); - } + if (selfAddress.equals(serverAddress)) { + context.getClusterWorkerContext().getProviders().forEach(provider -> { + logger.info("create remote worker self reference, role: {}", provider.role().roleName()); + provider.create(); + }); } else { - logger.debug("address: {} had remote worker reference, ignore", address); + context.getClusterWorkerContext().getProviders().forEach(provider -> { + logger.info("create remote worker reference, role: {}", provider.role().roleName()); + provider.create(client); + }); } + } else { + logger.info("address: {} had remote worker reference, ignore", serverAddress); } } + + @Override public void serverQuitNotify() { + + } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java index 3a8166476..1cfa93092 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java @@ -20,7 +20,7 @@ import org.skywalking.apm.collector.stream.grpc.handler.RemoteCommonServiceHandl */ public class StreamGRPCModuleDefine extends StreamModuleDefine { - public static final String MODULE_NAME = "stream"; + public static final String MODULE_NAME = "grpc"; @Override public String name() { return MODULE_NAME; diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/handler/RemoteCommonServiceHandler.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/handler/RemoteCommonServiceHandler.java index d1d92ebd3..4494116a0 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/handler/RemoteCommonServiceHandler.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/handler/RemoteCommonServiceHandler.java @@ -10,8 +10,6 @@ import org.skywalking.apm.collector.server.grpc.GRPCHandler; import org.skywalking.apm.collector.stream.StreamModuleContext; import org.skywalking.apm.collector.stream.StreamModuleGroupDefine; import org.skywalking.apm.collector.stream.worker.Role; -import org.skywalking.apm.collector.stream.worker.WorkerInvokeException; -import org.skywalking.apm.collector.stream.worker.WorkerNotFoundException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -30,10 +28,10 @@ public class RemoteCommonServiceHandler extends RemoteCommonServiceGrpc.RemoteCo StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME); Role role = context.getClusterWorkerContext().getRole(roleName); - Object object = role.dataDefine().deserialize(remoteData); try { + Object object = role.dataDefine().deserialize(remoteData); context.getClusterWorkerContext().lookupInSide(roleName).tell(object); - } catch (WorkerNotFoundException | WorkerInvokeException e) { + } catch (Throwable e) { logger.error(e.getMessage(), e); } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerRef.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerRef.java index 707230f6c..86d4ec85c 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerRef.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/RemoteWorkerRef.java @@ -2,6 +2,7 @@ package org.skywalking.apm.collector.stream.worker; import io.grpc.stub.StreamObserver; import org.skywalking.apm.collector.client.grpc.GRPCClient; +import org.skywalking.apm.collector.core.util.Const; import org.skywalking.apm.collector.remote.grpc.proto.Empty; import org.skywalking.apm.collector.remote.grpc.proto.RemoteCommonServiceGrpc; import org.skywalking.apm.collector.remote.grpc.proto.RemoteData; @@ -20,12 +21,14 @@ public class RemoteWorkerRef extends WorkerRef { private final RemoteCommonServiceGrpc.RemoteCommonServiceStub stub; private StreamObserver streamObserver; private final AbstractRemoteWorker remoteWorker; + private final String address; public RemoteWorkerRef(Role role, AbstractRemoteWorker remoteWorker) { super(role); this.remoteWorker = remoteWorker; this.acrossJVM = false; this.stub = null; + this.address = Const.EMPTY_STRING; } public RemoteWorkerRef(Role role, GRPCClient client) { @@ -33,19 +36,23 @@ public class RemoteWorkerRef extends WorkerRef { this.remoteWorker = null; this.acrossJVM = true; this.stub = RemoteCommonServiceGrpc.newStub(client.getChannel()); + this.address = client.toString(); createStreamObserver(); } @Override public void tell(Object message) throws WorkerInvokeException { if (acrossJVM) { - RemoteData remoteData = getRole().dataDefine().serialize(message); + try { + RemoteData remoteData = getRole().dataDefine().serialize(message); + RemoteMessage.Builder builder = RemoteMessage.newBuilder(); + builder.setWorkerRole(getRole().roleName()); + builder.setRemoteData(remoteData); - RemoteMessage.Builder builder = RemoteMessage.newBuilder(); - builder.setWorkerRole(getRole().roleName()); - builder.setRemoteData(remoteData); - - streamObserver.onNext(builder.build()); + streamObserver.onNext(builder.build()); + } catch (Throwable e) { + logger.error(e.getMessage(), e); + } } else { remoteWorker.allocateJob(message); } @@ -113,4 +120,11 @@ public class RemoteWorkerRef extends WorkerRef { } } } + + @Override public String toString() { + StringBuilder toString = new StringBuilder(); + toString.append("acrossJVM: ").append(acrossJVM); + toString.append(", address: ").append(address); + return toString.toString(); + } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java index 1fb3dfeda..9f2f66f65 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java @@ -29,6 +29,11 @@ public class WorkerRefs { public void tell(Object message) throws WorkerInvokeException { logger.debug("WorkerSelector instance of {}", workerSelector.getClass()); + workerRefs.forEach(workerRef -> { + if (workerRef instanceof RemoteWorkerRef) { + logger.info("message hashcode: {}, select workers: {}", message.hashCode(), workerRef.toString()); + } + }); workerSelector.select(workerRefs, message).tell(message); } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java index 00a1104dd..e3d4bffb2 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java @@ -15,6 +15,11 @@ public class UIJettyDataListener extends ClusterDataListener { return PATH; } - @Override public void addressChangedNotify() { + @Override public void serverJoinNotify(String serverAddress) { + + } + + @Override public void serverQuitNotify() { + } } From 479b421ae2a1d30c6a04a6c65e8dfcd89305611c Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 10 Sep 2017 14:15:15 +0800 Subject: [PATCH 2/7] no message --- .../agentjvm/AgentJVMModuleDefine.java | 35 ++------- .../agentjvm/AgentJVMModuleInstaller.java | 34 +++------ .../AgentRegisterModuleDefine.java | 29 +------- .../AgentRegisterModuleInstaller.java | 34 +++------ .../agentserver/AgentServerModuleDefine.java | 29 +------- .../AgentServerModuleInstaller.java | 35 +++------ .../agentstream/AgentStreamModuleDefine.java | 33 +-------- .../AgentStreamModuleInstaller.java | 38 ++++------ .../apm/collector/boot/CollectorStarter.java | 9 +-- .../cluster/ClusterModuleDefine.java | 29 ++++---- .../cluster/ClusterModuleInstaller.java | 24 +++---- .../zookeeper/ClusterZKDataMonitor.java | 38 ++++++---- .../collector/core/client/DataMonitor.java | 3 +- .../framework/CollectorContextHelper.java | 12 +++- .../apm/collector/core/framework/Define.java | 7 -- .../core/module/ModuleConfigContainer.java | 26 +++++++ .../collector/core/module/ModuleDefine.java | 6 ++ .../core/module/ModuleInstaller.java | 17 ++++- .../core/module/MultipleModuleInstaller.java | 55 ++++++++++++++ .../core/module/SingleModuleInstaller.java | 71 ++++++++++++++----- .../collector/core/util/CollectionUtils.java | 4 ++ .../collector/queue/QueueModuleDefine.java | 8 ++- .../collector/queue/QueueModuleInstaller.java | 25 +++---- .../QueueDataCarrierModuleDefine.java | 7 +- .../disruptor/QueueDisruptorModuleDefine.java | 7 +- .../storage/StorageModuleDefine.java | 19 ++--- .../storage/StorageModuleInstaller.java | 23 ++---- .../collector/stream/StreamModuleDefine.java | 33 +-------- .../stream/StreamModuleInstaller.java | 34 ++++----- .../stream/grpc/StreamGRPCModuleDefine.java | 3 +- .../apm/collector/ui/UIModuleDefine.java | 33 +-------- .../apm/collector/ui/UIModuleInstaller.java | 34 +++------ 32 files changed, 339 insertions(+), 455 deletions(-) create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java index 29826dd6a..aca1bbaae 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java +++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java @@ -1,51 +1,24 @@ package org.skywalking.apm.collector.agentjvm; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public abstract class AgentJVMModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - private final Logger logger = LoggerFactory.getLogger(AgentJVMModuleDefine.class); - - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { - try { - configParser().parse(config); - Server server = server(); - serverHolder.holdServer(server, handlerList()); - - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration()); - } catch (ConfigParseException | ServerException e) { - throw new AgentJVMModuleException(e.getMessage(), e); - } - } - @Override protected final Client createClient(DataMonitor dataMonitor) { throw new UnsupportedOperationException(""); } + @Override protected void initializeOtherContext() { + + } + @Override public final boolean defaultModule() { return true; } - - public abstract List handlerList(); } diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java index defe8786e..5eac7dc7e 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java +++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java @@ -1,36 +1,18 @@ package org.skywalking.apm.collector.agentjvm; -import java.util.Iterator; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; /** * @author pengys5 */ -public class AgentJVMModuleInstaller implements ModuleInstaller { +public class AgentJVMModuleInstaller extends MultipleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(AgentJVMModuleInstaller.class); + @Override public String groupName() { + return AgentJVMModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning agent jvm module install"); - - AgentJVMModuleContext context = new AgentJVMModuleContext(AgentJVMModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); - - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); - while (moduleDefineEntry.hasNext()) { - ModuleDefine moduleDefine = moduleDefineEntry.next().getValue(); - logger.info("module {} initialize", moduleDefine.getClass().getName()); - moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder); - } + @Override public Context moduleContext() { + return new AgentJVMModuleContext(groupName()); } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java index 976e78472..166721fb0 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java @@ -1,42 +1,17 @@ package org.skywalking.apm.collector.agentregister; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public abstract class AgentRegisterModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - private final Logger logger = LoggerFactory.getLogger(AgentRegisterModuleDefine.class); + @Override protected void initializeOtherContext() { - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { - try { - configParser().parse(config); - Server server = server(); - serverHolder.holdServer(server, handlerList()); - - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration()); - } catch (ConfigParseException | ServerException e) { - throw new AgentRegisterModuleException(e.getMessage(), e); - } } @Override protected final Client createClient(DataMonitor dataMonitor) { @@ -46,6 +21,4 @@ public abstract class AgentRegisterModuleDefine extends ModuleDefine implements @Override public final boolean defaultModule() { return true; } - - public abstract List handlerList(); } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleInstaller.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleInstaller.java index 0bf2218d1..5567fe9ba 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleInstaller.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleInstaller.java @@ -1,36 +1,18 @@ package org.skywalking.apm.collector.agentregister; -import java.util.Iterator; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; /** * @author pengys5 */ -public class AgentRegisterModuleInstaller implements ModuleInstaller { +public class AgentRegisterModuleInstaller extends MultipleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(AgentRegisterModuleInstaller.class); + @Override public String groupName() { + return AgentRegisterModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning agent register module install"); - - AgentRegisterModuleContext context = new AgentRegisterModuleContext(AgentRegisterModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); - - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); - while (moduleDefineEntry.hasNext()) { - ModuleDefine moduleDefine = moduleDefineEntry.next().getValue(); - logger.info("module {} initialize", moduleDefine.getClass().getName()); - moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder); - } + @Override public Context moduleContext() { + return new AgentRegisterModuleContext(groupName()); } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java index e7e7d829a..84b75c0fc 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java @@ -1,47 +1,20 @@ package org.skywalking.apm.collector.agentserver; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public abstract class AgentServerModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - private final Logger logger = LoggerFactory.getLogger(AgentServerModuleDefine.class); + @Override protected void initializeOtherContext() { - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { - try { - configParser().parse(config); - Server server = server(); - serverHolder.holdServer(server, handlerList()); - - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration()); - } catch (ConfigParseException | ServerException e) { - throw new AgentServerModuleException(e.getMessage(), e); - } } @Override protected final Client createClient(DataMonitor dataMonitor) { throw new UnsupportedOperationException(""); } - - public abstract List handlerList(); } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java index c63216104..351a8655f 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java @@ -1,37 +1,18 @@ package org.skywalking.apm.collector.agentserver; -import java.util.Iterator; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; /** * @author pengys5 */ -public class AgentServerModuleInstaller implements ModuleInstaller { +public class AgentServerModuleInstaller extends MultipleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(AgentServerModuleInstaller.class); + @Override public String groupName() { + return AgentServerModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning agent server module install"); - - AgentServerModuleContext context = new AgentServerModuleContext(AgentServerModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); - - logger.info("could not configure agent server module, use the default"); - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); - while (moduleDefineEntry.hasNext()) { - ModuleDefine moduleDefine = moduleDefineEntry.next().getValue(); - logger.info("module {} initialize", moduleDefine.getClass().getName()); - moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder); - } + @Override public Context moduleContext() { + return new AgentServerModuleContext(groupName()); } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java index 153508827..762e6c525 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java @@ -1,44 +1,15 @@ package org.skywalking.apm.collector.agentstream; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public abstract class AgentStreamModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - private final Logger logger = LoggerFactory.getLogger(AgentStreamModuleDefine.class); - - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { - try { - configParser().parse(config); - Server server = server(); - serverHolder.holdServer(server, handlerList()); - - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration()); - } catch (ConfigParseException | ServerException e) { - throw new AgentStreamModuleException(e.getMessage(), e); - } - } - @Override protected final Client createClient(DataMonitor dataMonitor) { throw new UnsupportedOperationException(""); } @@ -47,5 +18,7 @@ public abstract class AgentStreamModuleDefine extends ModuleDefine implements Cl return true; } - public abstract List handlerList(); + @Override protected void initializeOtherContext() { + + } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java index bf5227d48..073aa0c78 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java @@ -1,39 +1,27 @@ package org.skywalking.apm.collector.agentstream; -import java.util.Iterator; -import java.util.Map; import org.skywalking.apm.collector.agentstream.worker.storage.PersistenceTimer; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.config.ConfigException; +import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; +import org.skywalking.apm.collector.core.server.ServerException; /** * @author pengys5 */ -public class AgentStreamModuleInstaller implements ModuleInstaller { +public class AgentStreamModuleInstaller extends MultipleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(AgentStreamModuleInstaller.class); + @Override public String groupName() { + return AgentStreamModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning agent stream module install"); - - AgentStreamModuleContext context = new AgentStreamModuleContext(AgentStreamModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); - - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); - while (moduleDefineEntry.hasNext()) { - ModuleDefine moduleDefine = moduleDefineEntry.next().getValue(); - logger.info("module {} initialize", moduleDefine.getClass().getName()); - moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder); - } + @Override public Context moduleContext() { + return new AgentStreamModuleContext(groupName()); + } + @Override public void install() throws DefineException, ConfigException, ServerException { + super.install(); new PersistenceTimer().start(); } } diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java index 74d041c27..5e1752bcb 100644 --- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java @@ -1,7 +1,6 @@ package org.skywalking.apm.collector.boot; import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.DefineException; @@ -34,11 +33,13 @@ public class CollectorStarter implements Starter { Map> moduleDefineMap = defineLoader.load(); ServerHolder serverHolder = new ServerHolder(); - moduleGroupDefineMap.get(ClusterModuleGroupDefine.GROUP_NAME).moduleInstaller().install(configuration.get(ClusterModuleGroupDefine.GROUP_NAME), moduleDefineMap.get(ClusterModuleGroupDefine.GROUP_NAME), serverHolder); - moduleGroupDefineMap.remove(ClusterModuleGroupDefine.GROUP_NAME); +// moduleGroupDefineMap.get(ClusterModuleGroupDefine.GROUP_NAME).moduleInstaller().install(configuration.get(ClusterModuleGroupDefine.GROUP_NAME), moduleDefineMap.get(ClusterModuleGroupDefine.GROUP_NAME), serverHolder); +// moduleGroupDefineMap.remove(ClusterModuleGroupDefine.GROUP_NAME); for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) { - moduleGroupDefine.moduleInstaller().install(configuration.get(moduleGroupDefine.name()), moduleDefineMap.get(moduleGroupDefine.name()), serverHolder); + moduleGroupDefine.moduleInstaller().injectConfiguration(configuration.get(moduleGroupDefine.name()), moduleDefineMap.get(moduleGroupDefine.name())); + moduleGroupDefine.moduleInstaller().injectServerHolder(serverHolder); + moduleGroupDefine.moduleInstaller().install(); } serverHolder.getServers().forEach(server -> { diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java index 900cf9b3d..dc1880881 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java @@ -1,18 +1,16 @@ package org.skywalking.apm.collector.cluster; -import java.util.Map; +import java.util.List; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.cluster.ClusterModuleException; import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; -import org.skywalking.apm.collector.core.config.ConfigParseException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.framework.Handler; +import org.skywalking.apm.collector.core.framework.UnexpectedException; import org.skywalking.apm.collector.core.module.ModuleDefine; import org.skywalking.apm.collector.core.module.ModuleRegistration; import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerHolder; /** * @author pengys5 @@ -22,22 +20,20 @@ public abstract class ClusterModuleDefine extends ModuleDefine { public static final String BASE_CATALOG = "skywalking"; private Client client; + private DataMonitor dataMonitor; - @Override public final void initialize(Map config, ServerHolder serverHolder) throws ClusterModuleException { + @Override protected void initializeOtherContext() { try { - configParser().parse(config); - - DataMonitor dataMonitor = dataMonitor(); + dataMonitor = dataMonitor(); client = createClient(dataMonitor); client.initialize(); dataMonitor.setClient(client); - ClusterModuleRegistrationReader reader = registrationReader(dataMonitor); - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setDataMonitor(dataMonitor); - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setReader(reader); - } catch (ConfigParseException | ClientException e) { - throw new ClusterModuleException(e.getMessage(), e); + CollectorContextHelper.INSTANCE.getClusterModuleContext().setDataMonitor(dataMonitor); + CollectorContextHelper.INSTANCE.getClusterModuleContext().setReader(reader); + } catch (ClientException e) { + throw new UnexpectedException(e.getMessage()); } } @@ -49,6 +45,10 @@ public abstract class ClusterModuleDefine extends ModuleDefine { throw new UnsupportedOperationException(""); } + @Override public final List handlerList() { + throw new UnsupportedOperationException(""); + } + @Override protected final ModuleRegistration registration() { throw new UnsupportedOperationException("Cluster module do not need module registration."); } @@ -56,4 +56,5 @@ public abstract class ClusterModuleDefine extends ModuleDefine { public abstract DataMonitor dataMonitor(); public abstract ClusterModuleRegistrationReader registrationReader(DataMonitor dataMonitor); + } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java index f8992796c..e7af136f1 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java @@ -1,30 +1,22 @@ package org.skywalking.apm.collector.cluster; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; +import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.module.SingleModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public class ClusterModuleInstaller extends SingleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(ClusterModuleInstaller.class); + @Override public String groupName() { + return ClusterModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning cluster module install"); - - ClusterModuleContext context = new ClusterModuleContext(ClusterModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); - - installSingle(moduleConfig, moduleDefineMap, serverHolder); + @Override public Context moduleContext() { + ClusterModuleContext clusterModuleContext = new ClusterModuleContext(ClusterModuleGroupDefine.GROUP_NAME); + CollectorContextHelper.INSTANCE.putClusterContext(clusterModuleContext); + return clusterModuleContext; } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java index da6d99e11..0262005e2 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java @@ -1,5 +1,6 @@ package org.skywalking.apm.collector.cluster.zookeeper; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -12,6 +13,7 @@ import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClientException; import org.skywalking.apm.collector.client.zookeeper.util.PathUtils; import org.skywalking.apm.collector.cluster.ClusterNodeExistException; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; @@ -31,9 +33,11 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { private ZookeeperClient client; private Map listeners; + private Map registrations; public ClusterZKDataMonitor() { listeners = new LinkedHashMap<>(); + registrations = new LinkedHashMap<>(); } @Override public void process(WatchedEvent event) { @@ -65,24 +69,32 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { this.client = (ZookeeperClient)client; } + @Override public void start() throws CollectorException { + Iterator> entryIterator = registrations.entrySet().iterator(); + while (entryIterator.hasNext()) { + Map.Entry next = entryIterator.next(); + createPath(next.getKey()); + + ModuleRegistration.Value value = next.getValue().buildValue(); + String contextPath = value.getContextPath() == null ? "" : value.getContextPath(); + + client.getChildren(next.getKey(), true); + String serverPath = next.getKey() + "/" + value.getHostPort(); + + if (client.exists(serverPath, false) == null) { + setData(serverPath, contextPath); + } else { + throw new ClusterNodeExistException("current address: " + value.getHostPort() + " has been registered, check the host and port configuration or wait a moment."); + } + } + } + @Override public void addListener(ClusterDataListener listener, ModuleRegistration registration) throws ClientException { String path = PathUtils.convertKey2Path(listener.path()); logger.info("listener path: {}", path); listeners.put(path, listener); - createPath(path); - - ModuleRegistration.Value value = registration.buildValue(); - String contextPath = value.getContextPath() == null ? "" : value.getContextPath(); - - client.getChildren(path, true); - String serverPath = path + "/" + value.getHostPort(); - - if (client.exists(serverPath, false) == null) { - setData(serverPath, contextPath); - } else { - throw new ClusterNodeExistException("current address: " + value.getHostPort() + " has been registered, check the host and port configuration or wait a moment."); - } + registrations.put(path, registration); } @Override public ClusterDataListener getListener(String path) { diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java index c5e8d537d..c8b1a5df0 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java @@ -1,12 +1,13 @@ package org.skywalking.apm.collector.core.client; import org.skywalking.apm.collector.core.cluster.ClusterDataListener; +import org.skywalking.apm.collector.core.framework.Starter; import org.skywalking.apm.collector.core.module.ModuleRegistration; /** * @author pengys5 */ -public interface DataMonitor { +public interface DataMonitor extends Starter{ void setClient(Client client); void addListener(ClusterDataListener listener, ModuleRegistration registration) throws ClientException; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/CollectorContextHelper.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/CollectorContextHelper.java index b0d6e96cf..c2e4891ca 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/CollectorContextHelper.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/CollectorContextHelper.java @@ -2,6 +2,7 @@ package org.skywalking.apm.collector.core.framework; import java.util.LinkedHashMap; import java.util.Map; +import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; /** * @author pengys5 @@ -9,12 +10,17 @@ import java.util.Map; public enum CollectorContextHelper { INSTANCE; - private Map contexts = new LinkedHashMap(); + private ClusterModuleContext clusterModuleContext; + private Map contexts = new LinkedHashMap<>(); public Context getContext(String moduleGroupName) { return contexts.get(moduleGroupName); } + public ClusterModuleContext getClusterModuleContext() { + return this.clusterModuleContext; + } + public void putContext(Context context) { if (contexts.containsKey(context.getGroupName())) { throw new UnsupportedOperationException("This module context was put, do not allow put a new one"); @@ -22,4 +28,8 @@ public enum CollectorContextHelper { contexts.put(context.getGroupName(), context); } } + + public void putClusterContext(ClusterModuleContext clusterModuleContext) { + this.clusterModuleContext = clusterModuleContext; + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Define.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Define.java index 69e97e294..21c3b042e 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Define.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/framework/Define.java @@ -1,15 +1,8 @@ package org.skywalking.apm.collector.core.framework; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.server.ServerHolder; - /** * @author pengys5 */ public interface Define { - - void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException; - String name(); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java new file mode 100644 index 000000000..8c416f1d4 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java @@ -0,0 +1,26 @@ +package org.skywalking.apm.collector.core.module; + +import java.util.Map; + +/** + * @author pengys5 + */ +public abstract class ModuleConfigContainer implements ModuleInstaller { + + private Map moduleConfig; + private Map moduleDefineMap; + + @Override + public final void injectConfiguration(Map moduleConfig, Map moduleDefineMap) { + this.moduleConfig = moduleConfig; + this.moduleDefineMap = moduleDefineMap; + } + + public final Map getModuleConfig() { + return moduleConfig; + } + + public final Map getModuleDefineMap() { + return moduleDefineMap; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java index 49cc7704a..f06583209 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java @@ -1,8 +1,10 @@ package org.skywalking.apm.collector.core.module; +import java.util.List; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.framework.Define; +import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.server.Server; /** @@ -20,5 +22,9 @@ public abstract class ModuleDefine implements Define { protected abstract Server server(); + public abstract List handlerList(); + protected abstract ModuleRegistration registration(); + + protected abstract void initializeOtherContext(); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java index 2ec52b90b..563a30b00 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java @@ -2,13 +2,26 @@ package org.skywalking.apm.collector.core.module; import java.util.Map; import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.config.ConfigException; +import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.core.server.ServerException; import org.skywalking.apm.collector.core.server.ServerHolder; /** * @author pengys5 */ public interface ModuleInstaller { - void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException; + + void injectServerHolder(ServerHolder serverHolder); + + String groupName(); + + Context moduleContext(); + + void injectConfiguration(Map moduleConfig, Map moduleDefineMap); + + void preInstall() throws DefineException, ConfigException, ServerException; + + void install() throws ClientException, DefineException, ConfigException, ServerException; } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java new file mode 100644 index 000000000..cca15bc04 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java @@ -0,0 +1,55 @@ +package org.skywalking.apm.collector.core.module; + +import java.util.Iterator; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; +import org.skywalking.apm.collector.core.config.ConfigException; +import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.core.server.ServerHolder; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * @author pengys5 + */ +public abstract class MultipleModuleInstaller extends ModuleConfigContainer { + + private final Logger logger = LoggerFactory.getLogger(MultipleModuleInstaller.class); + + public MultipleModuleInstaller() { + moduleDefines = new LinkedList<>(); + } + + private List moduleDefines; + private ServerHolder serverHolder; + + @Override public final void injectServerHolder(ServerHolder serverHolder) { + this.serverHolder = serverHolder; + } + + @Override public final void preInstall() throws DefineException, ConfigException, ServerException { + Map moduleConfig = getModuleConfig(); + Map moduleDefineMap = getModuleDefineMap(); + + Iterator> moduleDefineIterator = moduleDefineMap.entrySet().iterator(); + while (moduleDefineIterator.hasNext()) { + Map.Entry moduleDefineEntry = moduleDefineIterator.next(); + logger.info("module {} initialize", moduleDefineEntry.getKey()); + moduleDefineEntry.getValue().configParser().parse(moduleConfig.get(moduleDefineEntry.getKey())); + moduleDefines.add(moduleDefineEntry.getValue()); + serverHolder.holdServer(moduleDefineEntry.getValue().server(), moduleDefineEntry.getValue().handlerList()); + } + } + + @Override public void install() throws DefineException, ConfigException, ServerException { + preInstall(); + + CollectorContextHelper.INSTANCE.putContext(moduleContext()); + moduleDefines.forEach(moduleDefine -> { + moduleDefine.initializeOtherContext(); + }); + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java index 247282402..9ee19d3fe 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java @@ -3,7 +3,12 @@ package org.skywalking.apm.collector.core.module; import java.util.Iterator; import java.util.Map; import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; +import org.skywalking.apm.collector.core.cluster.ClusterModuleException; +import org.skywalking.apm.collector.core.config.ConfigException; +import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.core.server.ServerException; import org.skywalking.apm.collector.core.server.ServerHolder; import org.skywalking.apm.collector.core.util.CollectionUtils; import org.slf4j.Logger; @@ -12,28 +17,60 @@ import org.slf4j.LoggerFactory; /** * @author pengys5 */ -public abstract class SingleModuleInstaller implements ModuleInstaller { +public abstract class SingleModuleInstaller extends ModuleConfigContainer { private final Logger logger = LoggerFactory.getLogger(SingleModuleInstaller.class); - protected void installSingle(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - ModuleDefine moduleDefine = null; - if (CollectionUtils.isEmpty(moduleConfig)) { - logger.info("could not configure module, use the default"); - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); - while (moduleDefineEntry.hasNext()) { - moduleDefine = moduleDefineEntry.next().getValue(); - if (moduleDefine.defaultModule()) { - logger.info("module {} initialize", moduleDefine.getClass().getName()); - moduleDefine.initialize(null, serverHolder); - break; - } + private ModuleDefine moduleDefine; + private ServerHolder serverHolder; + + @Override public final void injectServerHolder(ServerHolder serverHolder) { + this.serverHolder = serverHolder; + } + + @Override public final void preInstall() throws DefineException, ConfigException, ServerException { + Map moduleConfig = getModuleConfig(); + Map moduleDefineMap = getModuleDefineMap(); + if (CollectionUtils.isNotEmpty(moduleConfig)) { + if (moduleConfig.size() > 1) { + throw new ClusterModuleException("single module, but configure multiple modules"); + } + + Map.Entry configEntry = moduleConfig.entrySet().iterator().next(); + if (moduleDefineMap.containsKey(configEntry.getKey())) { + moduleDefine = moduleDefineMap.get(configEntry.getKey()); + moduleDefine.configParser().parse(configEntry.getValue()); + } else { + throw new ClusterModuleException("module name incorrect, please check the module name in application.yml"); } } else { - Map.Entry configEntry = moduleConfig.entrySet().iterator().next(); - moduleDefine = moduleDefineMap.get(configEntry.getKey()); - moduleDefine.initialize(configEntry.getValue(), serverHolder); + logger.info("could not configure module, use the default"); + Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); + + boolean hasDefaultModule = false; + while (moduleDefineEntry.hasNext()) { + if (moduleDefineEntry.next().getValue().defaultModule()) { + logger.info("module {} initialize", moduleDefine.getClass().getName()); + if (hasDefaultModule) { + throw new ClusterModuleException("single module, but configure multiple default module"); + } + moduleDefine = moduleDefineEntry.next().getValue(); + moduleDefine.configParser().parse(null); + hasDefaultModule = true; + } + } + } + serverHolder.holdServer(moduleDefine.server(), moduleDefine.handlerList()); + } + + @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { + preInstall(); + moduleDefine.initializeOtherContext(); + + CollectorContextHelper.INSTANCE.putContext(moduleContext()); + if (moduleDefine instanceof ClusterDataListenerDefine) { + ClusterDataListenerDefine listenerDefine = (ClusterDataListenerDefine)moduleDefine; + CollectorContextHelper.INSTANCE.getClusterModuleContext().getDataMonitor().addListener(listenerDefine.listener(), moduleDefine.registration()); } } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java index 3566341b3..e7626c24e 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/CollectionUtils.java @@ -20,6 +20,10 @@ public class CollectionUtils { return !isEmpty(list); } + public static boolean isNotEmpty(Map map) { + return !isEmpty(map); + } + public static boolean isNotEmpty(T[] array) { return array != null && array.length > 0; } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java index 88bbae0c7..3b94c44f0 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java @@ -1,7 +1,9 @@ package org.skywalking.apm.collector.queue; +import java.util.List; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.DataMonitor; +import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleConfigParser; import org.skywalking.apm.collector.core.module.ModuleDefine; import org.skywalking.apm.collector.core.module.ModuleRegistration; @@ -15,7 +17,7 @@ public abstract class QueueModuleDefine extends ModuleDefine { throw new UnsupportedOperationException(""); } - @Override protected Client createClient(DataMonitor dataMonitor) { + @Override protected final Client createClient(DataMonitor dataMonitor) { throw new UnsupportedOperationException(""); } @@ -26,4 +28,8 @@ public abstract class QueueModuleDefine extends ModuleDefine { @Override protected final Server server() { throw new UnsupportedOperationException(""); } + + @Override public final List handlerList() { + throw new UnsupportedOperationException(""); + } } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java index b0ed3238a..1ed4c7996 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java @@ -1,28 +1,29 @@ package org.skywalking.apm.collector.queue; -import java.util.Map; import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; import org.skywalking.apm.collector.core.module.SingleModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.queue.datacarrier.DataCarrierQueueCreator; /** * @author pengys5 */ public class QueueModuleInstaller extends SingleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(QueueModuleInstaller.class); + @Override public String groupName() { + return QueueModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning queue module install"); - QueueModuleContext context = new QueueModuleContext(QueueModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); + @Override public Context moduleContext() { + return new QueueModuleContext(groupName()); + } - installSingle(moduleConfig, moduleDefineMap, serverHolder); + @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { + super.install(); + ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())).setQueueCreator(new DataCarrierQueueCreator()); } } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java index af5db748a..12cc17463 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java @@ -1,10 +1,6 @@ package org.skywalking.apm.collector.queue.datacarrier; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.server.ServerHolder; import org.skywalking.apm.collector.queue.QueueModuleContext; import org.skywalking.apm.collector.queue.QueueModuleDefine; import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; @@ -26,8 +22,7 @@ public class QueueDataCarrierModuleDefine extends QueueModuleDefine { return false; } - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { + @Override protected void initializeOtherContext() { ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setQueueCreator(new DataCarrierQueueCreator()); } } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java index d74cb2dee..4eeaf0de8 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java @@ -1,10 +1,6 @@ package org.skywalking.apm.collector.queue.disruptor; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.server.ServerHolder; import org.skywalking.apm.collector.queue.QueueModuleContext; import org.skywalking.apm.collector.queue.QueueModuleDefine; import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; @@ -26,8 +22,7 @@ public class QueueDisruptorModuleDefine extends QueueModuleDefine { return true; } - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { + @Override protected void initializeOtherContext() { ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setQueueCreator(new DisruptorQueueCreator()); } } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java index 57ccb77e9..c088f8aa3 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java @@ -1,17 +1,17 @@ package org.skywalking.apm.collector.storage; -import java.util.Map; +import java.util.List; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.cluster.ClusterDataListener; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.config.ConfigParseException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.core.framework.Handler; +import org.skywalking.apm.collector.core.framework.UnexpectedException; import org.skywalking.apm.collector.core.module.ModuleDefine; import org.skywalking.apm.collector.core.module.ModuleRegistration; import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerHolder; import org.skywalking.apm.collector.core.storage.StorageException; import org.skywalking.apm.collector.core.storage.StorageInstaller; import org.slf4j.Logger; @@ -24,11 +24,8 @@ public abstract class StorageModuleDefine extends ModuleDefine implements Cluste private final Logger logger = LoggerFactory.getLogger(StorageModuleDefine.class); - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { + @Override protected void initializeOtherContext() { try { - configParser().parse(config); - StorageModuleContext context = (StorageModuleContext)CollectorContextHelper.INSTANCE.getContext(StorageModuleGroupDefine.GROUP_NAME); Client client = createClient(null); client.initialize(); @@ -36,11 +33,15 @@ public abstract class StorageModuleDefine extends ModuleDefine implements Cluste injectClientIntoDAO(client); storageInstaller().install(client); - } catch (ConfigParseException | StorageException e) { - throw new StorageModuleException(e.getMessage(), e); + } catch (ClientException | StorageException | DefineException e) { + throw new UnexpectedException(e.getMessage()); } } + @Override public final List handlerList() { + throw new UnsupportedOperationException(""); + } + @Override protected final Server server() { throw new UnsupportedOperationException(""); } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java index f15b9861c..67e8d217b 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java @@ -1,29 +1,18 @@ package org.skywalking.apm.collector.storage; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; +import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.module.SingleModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public class StorageModuleInstaller extends SingleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(StorageModuleInstaller.class); + @Override public String groupName() { + return StorageModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning storage module install"); - - StorageModuleContext context = new StorageModuleContext(StorageModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); - - installSingle(moduleConfig, moduleDefineMap, serverHolder); + @Override public Context moduleContext() { + return new StorageModuleContext(groupName()); } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleDefine.java index 89dad56db..399b6ba66 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleDefine.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleDefine.java @@ -1,45 +1,18 @@ package org.skywalking.apm.collector.stream; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public abstract class StreamModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - private final Logger logger = LoggerFactory.getLogger(StreamModuleDefine.class); - - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { - try { - configParser().parse(config); - Server server = server(); - serverHolder.holdServer(server, handlerList()); - - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration()); - } catch (ConfigParseException | ServerException e) { - throw new StreamModuleException(e.getMessage(), e); - } - } - @Override public final boolean defaultModule() { return true; } - public abstract List handlerList() throws DefineException; + @Override protected final void initializeOtherContext() { + + } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java index a1f22c2fa..1c2a7fd21 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java @@ -1,15 +1,13 @@ package org.skywalking.apm.collector.stream; -import java.util.Iterator; import java.util.List; -import java.util.Map; import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.ObjectUtils; +import org.skywalking.apm.collector.core.module.SingleModuleInstaller; +import org.skywalking.apm.collector.core.server.ServerException; import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider; import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider; import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext; @@ -22,25 +20,21 @@ import org.slf4j.LoggerFactory; /** * @author pengys5 */ -public class StreamModuleInstaller implements ModuleInstaller { +public class StreamModuleInstaller extends SingleModuleInstaller { private final Logger logger = LoggerFactory.getLogger(StreamModuleInstaller.class); - @Override public void install(Map moduleConfig, Map moduleDefineMap, - ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning stream module install"); - StreamModuleContext context = new StreamModuleContext(StreamModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); + @Override public String groupName() { + return StreamModuleGroupDefine.GROUP_NAME; + } - initializeWorker(context); + @Override public Context moduleContext() { + return new StreamModuleContext(groupName()); + } - logger.info("could not configure cluster module, use the default"); - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); - while (moduleDefineEntry.hasNext()) { - ModuleDefine moduleDefine = moduleDefineEntry.next().getValue(); - logger.info("module {} initialize", moduleDefine.getClass().getName()); - moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder); - } + @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { + super.install(); + initializeWorker((StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())); } private void initializeWorker(StreamModuleContext context) throws DefineException { diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java index 1cfa93092..1e3897d51 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java @@ -5,7 +5,6 @@ import java.util.List; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListener; -import org.skywalking.apm.collector.core.framework.DefineException; import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleConfigParser; import org.skywalking.apm.collector.core.module.ModuleRegistration; @@ -50,7 +49,7 @@ public class StreamGRPCModuleDefine extends StreamModuleDefine { return new StreamGRPCDataListener(); } - @Override public List handlerList() throws DefineException { + @Override public List handlerList() { List handlers = new ArrayList<>(); handlers.add(new RemoteCommonServiceHandler()); return handlers; diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java index 2f43dfeb4..bc7643d7b 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java @@ -1,44 +1,15 @@ package org.skywalking.apm.collector.ui; -import java.util.List; -import java.util.Map; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; -import org.skywalking.apm.collector.core.config.ConfigParseException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.server.Server; -import org.skywalking.apm.collector.core.server.ServerException; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public abstract class UIModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - private final Logger logger = LoggerFactory.getLogger(UIModuleDefine.class); - - @Override - public final void initialize(Map config, ServerHolder serverHolder) throws DefineException, ClientException { - try { - configParser().parse(config); - Server server = server(); - serverHolder.holdServer(server, handlerList()); - - ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getDataMonitor().addListener(listener(), registration()); - } catch (ConfigParseException | ServerException e) { - throw new UIModuleException(e.getMessage(), e); - } - } - @Override protected final Client createClient(DataMonitor dataMonitor) { throw new UnsupportedOperationException(""); } @@ -47,5 +18,7 @@ public abstract class UIModuleDefine extends ModuleDefine implements ClusterData return true; } - public abstract List handlerList(); + @Override protected final void initializeOtherContext() { + + } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java index 4bda90127..4308cf6c9 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java @@ -1,36 +1,18 @@ package org.skywalking.apm.collector.ui; -import java.util.Iterator; -import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.framework.CollectorContextHelper; -import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.ModuleDefine; -import org.skywalking.apm.collector.core.module.ModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerHolder; -import org.skywalking.apm.collector.core.util.ObjectUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import org.skywalking.apm.collector.core.framework.Context; +import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; /** * @author pengys5 */ -public class UIModuleInstaller implements ModuleInstaller { +public class UIModuleInstaller extends MultipleModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(UIModuleInstaller.class); + @Override public String groupName() { + return UIModuleGroupDefine.GROUP_NAME; + } - @Override public void install(Map moduleConfig, - Map moduleDefineMap, ServerHolder serverHolder) throws DefineException, ClientException { - logger.info("beginning ui module install"); - - UIModuleContext context = new UIModuleContext(UIModuleGroupDefine.GROUP_NAME); - CollectorContextHelper.INSTANCE.putContext(context); - - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); - while (moduleDefineEntry.hasNext()) { - ModuleDefine moduleDefine = moduleDefineEntry.next().getValue(); - logger.info("module {} initialize", moduleDefine.getClass().getName()); - moduleDefine.initialize((ObjectUtils.isNotEmpty(moduleConfig) && moduleConfig.containsKey(moduleDefine.name())) ? moduleConfig.get(moduleDefine.name()) : null, serverHolder); - } + @Override public Context moduleContext() { + return new UIModuleContext(groupName()); } } From 897cd242529b6a97972ac73666a1c00d7d0f771c Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 10 Sep 2017 18:54:35 +0800 Subject: [PATCH 3/7] no message --- ...ava => AgentJVMCommonModuleInstaller.java} | 9 ++++- .../agentjvm/AgentJVMModuleDefine.java | 3 +- .../agentjvm/AgentJVMModuleGroupDefine.java | 8 +++- .../grpc/AgentJVMGRPCDataListener.java | 2 +- ...> AgentRegisterCommonModuleInstaller.java} | 9 ++++- .../AgentRegisterModuleDefine.java | 3 +- .../AgentRegisterModuleGroupDefine.java | 8 +++- .../grpc/AgentRegisterGRPCDataListener.java | 2 +- .../jetty/AgentRegisterJettyDataListener.java | 2 +- ... => AgentServerCommonModuleInstaller.java} | 9 ++++- .../agentserver/AgentServerModuleDefine.java | 3 +- .../AgentServerModuleGroupDefine.java | 7 +++- .../jetty/AgentServerJettyDataListener.java | 2 +- .../handler/AgentStreamGRPCServerHandler.java | 6 +-- .../AgentStreamJettyServerHandler.java | 8 +--- .../jetty/handler/UIJettyServerHandler.java | 8 +--- ... => AgentStreamCommonModuleInstaller.java} | 12 ++++-- .../agentstream/AgentStreamModuleDefine.java | 3 +- .../AgentStreamModuleGroupDefine.java | 7 +++- .../grpc/AgentStreamGRPCDataListener.java | 2 +- .../jetty/AgentStreamJettyDataListener.java | 2 +- .../collector/boot/CollectorBootStartUp.java | 7 ++-- .../apm/collector/boot/CollectorStarter.java | 38 +++++++++++++++---- .../elasticsearch/ElasticSearchClient.java | 4 ++ .../apm/collector/client/grpc/GRPCClient.java | 4 ++ .../apm/collector/client/h2/H2Client.java | 4 ++ .../collector/client/redis/RedisClient.java | 4 ++ .../client/zookeeper/ZookeeperClient.java | 4 ++ .../cluster/ClusterModuleDefine.java | 20 +++++----- .../cluster/ClusterModuleGroupDefine.java | 7 +++- .../cluster/ClusterModuleInstaller.java | 13 +++++++ .../redis/ClusterRedisModuleDefine.java | 6 +-- .../ClusterStandaloneModuleDefine.java | 6 +-- .../zookeeper/ClusterZKDataMonitor.java | 3 ++ .../zookeeper/ClusterZKModuleDefine.java | 14 ++++--- .../apm/collector/core/client/Client.java | 2 + .../collector/core/client/DataMonitor.java | 2 +- .../core/cluster/ClusterDataListener.java | 2 +- .../core/module/CommonModuleInstaller.java | 37 ++++++++++++++++++ .../core/module/ModuleConfigContainer.java | 26 ------------- .../collector/core/module/ModuleDefine.java | 3 +- .../core/module/ModuleGroupDefineLoader.java | 11 +++--- .../core/module/ModuleInstaller.java | 6 +++ ...ava => MultipleCommonModuleInstaller.java} | 31 +++++++++++---- .../core/module/SingleModuleInstaller.java | 32 +++++++++++----- .../collector/core/server/ServerHolder.java | 5 +++ .../collector/core/util/DefinitionLoader.java | 4 +- .../collector/queue/QueueModuleDefine.java | 12 ++---- .../queue/QueueModuleGroupDefine.java | 7 +++- .../collector/queue/QueueModuleInstaller.java | 21 +++++++++- .../DataCarrierQueueConfigParser.java | 15 ++++++++ .../QueueDataCarrierModuleDefine.java | 5 +++ ...r.java => DisruptorQueueConfigParser.java} | 4 +- .../disruptor/QueueDisruptorModuleDefine.java | 5 +++ .../storage/StorageModuleDefine.java | 14 +++---- .../storage/StorageModuleGroupDefine.java | 7 +++- .../storage/StorageModuleInstaller.java | 10 +++++ .../StorageElasticSearchModuleDefine.java | 3 +- .../storage/h2/StorageH2ModuleDefine.java | 3 +- .../stream/StreamModuleGroupDefine.java | 7 +++- .../stream/StreamModuleInstaller.java | 14 ++++--- .../stream/grpc/StreamGRPCDataListener.java | 22 ++++++++++- .../stream/grpc/StreamGRPCModuleDefine.java | 3 +- ...ller.java => UICommonModuleInstaller.java} | 9 ++++- .../apm/collector/ui/UIModuleDefine.java | 3 +- .../apm/collector/ui/UIModuleGroupDefine.java | 7 +++- .../ui/jetty/UIJettyDataListener.java | 3 +- 67 files changed, 411 insertions(+), 173 deletions(-) rename apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/{AgentJVMModuleInstaller.java => AgentJVMCommonModuleInstaller.java} (56%) rename apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/{AgentRegisterModuleInstaller.java => AgentRegisterCommonModuleInstaller.java} (57%) rename apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/{AgentServerModuleInstaller.java => AgentServerCommonModuleInstaller.java} (56%) rename apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/{AgentStreamModuleInstaller.java => AgentStreamCommonModuleInstaller.java} (66%) create mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java delete mode 100644 apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java rename apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/{MultipleModuleInstaller.java => MultipleCommonModuleInstaller.java} (60%) create mode 100644 apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueConfigParser.java rename apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/{QueueDisruptorConfigParser.java => DisruptorQueueConfigParser.java} (83%) rename apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/{UIModuleInstaller.java => UICommonModuleInstaller.java} (55%) diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMCommonModuleInstaller.java similarity index 56% rename from apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java rename to apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMCommonModuleInstaller.java index 5eac7dc7e..634e94d16 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleInstaller.java +++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMCommonModuleInstaller.java @@ -1,12 +1,13 @@ package org.skywalking.apm.collector.agentjvm; +import java.util.List; import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; +import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller; /** * @author pengys5 */ -public class AgentJVMModuleInstaller extends MultipleModuleInstaller { +public class AgentJVMCommonModuleInstaller extends MultipleCommonModuleInstaller { @Override public String groupName() { return AgentJVMModuleGroupDefine.GROUP_NAME; @@ -15,4 +16,8 @@ public class AgentJVMModuleInstaller extends MultipleModuleInstaller { @Override public Context moduleContext() { return new AgentJVMModuleContext(groupName()); } + + @Override public List dependenceModules() { + return null; + } } diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java index aca1bbaae..4b5c26f96 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java +++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleDefine.java @@ -1,7 +1,6 @@ package org.skywalking.apm.collector.agentjvm; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; import org.skywalking.apm.collector.core.module.ModuleDefine; @@ -10,7 +9,7 @@ import org.skywalking.apm.collector.core.module.ModuleDefine; */ public abstract class AgentJVMModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - @Override protected final Client createClient(DataMonitor dataMonitor) { + @Override protected final Client createClient() { throw new UnsupportedOperationException(""); } diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java index 89b942290..9faab6c30 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java +++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/AgentJVMModuleGroupDefine.java @@ -11,6 +11,12 @@ public class AgentJVMModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "agent_jvm"; + private final AgentJVMCommonModuleInstaller installer; + + public AgentJVMModuleGroupDefine() { + installer = new AgentJVMCommonModuleInstaller(); + } + @Override public String name() { return GROUP_NAME; } @@ -20,6 +26,6 @@ public class AgentJVMModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new AgentJVMModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java index b60afc4fd..45b21b59a 100644 --- a/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java +++ b/apm-collector/apm-collector-agentjvm/src/main/java/org/skywalking/apm/collector/agentjvm/grpc/AgentJVMGRPCDataListener.java @@ -19,7 +19,7 @@ public class AgentJVMGRPCDataListener extends ClusterDataListener { } - @Override public void serverQuitNotify() { + @Override public void serverQuitNotify(String serverAddress) { } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleInstaller.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterCommonModuleInstaller.java similarity index 57% rename from apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleInstaller.java rename to apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterCommonModuleInstaller.java index 5567fe9ba..2d8850c61 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleInstaller.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterCommonModuleInstaller.java @@ -1,12 +1,13 @@ package org.skywalking.apm.collector.agentregister; +import java.util.List; import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; +import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller; /** * @author pengys5 */ -public class AgentRegisterModuleInstaller extends MultipleModuleInstaller { +public class AgentRegisterCommonModuleInstaller extends MultipleCommonModuleInstaller { @Override public String groupName() { return AgentRegisterModuleGroupDefine.GROUP_NAME; @@ -15,4 +16,8 @@ public class AgentRegisterModuleInstaller extends MultipleModuleInstaller { @Override public Context moduleContext() { return new AgentRegisterModuleContext(groupName()); } + + @Override public List dependenceModules() { + return null; + } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java index 166721fb0..fd627cd88 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleDefine.java @@ -1,7 +1,6 @@ package org.skywalking.apm.collector.agentregister; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; import org.skywalking.apm.collector.core.module.ModuleDefine; @@ -14,7 +13,7 @@ public abstract class AgentRegisterModuleDefine extends ModuleDefine implements } - @Override protected final Client createClient(DataMonitor dataMonitor) { + @Override protected final Client createClient() { throw new UnsupportedOperationException(""); } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleGroupDefine.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleGroupDefine.java index d59aa5b85..0aa99ade7 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleGroupDefine.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/AgentRegisterModuleGroupDefine.java @@ -11,6 +11,12 @@ public class AgentRegisterModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "agent_register"; + private final AgentRegisterCommonModuleInstaller installer; + + public AgentRegisterModuleGroupDefine() { + installer = new AgentRegisterCommonModuleInstaller(); + } + @Override public String name() { return GROUP_NAME; } @@ -20,6 +26,6 @@ public class AgentRegisterModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new AgentRegisterModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java index a8ad38c14..23667b5a7 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/grpc/AgentRegisterGRPCDataListener.java @@ -19,7 +19,7 @@ public class AgentRegisterGRPCDataListener extends ClusterDataListener { } - @Override public void serverQuitNotify() { + @Override public void serverQuitNotify(String serverAddress) { } } diff --git a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java index d56a04930..aabcfa8a9 100644 --- a/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java +++ b/apm-collector/apm-collector-agentregister/src/main/java/org/skywalking/apm/collector/agentregister/jetty/AgentRegisterJettyDataListener.java @@ -19,7 +19,7 @@ public class AgentRegisterJettyDataListener extends ClusterDataListener { } - @Override public void serverQuitNotify() { + @Override public void serverQuitNotify(String serverAddress) { } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerCommonModuleInstaller.java similarity index 56% rename from apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java rename to apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerCommonModuleInstaller.java index 351a8655f..452c7cdfa 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleInstaller.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerCommonModuleInstaller.java @@ -1,12 +1,13 @@ package org.skywalking.apm.collector.agentserver; +import java.util.List; import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; +import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller; /** * @author pengys5 */ -public class AgentServerModuleInstaller extends MultipleModuleInstaller { +public class AgentServerCommonModuleInstaller extends MultipleCommonModuleInstaller { @Override public String groupName() { return AgentServerModuleGroupDefine.GROUP_NAME; @@ -15,4 +16,8 @@ public class AgentServerModuleInstaller extends MultipleModuleInstaller { @Override public Context moduleContext() { return new AgentServerModuleContext(groupName()); } + + @Override public List dependenceModules() { + return null; + } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java index 84b75c0fc..8dc87b767 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleDefine.java @@ -1,7 +1,6 @@ package org.skywalking.apm.collector.agentserver; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; import org.skywalking.apm.collector.core.module.ModuleDefine; @@ -14,7 +13,7 @@ public abstract class AgentServerModuleDefine extends ModuleDefine implements Cl } - @Override protected final Client createClient(DataMonitor dataMonitor) { + @Override protected final Client createClient() { throw new UnsupportedOperationException(""); } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java index 9539be419..5334db123 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/AgentServerModuleGroupDefine.java @@ -10,6 +10,11 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; public class AgentServerModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "agent_server"; + private final AgentServerCommonModuleInstaller installer; + + public AgentServerModuleGroupDefine() { + installer = new AgentServerCommonModuleInstaller(); + } @Override public String name() { return GROUP_NAME; @@ -20,6 +25,6 @@ public class AgentServerModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new AgentServerModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java index 9c4f25468..225bc5b69 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/AgentServerJettyDataListener.java @@ -17,7 +17,7 @@ public class AgentServerJettyDataListener extends ClusterDataListener { } - @Override public void serverQuitNotify() { + @Override public void serverQuitNotify(String serverAddress) { } } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java index 652af12c3..f6b05b028 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamGRPCServerHandler.java @@ -5,8 +5,6 @@ import com.google.gson.JsonElement; import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.skywalking.apm.collector.agentstream.grpc.AgentStreamGRPCDataListener; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; @@ -22,10 +20,10 @@ public class AgentStreamGRPCServerHandler extends JettyHandler { } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - ClusterModuleRegistrationReader reader = ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getReader(); + ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); Set servers = reader.read(AgentStreamGRPCDataListener.PATH); JsonArray serverArray = new JsonArray(); - servers.forEach(server -> serverArray.add(server)); + servers.forEach(serverArray::add); return serverArray; } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java index 40a1e339a..ea0f003be 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/AgentStreamJettyServerHandler.java @@ -5,8 +5,6 @@ import com.google.gson.JsonElement; import java.util.Set; import javax.servlet.http.HttpServletRequest; import org.skywalking.apm.collector.agentstream.jetty.AgentStreamJettyDataListener; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; @@ -22,12 +20,10 @@ public class AgentStreamJettyServerHandler extends JettyHandler { } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - ClusterModuleRegistrationReader reader = ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getReader(); + ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); Set servers = reader.read(AgentStreamJettyDataListener.PATH); JsonArray serverArray = new JsonArray(); - servers.forEach(server -> { - serverArray.add(server); - }); + servers.forEach(serverArray::add); return serverArray; } diff --git a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java index 9c81388bc..99378443a 100644 --- a/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java +++ b/apm-collector/apm-collector-agentserver/src/main/java/org/skywalking/apm/collector/agentserver/jetty/handler/UIJettyServerHandler.java @@ -4,8 +4,6 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import java.util.Set; import javax.servlet.http.HttpServletRequest; -import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; -import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; import org.skywalking.apm.collector.core.cluster.ClusterModuleRegistrationReader; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.server.jetty.ArgumentsParseException; @@ -22,12 +20,10 @@ public class UIJettyServerHandler extends JettyHandler { } @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - ClusterModuleRegistrationReader reader = ((ClusterModuleContext)CollectorContextHelper.INSTANCE.getContext(ClusterModuleGroupDefine.GROUP_NAME)).getReader(); + ClusterModuleRegistrationReader reader = CollectorContextHelper.INSTANCE.getClusterModuleContext().getReader(); Set servers = reader.read(UIJettyDataListener.PATH); JsonArray serverArray = new JsonArray(); - servers.forEach(server -> { - serverArray.add(server); - }); + servers.forEach(serverArray::add); return serverArray; } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamCommonModuleInstaller.java similarity index 66% rename from apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java rename to apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamCommonModuleInstaller.java index 073aa0c78..2f75107bc 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleInstaller.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamCommonModuleInstaller.java @@ -1,16 +1,18 @@ package org.skywalking.apm.collector.agentstream; +import java.util.List; import org.skywalking.apm.collector.agentstream.worker.storage.PersistenceTimer; +import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.framework.DefineException; -import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; +import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller; import org.skywalking.apm.collector.core.server.ServerException; /** * @author pengys5 */ -public class AgentStreamModuleInstaller extends MultipleModuleInstaller { +public class AgentStreamCommonModuleInstaller extends MultipleCommonModuleInstaller { @Override public String groupName() { return AgentStreamModuleGroupDefine.GROUP_NAME; @@ -20,7 +22,11 @@ public class AgentStreamModuleInstaller extends MultipleModuleInstaller { return new AgentStreamModuleContext(groupName()); } - @Override public void install() throws DefineException, ConfigException, ServerException { + @Override public List dependenceModules() { + return null; + } + + @Override public void install() throws DefineException, ConfigException, ServerException, ClientException { super.install(); new PersistenceTimer().start(); } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java index 762e6c525..953091639 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleDefine.java @@ -1,7 +1,6 @@ package org.skywalking.apm.collector.agentstream; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; import org.skywalking.apm.collector.core.module.ModuleDefine; @@ -10,7 +9,7 @@ import org.skywalking.apm.collector.core.module.ModuleDefine; */ public abstract class AgentStreamModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - @Override protected final Client createClient(DataMonitor dataMonitor) { + @Override protected final Client createClient() { throw new UnsupportedOperationException(""); } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java index 216e2ef2e..9ba5517a6 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/AgentStreamModuleGroupDefine.java @@ -10,6 +10,11 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; public class AgentStreamModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "agent_stream"; + private final AgentStreamCommonModuleInstaller installer; + + public AgentStreamModuleGroupDefine() { + installer = new AgentStreamCommonModuleInstaller(); + } @Override public String name() { return GROUP_NAME; @@ -20,6 +25,6 @@ public class AgentStreamModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new AgentStreamModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java index 12b28c8a0..a4903fd5d 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/grpc/AgentStreamGRPCDataListener.java @@ -19,7 +19,7 @@ public class AgentStreamGRPCDataListener extends ClusterDataListener { } - @Override public void serverQuitNotify() { + @Override public void serverQuitNotify(String serverAddress) { } } diff --git a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java index 4b2774dd4..408c72194 100644 --- a/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java +++ b/apm-collector/apm-collector-agentstream/src/main/java/org/skywalking/apm/collector/agentstream/jetty/AgentStreamJettyDataListener.java @@ -19,7 +19,7 @@ public class AgentStreamJettyDataListener extends ClusterDataListener { } - @Override public void serverQuitNotify() { + @Override public void serverQuitNotify(String serverAddress) { } } diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java index ef2dc90df..ac8703252 100644 --- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorBootStartUp.java @@ -1,8 +1,6 @@ package org.skywalking.apm.collector.boot; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.config.ConfigException; -import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.core.CollectorException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -13,9 +11,10 @@ public class CollectorBootStartUp { private static final Logger logger = LoggerFactory.getLogger(CollectorBootStartUp.class); - public static void main(String[] args) throws ConfigException, DefineException, ClientException { + public static void main(String[] args) throws CollectorException { logger.info("collector starting..."); CollectorStarter starter = new CollectorStarter(); starter.start(); + logger.info("collector start successful."); } } diff --git a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java index 5e1752bcb..3f7c12922 100644 --- a/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java +++ b/apm-collector/apm-collector-boot/src/main/java/org/skywalking/apm/collector/boot/CollectorStarter.java @@ -1,9 +1,7 @@ package org.skywalking.apm.collector.boot; import java.util.Map; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.config.ConfigException; -import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.framework.Starter; import org.skywalking.apm.collector.core.module.ModuleConfigLoader; import org.skywalking.apm.collector.core.module.ModuleDefine; @@ -12,6 +10,7 @@ import org.skywalking.apm.collector.core.module.ModuleGroupDefine; import org.skywalking.apm.collector.core.module.ModuleGroupDefineLoader; import org.skywalking.apm.collector.core.server.ServerException; import org.skywalking.apm.collector.core.server.ServerHolder; +import org.skywalking.apm.collector.core.util.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,24 +20,26 @@ import org.slf4j.LoggerFactory; public class CollectorStarter implements Starter { private final Logger logger = LoggerFactory.getLogger(CollectorStarter.class); + private Map moduleGroupDefineMap; - @Override public void start() throws ConfigException, DefineException, ClientException { + @Override public void start() throws CollectorException { ModuleConfigLoader configLoader = new ModuleConfigLoader(); Map configuration = configLoader.load(); ModuleGroupDefineLoader groupDefineLoader = new ModuleGroupDefineLoader(); - Map moduleGroupDefineMap = groupDefineLoader.load(); + moduleGroupDefineMap = groupDefineLoader.load(); ModuleDefineLoader defineLoader = new ModuleDefineLoader(); Map> moduleDefineMap = defineLoader.load(); ServerHolder serverHolder = new ServerHolder(); -// moduleGroupDefineMap.get(ClusterModuleGroupDefine.GROUP_NAME).moduleInstaller().install(configuration.get(ClusterModuleGroupDefine.GROUP_NAME), moduleDefineMap.get(ClusterModuleGroupDefine.GROUP_NAME), serverHolder); -// moduleGroupDefineMap.remove(ClusterModuleGroupDefine.GROUP_NAME); - for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) { moduleGroupDefine.moduleInstaller().injectConfiguration(configuration.get(moduleGroupDefine.name()), moduleDefineMap.get(moduleGroupDefine.name())); moduleGroupDefine.moduleInstaller().injectServerHolder(serverHolder); + moduleGroupDefine.moduleInstaller().preInstall(); + } + + for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) { moduleGroupDefine.moduleInstaller().install(); } @@ -49,5 +50,26 @@ public class CollectorStarter implements Starter { logger.error(e.getMessage(), e); } }); + + dependenceAfterInstall(); + } + + private void dependenceAfterInstall() throws CollectorException { + for (ModuleGroupDefine moduleGroupDefine : moduleGroupDefineMap.values()) { + moduleInstall(moduleGroupDefine); + } + } + + private void moduleInstall(ModuleGroupDefine moduleGroupDefine) throws CollectorException { + if (CollectionUtils.isNotEmpty(moduleGroupDefine.moduleInstaller().dependenceModules())) { + for (String groupName : moduleGroupDefine.moduleInstaller().dependenceModules()) { + moduleInstall(moduleGroupDefineMap.get(groupName)); + } + logger.info("after install module group: {}", moduleGroupDefine.name()); + moduleGroupDefine.moduleInstaller().afterInstall(); + } else { + logger.info("after install module group: {}", moduleGroupDefine.name()); + moduleGroupDefine.moduleInstaller().afterInstall(); + } } } diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java index b1f1284f8..6c5d2de09 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java +++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/elasticsearch/ElasticSearchClient.java @@ -64,6 +64,10 @@ public class ElasticSearchClient implements Client { } } + @Override public void shutdown() { + + } + private List parseClusterNodes(String nodes) { List pairsList = new LinkedList<>(); logger.info("elasticsearch cluster nodes: {}", nodes); diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java index 19a077514..d9906c712 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java +++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/grpc/GRPCClient.java @@ -25,6 +25,10 @@ public class GRPCClient implements Client { channel = ManagedChannelBuilder.forAddress(host, port).usePlaintext(true).build(); } + @Override public void shutdown() { + channel.shutdownNow(); + } + public ManagedChannel getChannel() { return channel; } diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java index e4b686768..65960cbef 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java +++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/h2/H2Client.java @@ -27,6 +27,10 @@ public class H2Client implements Client { } } + @Override public void shutdown() { + + } + public void execute(String sql) throws H2ClientException { Statement statement = null; try { diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java index fffc7f6dd..da3940439 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java +++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/redis/RedisClient.java @@ -23,6 +23,10 @@ public class RedisClient implements Client { jedis = new Jedis(host, port); } + @Override public void shutdown() { + + } + public void setex(String key, int seconds, String value) { jedis.setex(key, seconds, value); } diff --git a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java index 89dc9174a..3077cc958 100644 --- a/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java +++ b/apm-collector/apm-collector-client/src/main/java/org/skywalking/apm/collector/client/zookeeper/ZookeeperClient.java @@ -39,6 +39,10 @@ public class ZookeeperClient implements Client { } } + @Override public void shutdown() { + + } + public void create(final String path, byte data[], List acl, CreateMode createMode) throws ZookeeperClientException { try { diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java index dc1880881..d6fd565b2 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleDefine.java @@ -1,6 +1,7 @@ package org.skywalking.apm.collector.cluster; import java.util.List; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.client.DataMonitor; @@ -20,17 +21,15 @@ public abstract class ClusterModuleDefine extends ModuleDefine { public static final String BASE_CATALOG = "skywalking"; private Client client; - private DataMonitor dataMonitor; @Override protected void initializeOtherContext() { try { - dataMonitor = dataMonitor(); - client = createClient(dataMonitor); + client = createClient(); client.initialize(); - dataMonitor.setClient(client); - ClusterModuleRegistrationReader reader = registrationReader(dataMonitor); + dataMonitor().setClient(client); + ClusterModuleRegistrationReader reader = registrationReader(); - CollectorContextHelper.INSTANCE.getClusterModuleContext().setDataMonitor(dataMonitor); + CollectorContextHelper.INSTANCE.getClusterModuleContext().setDataMonitor(dataMonitor()); CollectorContextHelper.INSTANCE.getClusterModuleContext().setReader(reader); } catch (ClientException e) { throw new UnexpectedException(e.getMessage()); @@ -42,11 +41,11 @@ public abstract class ClusterModuleDefine extends ModuleDefine { } @Override public final Server server() { - throw new UnsupportedOperationException(""); + return null; } @Override public final List handlerList() { - throw new UnsupportedOperationException(""); + return null; } @Override protected final ModuleRegistration registration() { @@ -55,6 +54,9 @@ public abstract class ClusterModuleDefine extends ModuleDefine { public abstract DataMonitor dataMonitor(); - public abstract ClusterModuleRegistrationReader registrationReader(DataMonitor dataMonitor); + public abstract ClusterModuleRegistrationReader registrationReader(); + public void startMonitor() throws CollectorException { + dataMonitor().start(); + } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java index d51023d8a..982a7128a 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleGroupDefine.java @@ -11,6 +11,11 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; public class ClusterModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "cluster"; + private final ClusterModuleInstaller installer; + + public ClusterModuleGroupDefine() { + installer = new ClusterModuleInstaller(); + } @Override public String name() { return GROUP_NAME; @@ -21,6 +26,6 @@ public class ClusterModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new ClusterModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java index e7af136f1..529cf9547 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/ClusterModuleInstaller.java @@ -1,5 +1,8 @@ package org.skywalking.apm.collector.cluster; +import java.util.LinkedList; +import java.util.List; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.framework.Context; @@ -19,4 +22,14 @@ public class ClusterModuleInstaller extends SingleModuleInstaller { CollectorContextHelper.INSTANCE.putClusterContext(clusterModuleContext); return clusterModuleContext; } + + @Override public List dependenceModules() { + List dependenceModules = new LinkedList<>(); + dependenceModules.add("collector_inside"); + return dependenceModules; + } + + @Override public void onAfterInstall() throws CollectorException { + ((ClusterModuleDefine)getModuleDefine()).startMonitor(); + } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleDefine.java index b946cd709..5995b7b3c 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleDefine.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/redis/ClusterRedisModuleDefine.java @@ -35,11 +35,11 @@ public class ClusterRedisModuleDefine extends ClusterModuleDefine { return null; } - @Override protected Client createClient(DataMonitor dataMonitor) { + @Override protected Client createClient() { return new RedisClient(ClusterRedisConfig.HOST, ClusterRedisConfig.PORT); } - @Override public ClusterModuleRegistrationReader registrationReader(DataMonitor dataMonitor) { - return new ClusterRedisModuleRegistrationReader(dataMonitor); + @Override public ClusterModuleRegistrationReader registrationReader() { + return null; } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleDefine.java index 1c95e0642..d8572a4f4 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleDefine.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/standalone/ClusterStandaloneModuleDefine.java @@ -35,11 +35,11 @@ public class ClusterStandaloneModuleDefine extends ClusterModuleDefine { return null; } - @Override protected Client createClient(DataMonitor dataMonitor) { + @Override protected Client createClient() { return new H2Client(); } - @Override public ClusterModuleRegistrationReader registrationReader(DataMonitor dataMonitor) { - return new ClusterStandaloneModuleRegistrationReader(dataMonitor); + @Override public ClusterModuleRegistrationReader registrationReader() { + return null; } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java index 0262005e2..7162adf97 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKDataMonitor.java @@ -53,9 +53,12 @@ public class ClusterZKDataMonitor implements DataMonitor, Watcher { String dataStr = new String(data); if (stat.getCzxid() == stat.getMzxid()) { logger.info("path children has been created, path: {}, data: {}", event.getPath() + "/" + serverPath, dataStr); + listeners.get(event.getPath()).addAddress(serverPath + dataStr); listeners.get(event.getPath()).serverJoinNotify(serverPath + dataStr); } else { logger.info("path children has been changed, path: {}, data: {}", event.getPath() + "/" + serverPath, dataStr); + listeners.get(event.getPath()).removeAddress(serverPath + dataStr); + listeners.get(event.getPath()).serverQuitNotify(serverPath + dataStr); } } } diff --git a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleDefine.java b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleDefine.java index c53676407..87fd223a4 100644 --- a/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleDefine.java +++ b/apm-collector/apm-collector-cluster/src/main/java/org/skywalking/apm/collector/cluster/zookeeper/ClusterZKModuleDefine.java @@ -1,6 +1,5 @@ package org.skywalking.apm.collector.cluster.zookeeper; -import org.apache.zookeeper.Watcher; import org.skywalking.apm.collector.client.zookeeper.ZookeeperClient; import org.skywalking.apm.collector.cluster.ClusterModuleDefine; import org.skywalking.apm.collector.cluster.ClusterModuleGroupDefine; @@ -15,6 +14,11 @@ import org.skywalking.apm.collector.core.module.ModuleConfigParser; public class ClusterZKModuleDefine extends ClusterModuleDefine { public static final String MODULE_NAME = "zookeeper"; + private final ClusterZKDataMonitor dataMonitor; + + public ClusterZKModuleDefine() { + dataMonitor = new ClusterZKDataMonitor(); + } @Override protected String group() { return ClusterModuleGroupDefine.GROUP_NAME; @@ -33,14 +37,14 @@ public class ClusterZKModuleDefine extends ClusterModuleDefine { } @Override public DataMonitor dataMonitor() { - return new ClusterZKDataMonitor(); + return dataMonitor; } - @Override protected Client createClient(DataMonitor dataMonitor) { - return new ZookeeperClient(ClusterZKConfig.HOST_PORT, ClusterZKConfig.SESSION_TIMEOUT, (Watcher)dataMonitor); + @Override protected Client createClient() { + return new ZookeeperClient(ClusterZKConfig.HOST_PORT, ClusterZKConfig.SESSION_TIMEOUT, dataMonitor); } - @Override public ClusterModuleRegistrationReader registrationReader(DataMonitor dataMonitor) { + @Override public ClusterModuleRegistrationReader registrationReader() { return new ClusterZKModuleRegistrationReader(dataMonitor); } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java index 24b7f5357..192e8aa7f 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/Client.java @@ -5,4 +5,6 @@ package org.skywalking.apm.collector.core.client; */ public interface Client { void initialize() throws ClientException; + + void shutdown(); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java index c8b1a5df0..e2a7c9efc 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/client/DataMonitor.java @@ -7,7 +7,7 @@ import org.skywalking.apm.collector.core.module.ModuleRegistration; /** * @author pengys5 */ -public interface DataMonitor extends Starter{ +public interface DataMonitor extends Starter { void setClient(Client client); void addListener(ClusterDataListener listener, ModuleRegistration registration) throws ClientException; diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java index 6613678c5..cc494980e 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/cluster/ClusterDataListener.java @@ -31,5 +31,5 @@ public abstract class ClusterDataListener implements Listener { public abstract void serverJoinNotify(String serverAddress); - public abstract void serverQuitNotify(); + public abstract void serverQuitNotify(String serverAddress); } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java new file mode 100644 index 000000000..1e5e47a88 --- /dev/null +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/CommonModuleInstaller.java @@ -0,0 +1,37 @@ +package org.skywalking.apm.collector.core.module; + +import java.util.Map; +import org.skywalking.apm.collector.core.CollectorException; + +/** + * @author pengys5 + */ +public abstract class CommonModuleInstaller implements ModuleInstaller { + + private boolean isInstalled = false; + private Map moduleConfig; + private Map moduleDefineMap; + + @Override + public final void injectConfiguration(Map moduleConfig, Map moduleDefineMap) { + this.moduleConfig = moduleConfig; + this.moduleDefineMap = moduleDefineMap; + } + + protected final Map getModuleConfig() { + return moduleConfig; + } + + protected final Map getModuleDefineMap() { + return moduleDefineMap; + } + + public abstract void onAfterInstall() throws CollectorException; + + @Override public final void afterInstall() throws CollectorException { + if (!isInstalled) { + onAfterInstall(); + } + isInstalled = true; + } +} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java deleted file mode 100644 index 8c416f1d4..000000000 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleConfigContainer.java +++ /dev/null @@ -1,26 +0,0 @@ -package org.skywalking.apm.collector.core.module; - -import java.util.Map; - -/** - * @author pengys5 - */ -public abstract class ModuleConfigContainer implements ModuleInstaller { - - private Map moduleConfig; - private Map moduleDefineMap; - - @Override - public final void injectConfiguration(Map moduleConfig, Map moduleDefineMap) { - this.moduleConfig = moduleConfig; - this.moduleDefineMap = moduleDefineMap; - } - - public final Map getModuleConfig() { - return moduleConfig; - } - - public final Map getModuleDefineMap() { - return moduleDefineMap; - } -} diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java index f06583209..b0706ecc8 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleDefine.java @@ -2,7 +2,6 @@ package org.skywalking.apm.collector.core.module; import java.util.List; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.framework.Define; import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.server.Server; @@ -18,7 +17,7 @@ public abstract class ModuleDefine implements Define { protected abstract ModuleConfigParser configParser(); - protected abstract Client createClient(DataMonitor dataMonitor); + protected abstract Client createClient(); protected abstract Server server(); diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineLoader.java index 6a4e1387c..09125d075 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineLoader.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleGroupDefineLoader.java @@ -1,5 +1,6 @@ package org.skywalking.apm.collector.core.module; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; import org.skywalking.apm.collector.core.framework.DefineException; @@ -21,11 +22,11 @@ public class ModuleGroupDefineLoader implements Loader definitionLoader = DefinitionLoader.load(ModuleGroupDefine.class, definitionFile); - for (ModuleGroupDefine moduleGroupDefine : definitionLoader) { - logger.info("loaded group module definition class: {}", moduleGroupDefine.getClass().getName()); - - String groupName = moduleGroupDefine.name().toLowerCase(); - moduleGroupDefineMap.put(groupName, moduleGroupDefine); + Iterator defineIterator = definitionLoader.iterator(); + while (defineIterator.hasNext()) { + ModuleGroupDefine groupDefine = defineIterator.next(); + String groupName = groupDefine.name().toLowerCase(); + moduleGroupDefineMap.put(groupName, groupDefine); } return moduleGroupDefineMap; } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java index 563a30b00..b9418d445 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/ModuleInstaller.java @@ -1,6 +1,8 @@ package org.skywalking.apm.collector.core.module; +import java.util.List; import java.util.Map; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.Context; @@ -13,6 +15,8 @@ import org.skywalking.apm.collector.core.server.ServerHolder; */ public interface ModuleInstaller { + List dependenceModules(); + void injectServerHolder(ServerHolder serverHolder); String groupName(); @@ -24,4 +28,6 @@ public interface ModuleInstaller { void preInstall() throws DefineException, ConfigException, ServerException; void install() throws ClientException, DefineException, ConfigException, ServerException; + + void afterInstall() throws CollectorException; } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleCommonModuleInstaller.java similarity index 60% rename from apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java rename to apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleCommonModuleInstaller.java index cca15bc04..1b1806df0 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleModuleInstaller.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/MultipleCommonModuleInstaller.java @@ -4,22 +4,26 @@ import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map; +import org.skywalking.apm.collector.core.CollectorException; +import org.skywalking.apm.collector.core.client.ClientException; +import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.framework.DefineException; import org.skywalking.apm.collector.core.server.ServerException; import org.skywalking.apm.collector.core.server.ServerHolder; +import org.skywalking.apm.collector.core.util.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author pengys5 */ -public abstract class MultipleModuleInstaller extends ModuleConfigContainer { +public abstract class MultipleCommonModuleInstaller extends CommonModuleInstaller { - private final Logger logger = LoggerFactory.getLogger(MultipleModuleInstaller.class); + private final Logger logger = LoggerFactory.getLogger(MultipleCommonModuleInstaller.class); - public MultipleModuleInstaller() { + public MultipleCommonModuleInstaller() { moduleDefines = new LinkedList<>(); } @@ -31,6 +35,7 @@ public abstract class MultipleModuleInstaller extends ModuleConfigContainer { } @Override public final void preInstall() throws DefineException, ConfigException, ServerException { + logger.info("install module group: {}", groupName()); Map moduleConfig = getModuleConfig(); Map moduleDefineMap = getModuleDefineMap(); @@ -44,12 +49,22 @@ public abstract class MultipleModuleInstaller extends ModuleConfigContainer { } } - @Override public void install() throws DefineException, ConfigException, ServerException { - preInstall(); - + @Override public void install() throws DefineException, ConfigException, ServerException, ClientException { CollectorContextHelper.INSTANCE.putContext(moduleContext()); - moduleDefines.forEach(moduleDefine -> { + for (ModuleDefine moduleDefine : moduleDefines) { moduleDefine.initializeOtherContext(); - }); + + if (moduleDefine instanceof ClusterDataListenerDefine) { + ClusterDataListenerDefine listenerDefine = (ClusterDataListenerDefine)moduleDefine; + if (ObjectUtils.isNotEmpty(listenerDefine.listener()) && ObjectUtils.isNotEmpty(moduleDefine.registration())) { + logger.info("add group: {}, module: {}, listener into cluster data monitor", moduleDefine.group(), moduleDefine.name()); + CollectorContextHelper.INSTANCE.getClusterModuleContext().getDataMonitor().addListener(listenerDefine.listener(), moduleDefine.registration()); + } + } + } + } + + @Override public void onAfterInstall() throws CollectorException { + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java index 9ee19d3fe..0fd55836c 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java @@ -2,8 +2,10 @@ package org.skywalking.apm.collector.core.module; import java.util.Iterator; import java.util.Map; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; +import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; import org.skywalking.apm.collector.core.cluster.ClusterModuleException; import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; @@ -11,13 +13,14 @@ import org.skywalking.apm.collector.core.framework.DefineException; import org.skywalking.apm.collector.core.server.ServerException; import org.skywalking.apm.collector.core.server.ServerHolder; import org.skywalking.apm.collector.core.util.CollectionUtils; +import org.skywalking.apm.collector.core.util.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * @author pengys5 */ -public abstract class SingleModuleInstaller extends ModuleConfigContainer { +public abstract class SingleModuleInstaller extends CommonModuleInstaller { private final Logger logger = LoggerFactory.getLogger(SingleModuleInstaller.class); @@ -29,6 +32,7 @@ public abstract class SingleModuleInstaller extends ModuleConfigContainer { } @Override public final void preInstall() throws DefineException, ConfigException, ServerException { + logger.info("install module group: {}", groupName()); Map moduleConfig = getModuleConfig(); Map moduleDefineMap = getModuleDefineMap(); if (CollectionUtils.isNotEmpty(moduleConfig)) { @@ -45,17 +49,17 @@ public abstract class SingleModuleInstaller extends ModuleConfigContainer { } } else { logger.info("could not configure module, use the default"); - Iterator> moduleDefineEntry = moduleDefineMap.entrySet().iterator(); + Iterator> moduleDefineIterator = moduleDefineMap.entrySet().iterator(); boolean hasDefaultModule = false; - while (moduleDefineEntry.hasNext()) { - if (moduleDefineEntry.next().getValue().defaultModule()) { - logger.info("module {} initialize", moduleDefine.getClass().getName()); + while (moduleDefineIterator.hasNext()) { + Map.Entry moduleDefineEntry = moduleDefineIterator.next(); + if (moduleDefineEntry.getValue().defaultModule()) { if (hasDefaultModule) { throw new ClusterModuleException("single module, but configure multiple default module"); } - moduleDefine = moduleDefineEntry.next().getValue(); - moduleDefine.configParser().parse(null); + this.moduleDefine = moduleDefineEntry.getValue(); + this.moduleDefine.configParser().parse(null); hasDefaultModule = true; } } @@ -64,13 +68,21 @@ public abstract class SingleModuleInstaller extends ModuleConfigContainer { } @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { - preInstall(); + if (!(moduleContext() instanceof ClusterModuleContext)) { + CollectorContextHelper.INSTANCE.putContext(moduleContext()); + } moduleDefine.initializeOtherContext(); - CollectorContextHelper.INSTANCE.putContext(moduleContext()); if (moduleDefine instanceof ClusterDataListenerDefine) { ClusterDataListenerDefine listenerDefine = (ClusterDataListenerDefine)moduleDefine; - CollectorContextHelper.INSTANCE.getClusterModuleContext().getDataMonitor().addListener(listenerDefine.listener(), moduleDefine.registration()); + if (ObjectUtils.isNotEmpty(listenerDefine.listener()) && ObjectUtils.isNotEmpty(moduleDefine.registration())) { + CollectorContextHelper.INSTANCE.getClusterModuleContext().getDataMonitor().addListener(listenerDefine.listener(), moduleDefine.registration()); + logger.info("add group: {}, module: {}, listener into cluster data monitor", moduleDefine.group(), moduleDefine.name()); + } } } + + protected ModuleDefine getModuleDefine() { + return moduleDefine; + } } diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerHolder.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerHolder.java index 2653ab530..ec8e01238 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerHolder.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/server/ServerHolder.java @@ -4,6 +4,7 @@ import java.util.LinkedList; import java.util.List; import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.util.CollectionUtils; +import org.skywalking.apm.collector.core.util.ObjectUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -21,6 +22,10 @@ public class ServerHolder { } public void holdServer(Server newServer, List handlers) throws ServerException { + if (ObjectUtils.isEmpty(newServer) || CollectionUtils.isEmpty(handlers)) { + return; + } + boolean isNewServer = true; for (Server server : servers) { if (server.hostPort().equals(newServer.hostPort()) && server.serverClassify().equals(newServer.serverClassify())) { diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java index 9030b1c2d..32b901072 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/util/DefinitionLoader.java @@ -35,7 +35,6 @@ public class DefinitionLoader implements Iterable { @Override public final Iterator iterator() { logger.info("load definition file: {}", definitionFile.get()); - Properties properties = new Properties(); List definitionList = new LinkedList<>(); try { Enumeration urlEnumeration = this.getClass().getClassLoader().getResources(definitionFile.get()); @@ -43,6 +42,7 @@ public class DefinitionLoader implements Iterable { URL definitionFileURL = urlEnumeration.nextElement(); logger.info("definition file url: {}", definitionFileURL.getPath()); BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(definitionFileURL.openStream())); + Properties properties = new Properties(); properties.load(bufferedReader); Enumeration defineItem = properties.propertyNames(); @@ -52,7 +52,7 @@ public class DefinitionLoader implements Iterable { } } } catch (IOException e) { - e.printStackTrace(); + logger.error(e.getMessage(), e); } Iterator moduleDefineIterator = definitionList.iterator(); diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java index 3b94c44f0..e7c4920d4 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java @@ -4,7 +4,6 @@ import java.util.List; import org.skywalking.apm.collector.core.client.Client; import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.framework.Handler; -import org.skywalking.apm.collector.core.module.ModuleConfigParser; import org.skywalking.apm.collector.core.module.ModuleDefine; import org.skywalking.apm.collector.core.module.ModuleRegistration; import org.skywalking.apm.collector.core.server.Server; @@ -13,12 +12,9 @@ import org.skywalking.apm.collector.core.server.Server; * @author pengys5 */ public abstract class QueueModuleDefine extends ModuleDefine { - @Override protected final ModuleConfigParser configParser() { - throw new UnsupportedOperationException(""); - } - @Override protected final Client createClient(DataMonitor dataMonitor) { - throw new UnsupportedOperationException(""); + @Override protected Client createClient() { + return null; } @Override protected final ModuleRegistration registration() { @@ -26,10 +22,10 @@ public abstract class QueueModuleDefine extends ModuleDefine { } @Override protected final Server server() { - throw new UnsupportedOperationException(""); + return null; } @Override public final List handlerList() { - throw new UnsupportedOperationException(""); + return null; } } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java index 9b40b7c2c..6f2648cc8 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleGroupDefine.java @@ -10,6 +10,11 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; public class QueueModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "queue"; + private final QueueModuleInstaller installer; + + public QueueModuleGroupDefine() { + installer = new QueueModuleInstaller(); + } @Override public String name() { return GROUP_NAME; @@ -20,6 +25,6 @@ public class QueueModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new QueueModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java index 1ed4c7996..054979197 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleInstaller.java @@ -1,13 +1,19 @@ package org.skywalking.apm.collector.queue; +import java.util.List; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.framework.DefineException; +import org.skywalking.apm.collector.core.framework.UnexpectedException; import org.skywalking.apm.collector.core.module.SingleModuleInstaller; import org.skywalking.apm.collector.core.server.ServerException; import org.skywalking.apm.collector.queue.datacarrier.DataCarrierQueueCreator; +import org.skywalking.apm.collector.queue.datacarrier.QueueDataCarrierModuleDefine; +import org.skywalking.apm.collector.queue.disruptor.DisruptorQueueCreator; +import org.skywalking.apm.collector.queue.disruptor.QueueDisruptorModuleDefine; /** * @author pengys5 @@ -22,8 +28,21 @@ public class QueueModuleInstaller extends SingleModuleInstaller { return new QueueModuleContext(groupName()); } + @Override public List dependenceModules() { + return null; + } + @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { super.install(); - ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())).setQueueCreator(new DataCarrierQueueCreator()); + if (getModuleDefine() instanceof QueueDataCarrierModuleDefine) { + ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())).setQueueCreator(new DataCarrierQueueCreator()); + } else if (getModuleDefine() instanceof QueueDisruptorModuleDefine) { + ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())).setQueueCreator(new DisruptorQueueCreator()); + } else { + throw new UnexpectedException(""); + } + } + + @Override public void onAfterInstall() throws CollectorException { } } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueConfigParser.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueConfigParser.java new file mode 100644 index 000000000..614ac2e7b --- /dev/null +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/DataCarrierQueueConfigParser.java @@ -0,0 +1,15 @@ +package org.skywalking.apm.collector.queue.datacarrier; + +import java.util.Map; +import org.skywalking.apm.collector.core.config.ConfigParseException; +import org.skywalking.apm.collector.core.module.ModuleConfigParser; + +/** + * @author pengys5 + */ +public class DataCarrierQueueConfigParser implements ModuleConfigParser { + + @Override public void parse(Map config) throws ConfigParseException { + + } +} diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java index 12cc17463..384edb588 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/datacarrier/QueueDataCarrierModuleDefine.java @@ -1,6 +1,7 @@ package org.skywalking.apm.collector.queue.datacarrier; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.module.ModuleConfigParser; import org.skywalking.apm.collector.queue.QueueModuleContext; import org.skywalking.apm.collector.queue.QueueModuleDefine; import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; @@ -22,6 +23,10 @@ public class QueueDataCarrierModuleDefine extends QueueModuleDefine { return false; } + @Override protected ModuleConfigParser configParser() { + return new DataCarrierQueueConfigParser(); + } + @Override protected void initializeOtherContext() { ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setQueueCreator(new DataCarrierQueueCreator()); } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorConfigParser.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueConfigParser.java similarity index 83% rename from apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorConfigParser.java rename to apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueConfigParser.java index d1e52b4f9..f523401f6 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorConfigParser.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/DisruptorQueueConfigParser.java @@ -7,7 +7,9 @@ import org.skywalking.apm.collector.core.module.ModuleConfigParser; /** * @author pengys5 */ -public class QueueDisruptorConfigParser implements ModuleConfigParser { +public class DisruptorQueueConfigParser implements ModuleConfigParser { + @Override public void parse(Map config) throws ConfigParseException { + } } diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java index 4eeaf0de8..f086dfe54 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/disruptor/QueueDisruptorModuleDefine.java @@ -1,6 +1,7 @@ package org.skywalking.apm.collector.queue.disruptor; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; +import org.skywalking.apm.collector.core.module.ModuleConfigParser; import org.skywalking.apm.collector.queue.QueueModuleContext; import org.skywalking.apm.collector.queue.QueueModuleDefine; import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; @@ -22,6 +23,10 @@ public class QueueDisruptorModuleDefine extends QueueModuleDefine { return true; } + @Override protected ModuleConfigParser configParser() { + return new DisruptorQueueConfigParser(); + } + @Override protected void initializeOtherContext() { ((QueueModuleContext)CollectorContextHelper.INSTANCE.getContext(group())).setQueueCreator(new DisruptorQueueCreator()); } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java index c088f8aa3..78d5fa23c 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleDefine.java @@ -14,20 +14,16 @@ import org.skywalking.apm.collector.core.module.ModuleRegistration; import org.skywalking.apm.collector.core.server.Server; import org.skywalking.apm.collector.core.storage.StorageException; import org.skywalking.apm.collector.core.storage.StorageInstaller; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * @author pengys5 */ public abstract class StorageModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - private final Logger logger = LoggerFactory.getLogger(StorageModuleDefine.class); - @Override protected void initializeOtherContext() { try { StorageModuleContext context = (StorageModuleContext)CollectorContextHelper.INSTANCE.getContext(StorageModuleGroupDefine.GROUP_NAME); - Client client = createClient(null); + Client client = createClient(); client.initialize(); context.setClient(client); injectClientIntoDAO(client); @@ -39,19 +35,19 @@ public abstract class StorageModuleDefine extends ModuleDefine implements Cluste } @Override public final List handlerList() { - throw new UnsupportedOperationException(""); + return null; } @Override protected final Server server() { - throw new UnsupportedOperationException(""); + return null; } @Override protected final ModuleRegistration registration() { - throw new UnsupportedOperationException(""); + return null; } @Override public final ClusterDataListener listener() { - throw new UnsupportedOperationException(""); + return null; } @Override public final boolean defaultModule() { diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java index c373f3a83..48e641d9f 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleGroupDefine.java @@ -10,6 +10,11 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; public class StorageModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "storage"; + private final StorageModuleInstaller installer; + + public StorageModuleGroupDefine() { + installer = new StorageModuleInstaller(); + } @Override public String name() { return GROUP_NAME; @@ -20,6 +25,6 @@ public class StorageModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new StorageModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java index 67e8d217b..a3b2d2794 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/StorageModuleInstaller.java @@ -1,5 +1,7 @@ package org.skywalking.apm.collector.storage; +import java.util.List; +import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.module.SingleModuleInstaller; @@ -15,4 +17,12 @@ public class StorageModuleInstaller extends SingleModuleInstaller { @Override public Context moduleContext() { return new StorageModuleContext(groupName()); } + + @Override public List dependenceModules() { + return null; + } + + @Override public void onAfterInstall() throws CollectorException { + + } } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java index 826ad4cb0..65d210d92 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/elasticsearch/StorageElasticSearchModuleDefine.java @@ -3,7 +3,6 @@ package org.skywalking.apm.collector.storage.elasticsearch; import java.util.List; import org.skywalking.apm.collector.client.elasticsearch.ElasticSearchClient; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.framework.DefineException; import org.skywalking.apm.collector.core.module.ModuleConfigParser; import org.skywalking.apm.collector.core.storage.StorageInstaller; @@ -33,7 +32,7 @@ public class StorageElasticSearchModuleDefine extends StorageModuleDefine { return new StorageElasticSearchConfigParser(); } - @Override protected Client createClient(DataMonitor dataMonitor) { + @Override protected Client createClient() { return new ElasticSearchClient(StorageElasticSearchConfig.CLUSTER_NAME, StorageElasticSearchConfig.CLUSTER_TRANSPORT_SNIFFER, StorageElasticSearchConfig.CLUSTER_NODES); } diff --git a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java index 84f9b31a7..99575e2b2 100644 --- a/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java +++ b/apm-collector/apm-collector-storage/src/main/java/org/skywalking/apm/collector/storage/h2/StorageH2ModuleDefine.java @@ -3,7 +3,6 @@ package org.skywalking.apm.collector.storage.h2; import java.util.List; import org.skywalking.apm.collector.client.h2.H2Client; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.framework.DefineException; import org.skywalking.apm.collector.core.module.ModuleConfigParser; import org.skywalking.apm.collector.core.storage.StorageInstaller; @@ -33,7 +32,7 @@ public class StorageH2ModuleDefine extends StorageModuleDefine { return new StorageH2ConfigParser(); } - @Override protected Client createClient(DataMonitor dataMonitor) { + @Override protected Client createClient() { return new H2Client(); } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java index 99b11bbbb..cb2142c2d 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleGroupDefine.java @@ -10,6 +10,11 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; public class StreamModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "collector_inside"; + private final StreamModuleInstaller installer; + + public StreamModuleGroupDefine() { + installer = new StreamModuleInstaller(); + } @Override public String name() { return GROUP_NAME; @@ -20,6 +25,6 @@ public class StreamModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new StreamModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java index 1c2a7fd21..da03133de 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/StreamModuleInstaller.java @@ -1,13 +1,12 @@ package org.skywalking.apm.collector.stream; +import java.util.LinkedList; import java.util.List; -import org.skywalking.apm.collector.core.client.ClientException; -import org.skywalking.apm.collector.core.config.ConfigException; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.core.framework.Context; import org.skywalking.apm.collector.core.framework.DefineException; import org.skywalking.apm.collector.core.module.SingleModuleInstaller; -import org.skywalking.apm.collector.core.server.ServerException; +import org.skywalking.apm.collector.queue.QueueModuleGroupDefine; import org.skywalking.apm.collector.stream.worker.AbstractLocalAsyncWorkerProvider; import org.skywalking.apm.collector.stream.worker.AbstractRemoteWorkerProvider; import org.skywalking.apm.collector.stream.worker.ClusterWorkerContext; @@ -32,8 +31,13 @@ public class StreamModuleInstaller extends SingleModuleInstaller { return new StreamModuleContext(groupName()); } - @Override public void install() throws ClientException, DefineException, ConfigException, ServerException { - super.install(); + @Override public List dependenceModules() { + List dependenceModules = new LinkedList<>(); + dependenceModules.add(QueueModuleGroupDefine.GROUP_NAME); + return dependenceModules; + } + + @Override public void onAfterInstall() throws DefineException { initializeWorker((StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(groupName())); } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java index 781e65d55..445a17e45 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java @@ -1,6 +1,8 @@ package org.skywalking.apm.collector.stream.grpc; import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; import java.util.Map; import org.skywalking.apm.collector.client.grpc.GRPCClient; import org.skywalking.apm.collector.cluster.ClusterModuleDefine; @@ -9,6 +11,7 @@ import org.skywalking.apm.collector.core.cluster.ClusterDataListener; import org.skywalking.apm.collector.core.framework.CollectorContextHelper; import org.skywalking.apm.collector.stream.StreamModuleContext; import org.skywalking.apm.collector.stream.StreamModuleGroupDefine; +import org.skywalking.apm.collector.stream.worker.RemoteWorkerRef; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,6 +29,7 @@ public class StreamGRPCDataListener extends ClusterDataListener { } private Map clients = new HashMap<>(); + private Map> remoteWorkerRefMap = new HashMap<>(); @Override public void serverJoinNotify(String serverAddress) { String selfAddress = StreamGRPCConfig.HOST + ":" + StreamGRPCConfig.PORT; @@ -50,7 +54,11 @@ public class StreamGRPCDataListener extends ClusterDataListener { } else { context.getClusterWorkerContext().getProviders().forEach(provider -> { logger.info("create remote worker reference, role: {}", provider.role().roleName()); - provider.create(client); + RemoteWorkerRef remoteWorkerRef = provider.create(client); + if (!remoteWorkerRefMap.containsKey(serverAddress)) { + remoteWorkerRefMap.put(selfAddress, new LinkedList<>()); + } + remoteWorkerRefMap.get(serverAddress).add(remoteWorkerRef); }); } } else { @@ -58,7 +66,17 @@ public class StreamGRPCDataListener extends ClusterDataListener { } } - @Override public void serverQuitNotify() { + @Override public void serverQuitNotify(String serverAddress) { + StreamModuleContext context = (StreamModuleContext)CollectorContextHelper.INSTANCE.getContext(StreamModuleGroupDefine.GROUP_NAME); + if (clients.containsKey(serverAddress)) { + clients.get(serverAddress).shutdown(); + clients.remove(serverAddress); + } + if (remoteWorkerRefMap.containsKey(serverAddress)) { + for (RemoteWorkerRef remoteWorkerRef : remoteWorkerRefMap.get(serverAddress)) { + context.getClusterWorkerContext().remove(remoteWorkerRef); + } + } } } diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java index 1e3897d51..388d01126 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCModuleDefine.java @@ -3,7 +3,6 @@ package org.skywalking.apm.collector.stream.grpc; import java.util.ArrayList; import java.util.List; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListener; import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleConfigParser; @@ -33,7 +32,7 @@ public class StreamGRPCModuleDefine extends StreamModuleDefine { return new StreamGRPCConfigParser(); } - @Override protected Client createClient(DataMonitor dataMonitor) { + @Override protected Client createClient() { return null; } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UICommonModuleInstaller.java similarity index 55% rename from apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java rename to apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UICommonModuleInstaller.java index 4308cf6c9..0466baf68 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleInstaller.java +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UICommonModuleInstaller.java @@ -1,12 +1,13 @@ package org.skywalking.apm.collector.ui; +import java.util.List; import org.skywalking.apm.collector.core.framework.Context; -import org.skywalking.apm.collector.core.module.MultipleModuleInstaller; +import org.skywalking.apm.collector.core.module.MultipleCommonModuleInstaller; /** * @author pengys5 */ -public class UIModuleInstaller extends MultipleModuleInstaller { +public class UICommonModuleInstaller extends MultipleCommonModuleInstaller { @Override public String groupName() { return UIModuleGroupDefine.GROUP_NAME; @@ -15,4 +16,8 @@ public class UIModuleInstaller extends MultipleModuleInstaller { @Override public Context moduleContext() { return new UIModuleContext(groupName()); } + + @Override public List dependenceModules() { + return null; + } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java index bc7643d7b..fca0c2a0f 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleDefine.java @@ -1,7 +1,6 @@ package org.skywalking.apm.collector.ui; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; import org.skywalking.apm.collector.core.module.ModuleDefine; @@ -10,7 +9,7 @@ import org.skywalking.apm.collector.core.module.ModuleDefine; */ public abstract class UIModuleDefine extends ModuleDefine implements ClusterDataListenerDefine { - @Override protected final Client createClient(DataMonitor dataMonitor) { + @Override protected final Client createClient() { throw new UnsupportedOperationException(""); } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java index 575cd4175..372174703 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/UIModuleGroupDefine.java @@ -10,6 +10,11 @@ import org.skywalking.apm.collector.core.module.ModuleInstaller; public class UIModuleGroupDefine implements ModuleGroupDefine { public static final String GROUP_NAME = "ui"; + private final UICommonModuleInstaller installer; + + public UIModuleGroupDefine() { + installer = new UICommonModuleInstaller(); + } @Override public String name() { return GROUP_NAME; @@ -20,6 +25,6 @@ public class UIModuleGroupDefine implements ModuleGroupDefine { } @Override public ModuleInstaller moduleInstaller() { - return new UIModuleInstaller(); + return installer; } } diff --git a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java index e3d4bffb2..d9fdd2c36 100644 --- a/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java +++ b/apm-collector/apm-collector-ui/src/main/java/org/skywalking/apm/collector/ui/jetty/UIJettyDataListener.java @@ -19,7 +19,6 @@ public class UIJettyDataListener extends ClusterDataListener { } - @Override public void serverQuitNotify() { - + @Override public void serverQuitNotify(String serverAddress) { } } From d45e7fec67cd7d29eaaee522a1f7098a3fd48f83 Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 10 Sep 2017 21:11:54 +0800 Subject: [PATCH 4/7] no message --- .../apm/collector/stream/grpc/StreamGRPCDataListener.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java index 445a17e45..92c86d47c 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/grpc/StreamGRPCDataListener.java @@ -56,7 +56,7 @@ public class StreamGRPCDataListener extends ClusterDataListener { logger.info("create remote worker reference, role: {}", provider.role().roleName()); RemoteWorkerRef remoteWorkerRef = provider.create(client); if (!remoteWorkerRefMap.containsKey(serverAddress)) { - remoteWorkerRefMap.put(selfAddress, new LinkedList<>()); + remoteWorkerRefMap.put(serverAddress, new LinkedList<>()); } remoteWorkerRefMap.get(serverAddress).add(remoteWorkerRef); }); From 9371716838f0a3ca2687d876a8fa4d8131b3a9d9 Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 10 Sep 2017 21:56:59 +0800 Subject: [PATCH 5/7] fixed data merge error --- .../org/skywalking/apm/collector/stream/worker/WorkerRefs.java | 2 +- .../apm/collector/stream/worker/impl/PersistenceWorker.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java index 9f2f66f65..3cbafe733 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/WorkerRefs.java @@ -31,7 +31,7 @@ public class WorkerRefs { logger.debug("WorkerSelector instance of {}", workerSelector.getClass()); workerRefs.forEach(workerRef -> { if (workerRef instanceof RemoteWorkerRef) { - logger.info("message hashcode: {}, select workers: {}", message.hashCode(), workerRef.toString()); + logger.debug("message hashcode: {}, select workers: {}", message.hashCode(), workerRef.toString()); } }); workerSelector.select(workerRefs, message).tell(message); diff --git a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java index c1e509c20..a66086ca0 100644 --- a/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java +++ b/apm-collector/apm-collector-stream/src/main/java/org/skywalking/apm/collector/stream/worker/impl/PersistenceWorker.java @@ -122,7 +122,7 @@ public abstract class PersistenceWorker extends AbstractLocalAsyncWorker { Data data = (Data)message; if (dataCache.containsKey(data.id())) { - getRole().dataDefine().mergeData(data, dataCache.get(data.id())); + getRole().dataDefine().mergeData(dataCache.get(data.id()), data); } else { dataCache.put(data.id(), data); } From 51d96d36ee173718e20ba8043e9d6d40ae586737 Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 10 Sep 2017 22:08:31 +0800 Subject: [PATCH 6/7] Fixed style check error --- .../apm/collector/core/module/SingleModuleInstaller.java | 1 - 1 file changed, 1 deletion(-) diff --git a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java index 0fd55836c..fe767cd0f 100644 --- a/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java +++ b/apm-collector/apm-collector-core/src/main/java/org/skywalking/apm/collector/core/module/SingleModuleInstaller.java @@ -2,7 +2,6 @@ package org.skywalking.apm.collector.core.module; import java.util.Iterator; import java.util.Map; -import org.skywalking.apm.collector.core.CollectorException; import org.skywalking.apm.collector.core.client.ClientException; import org.skywalking.apm.collector.core.cluster.ClusterDataListenerDefine; import org.skywalking.apm.collector.core.cluster.ClusterModuleContext; From 87754831ae429432c3eeb17f724fefb3fac74390 Mon Sep 17 00:00:00 2001 From: pengys5 <8082209@qq.com> Date: Sun, 10 Sep 2017 22:22:52 +0800 Subject: [PATCH 7/7] Fixed check style error --- .../org/skywalking/apm/collector/queue/QueueModuleDefine.java | 1 - .../apm/network/trace/component/OfficialComponent.java | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java index e7c4920d4..b2195c853 100644 --- a/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java +++ b/apm-collector/apm-collector-queue/src/main/java/org/skywalking/apm/collector/queue/QueueModuleDefine.java @@ -2,7 +2,6 @@ package org.skywalking.apm.collector.queue; import java.util.List; import org.skywalking.apm.collector.core.client.Client; -import org.skywalking.apm.collector.core.client.DataMonitor; import org.skywalking.apm.collector.core.framework.Handler; import org.skywalking.apm.collector.core.module.ModuleDefine; import org.skywalking.apm.collector.core.module.ModuleRegistration; diff --git a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/OfficialComponent.java b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/OfficialComponent.java index 114066b42..790f70f5f 100644 --- a/apm-network/src/main/java/org/skywalking/apm/network/trace/component/OfficialComponent.java +++ b/apm-network/src/main/java/org/skywalking/apm/network/trace/component/OfficialComponent.java @@ -3,7 +3,7 @@ package org.skywalking.apm.network.trace.component; /** * @author wusheng */ -public class OfficialComponent implements Component{ +public class OfficialComponent implements Component { private int id; private String name;