From 019af3e3456fff49500eb6440b94eb95aa3a4ed9 Mon Sep 17 00:00:00 2001 From: kezhenxu94 Date: Fri, 17 Jan 2020 20:33:52 +0800 Subject: [PATCH] Drop support of protocol v1 (sw3) (#4244) * Drop support of protocol v1 (sw3) * Remove versioning logic further * Remove more version5-only classes * Commit missing files * Update submodule and address review comment * Fix failed tests --- .../apm/network/ProtocolVersion.java | 23 +- apm-protocol/apm-network/src/main/proto | 2 +- .../network/trace/proto/GRPCNoServerTest.java | 10 +- .../apm/agent/core/conf/Config.java | 24 +- .../agent/core/context/ContextCarrier.java | 58 +--- .../agent/core/context/SW3CarrierItem.java | 38 --- .../context/ContextCarrierV2HeaderTest.java | 109 +------ .../core/context/ContextManagerTest.java | 25 +- .../ActiveMQConsumerInterceptorTest.java | 8 - .../plugin/dubbo/DubboInterceptorTest.java | 11 +- .../plugin/dubbo/DubboInterceptorTest.java | 11 +- .../v9/server/HandleInterceptorTest.java | 12 +- .../kafka/KafkaConsumerInterceptorTest.java | 11 +- .../motan/MotanProviderInterceptorTest.java | 12 +- .../pulsar/PulsarConsumerInterceptorTest.java | 13 +- .../RabbitMQConsumerInterceptorTest.java | 3 +- .../SynchronousDispatcherInterceptorTest.java | 24 -- .../SofaRpcProviderInterceptorTest.java | 13 +- .../struts2/Struts2InterceptorTest.java | 12 +- .../TomcatInvokeInterceptorTest.java | 13 +- .../v2x/RootHandlerInterceptorTest.java | 8 - .../undertow/v2x/TracingHandlerTest.java | 7 +- .../SkywalkingSpanActivationTest.java | 24 +- docs/en/protocols/README.md | 14 +- ...Process-Propagation-Headers-Protocol-v1.md | 62 ---- ...Process-Propagation-Headers-Protocol-v2.md | 7 +- docs/en/protocols/Trace-Data-Protocol-v1.md | 213 ------------- .../service-agent/java-agent/Namespace.md | 4 +- .../setup/service-agent/java-agent/README.md | 2 - .../server/core/query/TraceQueryService.java | 138 +-------- .../oap/server/library/buffer/BufferData.java | 5 +- .../library/buffer/BufferStreamTestCase.java | 69 ----- .../jvm/provider/JVMModuleProvider.java | 1 - .../handler/JVMMetricsServiceHandler.java | 57 ---- .../JVMMetricsServiceHandlerMainTest.java | 143 --------- .../provider/RegisterModuleProvider.java | 24 +- .../v5/grpc/ApplicationRegisterHandler.java | 59 ---- .../grpc/InstanceDiscoveryServiceHandler.java | 98 ------ .../NetworkAddressRegisterServiceHandler.java | 63 ---- .../v5/grpc/ServiceNameDiscoveryHandler.java | 65 ---- .../ApplicationRegisterServletHandler.java | 71 ----- .../rest/InstanceDiscoveryServletHandler.java | 102 ------- .../rest/InstanceHeartBeatServletHandler.java | 82 ----- .../NetworkAddressRegisterServletHandler.java | 76 ----- .../ServiceNameDiscoveryServiceHandler.java | 86 ------ .../ApplicationRegisterHandlerTestCase.java | 48 --- ...stanceDiscoveryServiceHandlerTestCase.java | 53 ---- .../handler/v5/InstanceHeartBeatTestCase.java | 42 --- ...AddressRegisterServiceHandlerTestCase.java | 46 --- .../ServiceNameDiscoveryHandlerTestCase.java | 49 --- .../trace/provider/TraceModuleProvider.java | 14 +- .../handler/v5/grpc/SegmentCounter.java | 34 --- .../v5/grpc/TraceSegmentServiceHandler.java | 70 ----- .../v5/rest/TraceSegmentServletHandler.java | 78 ----- .../reader/KeyWithStringValueJsonReader.java | 54 ---- .../handler/v5/rest/reader/LogJsonReader.java | 60 ---- .../v5/rest/reader/ReferenceJsonReader.java | 92 ------ .../v5/rest/reader/SegmentJsonReader.java | 77 ----- .../v5/rest/reader/SpanJsonReader.java | 126 -------- .../handler/v5/rest/reader/TraceSegment.java | 45 --- .../rest/reader/TraceSegmentJsonReader.java | 64 ---- .../v5/rest/reader/UniqueIdJsonReader.java | 40 --- .../trace/provider/parser/SegmentParse.java | 284 ------------------ .../trace/provider/parser/SegmentParseV2.java | 55 ++-- .../parser/SegmentParserListenerManager.java | 2 +- .../parser/decorator/ReferenceDecorator.java | 129 ++------ .../parser/decorator/SegmentCoreInfo.java | 3 +- .../parser/decorator/SegmentDecorator.java | 45 +-- .../parser/decorator/SpanDecorator.java | 168 +++-------- .../endpoint/MultiScopesSpanListener.java | 21 +- .../listener/segment/SegmentSpanListener.java | 23 +- .../SegmentStandardizationWorker.java | 4 +- .../receiver/trace/mock/AgentDataMock.java | 102 ------- .../receiver/trace/mock/RegisterMock.java | 80 ----- .../receiver/trace/mock/ServiceAMock.java | 116 ------- .../receiver/trace/mock/ServiceBMock.java | 150 --------- .../receiver/trace/mock/ServiceCMock.java | 103 ------- .../receiver/trace/mock/UniqueIdBuilder.java | 39 --- .../plugin/test/mockcollector/Main.java | 5 - .../MockApplicationRegisterService.java | 60 ---- .../service/MockJVMMetricsService.java | 33 -- .../service/MockJVMMetricsV1Service.java | 34 --- .../MockServiceNameDiscoveryService.java | 39 --- .../service/MockTraceSegmentV1Service.java | 81 ----- 84 files changed, 253 insertions(+), 4227 deletions(-) rename oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/StreamJsonReader.java => apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/ProtocolVersion.java (71%) delete mode 100644 apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/SW3CarrierItem.java delete mode 100644 docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md delete mode 100644 docs/en/protocols/Trace-Data-Protocol-v1.md delete mode 100644 oap-server/server-library/library-buffer/src/test/java/org/apache/skywalking/oap/server/library/buffer/BufferStreamTestCase.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandlerMainTest.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ApplicationRegisterHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/InstanceDiscoveryServiceHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/NetworkAddressRegisterServiceHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ServiceNameDiscoveryHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ApplicationRegisterServletHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceDiscoveryServletHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceHeartBeatServletHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/NetworkAddressRegisterServletHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ServiceNameDiscoveryServiceHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ApplicationRegisterHandlerTestCase.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceDiscoveryServiceHandlerTestCase.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceHeartBeatTestCase.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/NetworkAddressRegisterServiceHandlerTestCase.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ServiceNameDiscoveryHandlerTestCase.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/SegmentCounter.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/TraceSegmentServiceHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/TraceSegmentServletHandler.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/KeyWithStringValueJsonReader.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/LogJsonReader.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/ReferenceJsonReader.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SegmentJsonReader.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SpanJsonReader.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegment.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegmentJsonReader.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/UniqueIdJsonReader.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParse.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/AgentDataMock.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceAMock.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceBMock.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceCMock.java delete mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/UniqueIdBuilder.java delete mode 100644 test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockApplicationRegisterService.java delete mode 100644 test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsService.java delete mode 100644 test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsV1Service.java delete mode 100644 test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockServiceNameDiscoveryService.java delete mode 100644 test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockTraceSegmentV1Service.java diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/StreamJsonReader.java b/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/ProtocolVersion.java similarity index 71% rename from oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/StreamJsonReader.java rename to apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/ProtocolVersion.java index cc144c6d60..899c281098 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/StreamJsonReader.java +++ b/apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/ProtocolVersion.java @@ -16,14 +16,23 @@ * */ -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; +package org.apache.skywalking.apm.network; /** - * @author peng-yongsheng + * The version of the protocol between agent and backend. + * + * @author kezhenxu94 */ -public interface StreamJsonReader { - T read(JsonReader reader) throws IOException; +public enum ProtocolVersion { + V2(2); + + private final int number; + + ProtocolVersion(final int number) { + this.number = number; + } + + public int number() { + return number; + } } diff --git a/apm-protocol/apm-network/src/main/proto b/apm-protocol/apm-network/src/main/proto index 7ccf1cf6eb..eebd016e32 160000 --- a/apm-protocol/apm-network/src/main/proto +++ b/apm-protocol/apm-network/src/main/proto @@ -1 +1 @@ -Subproject commit 7ccf1cf6eb8001f61a76e2c8d200629a4807fc53 +Subproject commit eebd016e32b0808416923acf04dcd31d9eb86c09 diff --git a/apm-protocol/apm-network/src/test/java/org/apache/skywalking/apm/network/trace/proto/GRPCNoServerTest.java b/apm-protocol/apm-network/src/test/java/org/apache/skywalking/apm/network/trace/proto/GRPCNoServerTest.java index 45e32eef1f..d27914b954 100644 --- a/apm-protocol/apm-network/src/test/java/org/apache/skywalking/apm/network/trace/proto/GRPCNoServerTest.java +++ b/apm-protocol/apm-network/src/test/java/org/apache/skywalking/apm/network/trace/proto/GRPCNoServerTest.java @@ -26,9 +26,9 @@ import io.grpc.StatusRuntimeException; import io.grpc.internal.DnsNameResolverProvider; import io.grpc.netty.NettyChannelBuilder; import io.grpc.stub.StreamObserver; +import org.apache.skywalking.apm.network.common.Commands; +import org.apache.skywalking.apm.network.language.agent.v2.TraceSegmentReportServiceGrpc; import org.junit.Assert; -import org.apache.skywalking.apm.network.language.agent.Downstream; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentServiceGrpc; import org.apache.skywalking.apm.network.language.agent.UpstreamSegment; /** @@ -42,10 +42,10 @@ public class GRPCNoServerTest { .maxInboundMessageSize(1024 * 1024 * 50) .usePlaintext(); ManagedChannel channel = channelBuilder.build(); - TraceSegmentServiceGrpc.TraceSegmentServiceStub serviceStub = TraceSegmentServiceGrpc.newStub(channel); + TraceSegmentReportServiceGrpc.TraceSegmentReportServiceStub serviceStub = TraceSegmentReportServiceGrpc.newStub(channel); final Status[] status = {null}; - StreamObserver streamObserver = serviceStub.collect(new StreamObserver() { - @Override public void onNext(Downstream value) { + StreamObserver streamObserver = serviceStub.collect(new StreamObserver() { + @Override public void onNext(Commands value) { } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java index ff12bdbab3..084e819ecd 100755 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/conf/Config.java @@ -53,7 +53,7 @@ public class Config { public static String AUTHENTICATION = ""; /** - * Negative or zero means off, by default. {@link #SAMPLE_N_PER_3_SECS} means sampling N {@link TraceSegment} in + * Negative or zero means off, by default. {@code #SAMPLE_N_PER_3_SECS} means sampling N {@link TraceSegment} in * 3 seconds tops. */ public static int SAMPLE_N_PER_3_SECS = -1; @@ -64,29 +64,19 @@ public class Config { public static String IGNORE_SUFFIX = ".jpg,.jpeg,.js,.css,.png,.bmp,.gif,.ico,.mp3,.mp4,.html,.svg"; /** - * The max number of spans in a single segment. Through this config item, skywalking keep your application + * The max number of spans in a single segment. Through this config item, SkyWalking keep your application * memory cost estimated. */ public static int SPAN_LIMIT_PER_SEGMENT = 300; /** - * If true, skywalking agent will save all instrumented classes files in `/debugging` folder. Skywalking team + * If true, SkyWalking agent will save all instrumented classes files in `/debugging` folder. SkyWalking team * may ask for these files in order to resolve compatible problem. */ public static boolean IS_OPEN_DEBUGGING_CLASS = false; /** - * Active V2 header in default - */ - public static boolean ACTIVE_V2_HEADER = true; - - /** - * Deactive V1 header in default - */ - public static boolean ACTIVE_V1_HEADER = false; - - /** - * The identify of the instance + * The identifier of the instance */ public static String INSTANCE_UUID = ""; @@ -95,7 +85,7 @@ public class Config { * e.g. * agent.instance_properties[org]=apache */ - public static Map INSTANCE_PROPERTIES = new HashMap(); + public static Map INSTANCE_PROPERTIES = new HashMap<>(); /** * How depth the agent goes, when log cause exceptions. @@ -260,7 +250,7 @@ public class Config { * Some information after custom enhancements, this configuration is used by the custom enhancement plugin. * And using Map CONTEXT for avoiding classloader isolation issue. */ - public static Map CONTEXT = new HashMap(); + public static Map CONTEXT = new HashMap<>(); } public static class Tomcat { @@ -341,7 +331,7 @@ public class Config { * Operation name group rules */ public static class OPGroup { - /** + /* * Since 6.6.0, exit span is not requesting endpoint register, * this group rule is not required. * diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextCarrier.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextCarrier.java index 91d728e031..33d4aedd1b 100644 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextCarrier.java +++ b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/ContextCarrier.java @@ -21,7 +21,6 @@ package org.apache.skywalking.apm.agent.core.context; import java.io.Serializable; import java.util.List; import org.apache.skywalking.apm.agent.core.base64.Base64; -import org.apache.skywalking.apm.agent.core.conf.Config; import org.apache.skywalking.apm.agent.core.context.ids.DistributedTraceId; import org.apache.skywalking.apm.agent.core.context.ids.ID; import org.apache.skywalking.apm.agent.core.context.ids.PropagatedTraceId; @@ -77,21 +76,8 @@ public class ContextCarrier implements Serializable { private DistributedTraceId primaryDistributedTraceId; public CarrierItem items() { - CarrierItemHead head; - if (Config.Agent.ACTIVE_V2_HEADER && Config.Agent.ACTIVE_V1_HEADER) { - SW3CarrierItem carrierItem = new SW3CarrierItem(this, null); - SW6CarrierItem sw6CarrierItem = new SW6CarrierItem(this, carrierItem); - head = new CarrierItemHead(sw6CarrierItem); - } else if (Config.Agent.ACTIVE_V2_HEADER) { - SW6CarrierItem sw6CarrierItem = new SW6CarrierItem(this, null); - head = new CarrierItemHead(sw6CarrierItem); - } else if (Config.Agent.ACTIVE_V1_HEADER) { - SW3CarrierItem carrierItem = new SW3CarrierItem(this, null); - head = new CarrierItemHead(carrierItem); - } else { - throw new IllegalArgumentException("At least active v1 or v2 header."); - } - return head; + SW6CarrierItem sw6CarrierItem = new SW6CarrierItem(this, null); + return new CarrierItemHead(sw6CarrierItem); } /** @@ -101,36 +87,16 @@ public class ContextCarrier implements Serializable { */ String serialize(HeaderVersion version) { if (this.isValid(version)) { - if (HeaderVersion.v1.equals(version)) { - if (Config.Agent.ACTIVE_V1_HEADER) { - return StringUtil.join('|', - this.getTraceSegmentId().encode(), - this.getSpanId() + "", - this.getParentServiceInstanceId() + "", - this.getEntryServiceInstanceId() + "", - this.getPeerHost(), - this.getEntryEndpointName(), - this.getParentEndpointName(), - this.getPrimaryDistributedTraceId().encode()); - } else { - return ""; - } - } else { - if (Config.Agent.ACTIVE_V2_HEADER) { - return StringUtil.join('-', - "1", - Base64.encode(this.getPrimaryDistributedTraceId().encode()), - Base64.encode(this.getTraceSegmentId().encode()), - this.getSpanId() + "", - this.getParentServiceInstanceId() + "", - this.getEntryServiceInstanceId() + "", - Base64.encode(this.getPeerHost()), - Base64.encode(this.getEntryEndpointName()), - Base64.encode(this.getParentEndpointName())); - } else { - return ""; - } - } + return StringUtil.join('-', + "1", + Base64.encode(this.getPrimaryDistributedTraceId().encode()), + Base64.encode(this.getTraceSegmentId().encode()), + this.getSpanId() + "", + this.getParentServiceInstanceId() + "", + this.getEntryServiceInstanceId() + "", + Base64.encode(this.getPeerHost()), + Base64.encode(this.getEntryEndpointName()), + Base64.encode(this.getParentEndpointName())); } else { return ""; } diff --git a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/SW3CarrierItem.java b/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/SW3CarrierItem.java deleted file mode 100644 index 5d057782bd..0000000000 --- a/apm-sniffer/apm-agent-core/src/main/java/org/apache/skywalking/apm/agent/core/context/SW3CarrierItem.java +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - - -package org.apache.skywalking.apm.agent.core.context; - -/** - * @author wusheng - */ -public class SW3CarrierItem extends CarrierItem { - public static final String HEADER_NAME = "sw3"; - private ContextCarrier carrier; - - public SW3CarrierItem(ContextCarrier carrier, CarrierItem next) { - super(HEADER_NAME, carrier.serialize(ContextCarrier.HeaderVersion.v1), next); - this.carrier = carrier; - } - - @Override - public void setHeadValue(String headValue) { - carrier.deserialize(headValue, ContextCarrier.HeaderVersion.v1); - } -} diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextCarrierV2HeaderTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextCarrierV2HeaderTest.java index a2821d7f33..9ad3b774c9 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextCarrierV2HeaderTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextCarrierV2HeaderTest.java @@ -20,7 +20,6 @@ package org.apache.skywalking.apm.agent.core.context; import java.util.ArrayList; import java.util.List; -import org.apache.skywalking.apm.agent.core.conf.Config; import org.apache.skywalking.apm.agent.core.context.ids.DistributedTraceId; import org.apache.skywalking.apm.agent.core.context.ids.ID; import org.apache.skywalking.apm.agent.core.context.ids.PropagatedTraceId; @@ -28,30 +27,6 @@ import org.junit.Assert; import org.junit.Test; public class ContextCarrierV2HeaderTest { - @Test - public void testCompatibleHeaderKeys() { - Config.Agent.ACTIVE_V1_HEADER = true; - ContextCarrier contextCarrier = new ContextCarrier(); - CarrierItem next = contextCarrier.items(); - boolean hasSW3 = false; - boolean hasSW6 = false; - try { - while (next.hasNext()) { - next = next.next(); - if (next.getHeadKey().equals("sw3")) { - hasSW3 = true; - } else if (next.getHeadKey().equals("sw6")) { - hasSW6 = true; - } else { - Assert.fail("unexpected key"); - } - } - } finally { - Config.Agent.ACTIVE_V1_HEADER = false; - } - Assert.assertTrue(hasSW3); - Assert.assertTrue(hasSW6); - } @Test public void testDeserializeV2Header() { @@ -59,31 +34,7 @@ public class ContextCarrierV2HeaderTest { CarrierItem next = contextCarrier.items(); while (next.hasNext()) { next = next.next(); - if (next.getHeadKey().equals("sw3")) { - } else if (next.getHeadKey().equals("sw6")) { - next.setHeadValue("1-My40LjU=-MS4yLjM=-4-1-1-IzEyNy4wLjAuMTo4MDgw--"); - } else { - Assert.fail("unexpected key"); - } - } - - Assert.assertTrue(contextCarrier.isValid()); - - Config.Agent.ACTIVE_V1_HEADER = true; - try { - contextCarrier = new ContextCarrier(); - next = contextCarrier.items(); - while (next.hasNext()) { - next = next.next(); - if (next.getHeadKey().equals("sw3")) { - next.setHeadValue("1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|1.2343.234234234"); - } else if (next.getHeadKey().equals("sw6")) { - } else { - Assert.fail("unexpected key"); - } - } - } finally { - Config.Agent.ACTIVE_V1_HEADER = false; + next.setHeadValue("1-My40LjU=-MS4yLjM=-4-1-1-IzEyNy4wLjAuMTo4MDgw--"); } Assert.assertTrue(contextCarrier.isValid()); @@ -91,7 +42,7 @@ public class ContextCarrierV2HeaderTest { @Test public void testSerializeV2Header() { - List distributedTraceIds = new ArrayList(); + List distributedTraceIds = new ArrayList<>(); distributedTraceIds.add(new PropagatedTraceId("3.4.5")); ContextCarrier contextCarrier = new ContextCarrier(); @@ -107,37 +58,18 @@ public class ContextCarrierV2HeaderTest { CarrierItem next = contextCarrier.items(); while (next.hasNext()) { next = next.next(); - if (next.getHeadKey().equals("sw3")) { - Assert.assertEquals("", next.getHeadValue()); - } else if (next.getHeadKey().equals("sw6")) { - /** - * sampleFlag-traceId-segmentId-spanId-parentAppInstId-entryAppInstId-peerHost-entryEndpoint-parentEndpoint - * - * "1-3.4.5-1.2.3-4-1-1-#127.0.0.1:8080-#/portal-123" - */ - Assert.assertEquals("1-My40LjU=-MS4yLjM=-4-1-1-IzEyNy4wLjAuMTo4MDgw-Iy9wb3J0YWw=-MTIz", next.getHeadValue()); - } else { - Assert.fail("unexpected key"); - } + /* + * sampleFlag-traceId-segmentId-spanId-parentAppInstId-entryAppInstId-peerHost-entryEndpoint-parentEndpoint + * + * "1-3.4.5-1.2.3-4-1-1-#127.0.0.1:8080-#/portal-123" + */ + Assert.assertEquals("1-My40LjU=-MS4yLjM=-4-1-1-IzEyNy4wLjAuMTo4MDgw-Iy9wb3J0YWw=-MTIz", next.getHeadValue()); } - Config.Agent.ACTIVE_V1_HEADER = true; - try { - next = contextCarrier.items(); - while (next.hasNext()) { - next = next.next(); - if (next.getHeadKey().equals("sw3")) { - Assert.assertEquals("1.2.3|4|1|1|#127.0.0.1:8080|#/portal|123|3.4.5", next.getHeadValue()); - } else if (next.getHeadKey().equals("sw6")) { - //TODO, no BASE64 - Assert.assertEquals("1-My40LjU=-MS4yLjM=-4-1-1-IzEyNy4wLjAuMTo4MDgw-Iy9wb3J0YWw=-MTIz", next.getHeadValue()); - } else { - Assert.fail("unexpected key"); - } - } - - } finally { - Config.Agent.ACTIVE_V1_HEADER = false; + next = contextCarrier.items(); + while (next.hasNext()) { + next = next.next(); + Assert.assertEquals("1-My40LjU=-MS4yLjM=-4-1-1-IzEyNy4wLjAuMTo4MDgw-Iy9wb3J0YWw=-MTIz", next.getHeadValue()); } Assert.assertTrue(contextCarrier.isValid()); @@ -145,7 +77,7 @@ public class ContextCarrierV2HeaderTest { @Test public void testV2HeaderAccurate() { - List distributedTraceIds = new ArrayList(); + List distributedTraceIds = new ArrayList<>(); distributedTraceIds.add(new PropagatedTraceId("3.4.5")); ContextCarrier contextCarrier = new ContextCarrier(); @@ -162,25 +94,14 @@ public class ContextCarrierV2HeaderTest { String headerValue = null; while (next.hasNext()) { next = next.next(); - if (next.getHeadKey().equals("sw3")) { - Assert.assertEquals("", next.getHeadValue()); - } else if (next.getHeadKey().equals("sw6")) { - headerValue = next.getHeadValue(); - } else { - Assert.fail("unexpected key"); - } + headerValue = next.getHeadValue(); } ContextCarrier contextCarrier2 = new ContextCarrier(); next = contextCarrier2.items(); while (next.hasNext()) { next = next.next(); - if (next.getHeadKey().equals("sw3")) { - } else if (next.getHeadKey().equals("sw6")) { - next.setHeadValue(headerValue); - } else { - Assert.fail("unexpected key"); - } + next.setHeadValue(headerValue); } Assert.assertTrue(contextCarrier2.isValid()); diff --git a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextManagerTest.java b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextManagerTest.java index 4c56c7cf69..66b435ec2a 100644 --- a/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextManagerTest.java +++ b/apm-sniffer/apm-agent-core/src/test/java/org/apache/skywalking/apm/agent/core/context/ContextManagerTest.java @@ -30,6 +30,11 @@ import org.apache.skywalking.apm.agent.core.context.util.SegmentHelper; import org.apache.skywalking.apm.agent.core.context.util.TraceSegmentRefHelper; import org.apache.skywalking.apm.agent.core.test.tools.AgentServiceRule; import org.apache.skywalking.apm.agent.core.test.tools.TracingSegmentRunner; +import org.apache.skywalking.apm.network.common.KeyStringValuePair; +import org.apache.skywalking.apm.network.language.agent.v2.Log; +import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject; +import org.apache.skywalking.apm.network.language.agent.v2.SegmentReference; +import org.apache.skywalking.apm.network.language.agent.v2.SpanObjectV2; import org.hamcrest.MatcherAssert; import org.junit.*; import org.junit.runner.RunWith; @@ -43,12 +48,7 @@ import org.apache.skywalking.apm.agent.core.context.util.SpanHelper; import org.apache.skywalking.apm.agent.core.dictionary.DictionaryUtil; import org.apache.skywalking.apm.agent.core.test.tools.SegmentStorage; import org.apache.skywalking.apm.agent.core.test.tools.SegmentStoragePoint; -import org.apache.skywalking.apm.network.language.agent.KeyWithStringValue; -import org.apache.skywalking.apm.network.language.agent.LogMessage; -import org.apache.skywalking.apm.network.language.agent.SpanObject; import org.apache.skywalking.apm.network.language.agent.SpanType; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentObject; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentReference; import org.apache.skywalking.apm.network.language.agent.UpstreamSegment; import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; @@ -256,19 +256,18 @@ public class ContextManagerTest { UpstreamSegment upstreamSegment = actualSegment.transform(); assertThat(upstreamSegment.getGlobalTraceIdsCount(), is(1)); - TraceSegmentObject traceSegmentObject = TraceSegmentObject.parseFrom(upstreamSegment.getSegment()); - TraceSegmentReference reference = traceSegmentObject.getSpans(1).getRefs(0); + SegmentObject traceSegmentObject = SegmentObject.parseFrom(upstreamSegment.getSegment()); + SegmentReference reference = traceSegmentObject.getSpans(1).getRefs(0); - assertThat(reference.getEntryServiceName(), is("/portal/")); assertThat(reference.getNetworkAddress(), is("127.0.0.1:8080")); assertThat(reference.getParentSpanId(), is(3)); - assertThat(traceSegmentObject.getApplicationId(), is(1)); + assertThat(traceSegmentObject.getServiceId(), is(1)); assertThat(traceSegmentObject.getSpans(1).getRefsCount(), is(1)); assertThat(traceSegmentObject.getSpansCount(), is(2)); - SpanObject actualSpan = traceSegmentObject.getSpans(1); + SpanObjectV2 actualSpan = traceSegmentObject.getSpans(1); assertThat(actualSpan.getComponentId(), is(3)); assertThat(actualSpan.getComponent(), is("")); @@ -277,7 +276,7 @@ public class ContextManagerTest { assertThat(actualSpan.getSpanId(), is(0)); assertThat(actualSpan.getSpanType(), is(SpanType.Entry)); - SpanObject exitSpanObject = traceSegmentObject.getSpans(0); + SpanObjectV2 exitSpanObject = traceSegmentObject.getSpans(0); assertThat(exitSpanObject.getComponentId(), is(2)); assertThat(exitSpanObject.getComponent(), is("")); assertThat(exitSpanObject.getSpanType(), is(SpanType.Exit)); @@ -287,9 +286,9 @@ public class ContextManagerTest { assertThat(exitSpanObject.getSpanId(), is(1)); assertThat(exitSpanObject.getLogsCount(), is(1)); - LogMessage logMessage = exitSpanObject.getLogs(0); + Log logMessage = exitSpanObject.getLogs(0); assertThat(logMessage.getDataCount(), is(4)); - List values = logMessage.getDataList(); + List values = logMessage.getDataList(); assertThat(values.get(0).getValue(), is("error")); assertThat(values.get(1).getValue(), is(RuntimeException.class.getName())); diff --git a/apm-sniffer/apm-sdk-plugin/activemq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/activemq/ActiveMQConsumerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/activemq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/activemq/ActiveMQConsumerInterceptorTest.java index 38e7decacf..66d2a6221e 100644 --- a/apm-sniffer/apm-sdk-plugin/activemq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/activemq/ActiveMQConsumerInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/activemq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/activemq/ActiveMQConsumerInterceptorTest.java @@ -23,7 +23,6 @@ import org.apache.activemq.command.Message; import org.apache.activemq.command.MessageDispatch; import org.apache.activemq.command.Response; import org.apache.activemq.state.CommandVisitor; -import org.apache.skywalking.apm.agent.core.conf.Config; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.apache.skywalking.apm.agent.test.tools.AgentServiceRule; @@ -126,7 +125,6 @@ public class ActiveMQConsumerInterceptorTest { @Before public void setUp() throws IOException { - Config.Agent.ACTIVE_V1_HEADER = true; activeMQConsumerInterceptor = new ActiveMQConsumerInterceptor(); messageDispatch = new MessageDispatch(); @@ -134,17 +132,11 @@ public class ActiveMQConsumerInterceptorTest { des.setPhysicalName("test"); messageDispatch.setDestination(des); Message msg = new Msg(); - msg.setProperty("sw3", ""); messageDispatch.setMessage(msg); arguments = new Object[] {messageDispatch}; argumentType = null; } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testConsumerWithoutMessage() throws Throwable { activeMQConsumerInterceptor.beforeMethod(enhancedInstance, null, arguments, null, null); diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java index f31ed73162..8161d92869 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-2.7.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java @@ -27,7 +27,7 @@ import java.util.List; import org.apache.skywalking.apm.agent.core.boot.ServiceManager; import org.apache.skywalking.apm.agent.core.conf.Config; import org.apache.skywalking.apm.agent.core.context.ContextManagerExtendService; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.LogDataEntity; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; @@ -45,7 +45,6 @@ import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner; import org.apache.skywalking.apm.plugin.asf.dubbo.DubboInterceptor; import org.hamcrest.CoreMatchers; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -95,7 +94,6 @@ public class DubboInterceptorTest { @Before public void setUp() throws Exception { - Config.Agent.ACTIVE_V1_HEADER = true; dubboInterceptor = new DubboInterceptor(); PowerMockito.mockStatic(RpcContext.class); @@ -111,11 +109,6 @@ public class DubboInterceptorTest { Config.Agent.SERVICE_NAME = "DubboTestCases-APP"; } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testServiceFromPlugin() { PluginBootService service = ServiceManager.INSTANCE.findService(PluginBootService.class); @@ -167,7 +160,7 @@ public class DubboInterceptorTest { @Test public void testProviderWithAttachment() throws Throwable { when(rpcContext.isConsumerSide()).thenReturn(false); - when(rpcContext.getAttachment(SW3CarrierItem.HEADER_NAME)).thenReturn("1.323.4433|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(rpcContext.getAttachment(SW6CarrierItem.HEADER_NAME)).thenReturn("1-MC4wLjA=-MS4zMjMuNDQzMw==-3-1-1-IzE5Mi4xNjguMS44IDoxODAwMg==-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); dubboInterceptor.beforeMethod(enhancedInstance, null, allArguments, argumentTypes, methodInterceptResult); dubboInterceptor.afterMethod(enhancedInstance, null, allArguments, argumentTypes, result); diff --git a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java index c9e644b09f..5159c83bb8 100644 --- a/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/dubbo-plugin/src/test/java/org/apache/skywalking/apm/plugin/dubbo/DubboInterceptorTest.java @@ -27,7 +27,7 @@ import java.util.List; import org.apache.skywalking.apm.agent.core.boot.ServiceManager; import org.apache.skywalking.apm.agent.core.conf.Config; import org.apache.skywalking.apm.agent.core.context.ContextManagerExtendService; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.LogDataEntity; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; @@ -44,7 +44,6 @@ import org.apache.skywalking.apm.agent.test.tools.SegmentStorage; import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner; import org.hamcrest.CoreMatchers; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -94,7 +93,6 @@ public class DubboInterceptorTest { @Before public void setUp() throws Exception { - Config.Agent.ACTIVE_V1_HEADER = true; dubboInterceptor = new DubboInterceptor(); PowerMockito.mockStatic(RpcContext.class); @@ -110,11 +108,6 @@ public class DubboInterceptorTest { Config.Agent.SERVICE_NAME = "DubboTestCases-APP"; } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testServiceFromPlugin() { PluginBootService service = ServiceManager.INSTANCE.findService(PluginBootService.class); @@ -166,7 +159,7 @@ public class DubboInterceptorTest { @Test public void testProviderWithAttachment() throws Throwable { when(rpcContext.isConsumerSide()).thenReturn(false); - when(rpcContext.getAttachment(SW3CarrierItem.HEADER_NAME)).thenReturn("1.323.4433|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(rpcContext.getAttachment(SW6CarrierItem.HEADER_NAME)).thenReturn("1-MC4wLjA=-MS4zMjMuNDQzMw==-3-1-1-IzE5Mi4xNjguMS44IDoxODAwMg==-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); dubboInterceptor.beforeMethod(enhancedInstance, null, allArguments, argumentTypes, methodInterceptResult); dubboInterceptor.afterMethod(enhancedInstance, null, allArguments, argumentTypes, result); diff --git a/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/jetty/v9/server/HandleInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/jetty/v9/server/HandleInterceptorTest.java index f956ef92cb..b69d65f0ff 100644 --- a/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/jetty/v9/server/HandleInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/jetty-plugin/jetty-server-9.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/jetty/v9/server/HandleInterceptorTest.java @@ -19,8 +19,7 @@ package org.apache.skywalking.apm.plugin.jetty.v9.server; import java.util.List; -import org.apache.skywalking.apm.agent.core.conf.Config; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.LogDataEntity; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; @@ -45,7 +44,6 @@ import org.eclipse.jetty.server.HttpInput; import org.eclipse.jetty.server.HttpTransport; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.server.Response; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -86,7 +84,6 @@ public class HandleInterceptorTest { @Before public void setUp() throws Exception { - Config.Agent.ACTIVE_V1_HEADER = true; jettyInvokeInterceptor = new HandleInterceptor(); when(request.getRequestURI()).thenReturn("/test/testRequestURL"); when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/test/testRequestURL")); @@ -98,11 +95,6 @@ public class HandleInterceptorTest { } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testWithoutSerializedContextData() throws Throwable { jettyInvokeInterceptor.beforeMethod(service, null, arguments, argumentType, methodInterceptResult); @@ -116,7 +108,7 @@ public class HandleInterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW6CarrierItem.HEADER_NAME)).thenReturn("1-MC4wLjA=-MS4yMzQuMTEx-3-1-1-IzE5Mi4xNjguMS44OjE4MDAy-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); jettyInvokeInterceptor.beforeMethod(service, null, arguments, argumentType, methodInterceptResult); jettyInvokeInterceptor.afterMethod(service, null, arguments, argumentType, null); diff --git a/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/test/java/org/apache/skywalking/apm/plugin/kafka/KafkaConsumerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/test/java/org/apache/skywalking/apm/plugin/kafka/KafkaConsumerInterceptorTest.java index aa3543b354..30511654b3 100644 --- a/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/test/java/org/apache/skywalking/apm/plugin/kafka/KafkaConsumerInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/kafka-plugin/src/test/java/org/apache/skywalking/apm/plugin/kafka/KafkaConsumerInterceptorTest.java @@ -20,7 +20,7 @@ package org.apache.skywalking.apm.plugin.kafka; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.common.TopicPartition; -import org.apache.skywalking.apm.agent.core.conf.Config; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; @@ -30,7 +30,6 @@ import org.apache.skywalking.apm.agent.test.helper.SegmentHelper; import org.apache.skywalking.apm.agent.test.helper.SegmentRefHelper; import org.apache.skywalking.apm.agent.test.tools.*; import org.hamcrest.MatcherAssert; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -75,7 +74,6 @@ public class KafkaConsumerInterceptorTest { @Before public void setUp() { - Config.Agent.ACTIVE_V1_HEADER = true; consumerInterceptor = new KafkaConsumerInterceptor(); consumerEnhanceRequiredInfo = new ConsumerEnhanceRequiredInfo(); @@ -93,16 +91,11 @@ public class KafkaConsumerInterceptorTest { TopicPartition topicPartition = new TopicPartition("test", 1); List records = new ArrayList(); ConsumerRecord consumerRecord = new ConsumerRecord("test", 1, 0, "1", "1"); - consumerRecord.headers().add("sw3", "1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#testEntrySpan|#AQA*#AQA*Et0We0tQNQA*".getBytes()); + consumerRecord.headers().add(SW6CarrierItem.HEADER_NAME, "1-MC4wLjA=-MS4yMzQuMTEx-3-1-1-IzE5Mi4xNjguMS44OjE4MDAy-Iy9wb3J0YWwv-I3Rlc3RFbnRyeVNwYW4=".getBytes()); records.add(consumerRecord); messages.put(topicPartition, records); } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testConsumerWithoutMessage() throws Throwable { consumerInterceptor.beforeMethod(consumerInstance, null, new Object[0], new Class[0], null); diff --git a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/apache/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/apache/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java index 3ddae1d454..2397851f5f 100644 --- a/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/apache/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/motan-plugin/src/test/java/org/apache/skywalking/apm/plugin/motan/MotanProviderInterceptorTest.java @@ -24,8 +24,7 @@ import com.weibo.api.motan.rpc.Response; import com.weibo.api.motan.rpc.URL; import java.util.HashMap; import java.util.List; -import org.apache.skywalking.apm.agent.core.conf.Config; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; @@ -38,7 +37,6 @@ import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.SpanAssert; import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; import org.hamcrest.MatcherAssert; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -83,7 +81,6 @@ public class MotanProviderInterceptorTest { @Before public void setUp() { - Config.Agent.ACTIVE_V1_HEADER = true; invokeInterceptor = new MotanProviderInterceptor(); url = URL.valueOf("motan://127.0.0.1:34000/org.apache.skywalking.apm.test.TestService"); @@ -96,11 +93,6 @@ public class MotanProviderInterceptorTest { } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testInvokerWithoutRefSegment() throws Throwable { invokeInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, null); @@ -117,7 +109,7 @@ public class MotanProviderInterceptorTest { @Test public void testInvokerWithRefSegment() throws Throwable { HashMap attachments = new HashMap(); - attachments.put(SW3CarrierItem.HEADER_NAME, "1.123.456|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + attachments.put(SW6CarrierItem.HEADER_NAME, "1-MC4wLjA=-MS4xMjMuNDU2-3-1-1-IzE5Mi4xNjguMS44OjE4MDAy-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); when(request.getAttachments()).thenReturn(attachments); invokeInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, null); diff --git a/apm-sniffer/apm-sdk-plugin/pulsar-plugin/src/test/java/org/apache/skywalking/apm/plugin/pulsar/PulsarConsumerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/pulsar-plugin/src/test/java/org/apache/skywalking/apm/plugin/pulsar/PulsarConsumerInterceptorTest.java index 7629f5cac3..f2ed5109b7 100644 --- a/apm-sniffer/apm-sdk-plugin/pulsar-plugin/src/test/java/org/apache/skywalking/apm/plugin/pulsar/PulsarConsumerInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/pulsar-plugin/src/test/java/org/apache/skywalking/apm/plugin/pulsar/PulsarConsumerInterceptorTest.java @@ -19,7 +19,7 @@ package org.apache.skywalking.apm.plugin.pulsar; import org.apache.pulsar.common.api.proto.PulsarApi; -import org.apache.skywalking.apm.agent.core.conf.Config; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; @@ -33,7 +33,6 @@ import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.SpanAssert; import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner; import org.hamcrest.MatcherAssert; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -75,7 +74,6 @@ public class PulsarConsumerInterceptorTest { @Before public void setUp() { - Config.Agent.ACTIVE_V1_HEADER = true; consumerInterceptor = new PulsarConsumerInterceptor(); consumerEnhanceRequiredInfo = new ConsumerEnhanceRequiredInfo(); @@ -84,13 +82,8 @@ public class PulsarConsumerInterceptorTest { consumerEnhanceRequiredInfo.setSubscriptionName("my-sub"); msg = new MockMessage(); msg.getMessageBuilder().addProperties(PulsarApi.KeyValue.newBuilder() - .setKey("sw3") - .setValue("1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#testEntrySpan|#AQA*#AQA*Et0We0tQNQA*")); - } - - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; + .setKey(SW6CarrierItem.HEADER_NAME) + .setValue("1-MC4wLjA=-MS4yMzQuMTEx-3-1-1-IzE5Mi4xNjguMS44OjE4MDAy-Iy9wb3J0YWwv-I3Rlc3RFbnRyeVNwYW4=")); } @Test diff --git a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java index 4a54d2d9f2..ee86be9f7b 100644 --- a/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/rabbitmq-5.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/rabbitmq/RabbitMQConsumerInterceptorTest.java @@ -20,6 +20,7 @@ package org.apache.skywalking.apm.plugin.rabbitmq; import com.rabbitmq.client.AMQP; import com.rabbitmq.client.Envelope; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.apache.skywalking.apm.agent.test.tools.AgentServiceRule; @@ -72,7 +73,7 @@ public class RabbitMQConsumerInterceptorTest { public void TestRabbitMQConsumerInterceptor() throws Throwable { Envelope envelope = new Envelope(1111,false,"","rabbitmq-test"); Map headers = new HashMap(); - headers.put("sw6","1-MS4xLjE1NDM5NzU1OTEwMTQwMDAx-MS4xLjE1NDM5NzU1OTA5OTcwMDAw-0-1-1-IzEyNy4wLjAuMTo1Mjcy-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI=-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI="); + headers.put(SW6CarrierItem.HEADER_NAME,"1-MS4xLjE1NDM5NzU1OTEwMTQwMDAx-MS4xLjE1NDM5NzU1OTA5OTcwMDAw-0-1-1-IzEyNy4wLjAuMTo1Mjcy-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI=-I1JhYmJpdE1RL1RvcGljL1F1ZXVlL3JhYmJpdG1xLXRlc3QvUHJvZHVjZXI="); AMQP.BasicProperties.Builder propsBuilder = new AMQP.BasicProperties.Builder(); Object[] arguments = new Object[] {0,envelope,propsBuilder.headers(headers).build()}; diff --git a/apm-sniffer/apm-sdk-plugin/resteasy-plugin/resteasy-server-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/resteasy/v3/server/SynchronousDispatcherInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/resteasy-plugin/resteasy-server-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/resteasy/v3/server/SynchronousDispatcherInterceptorTest.java index e583e0f4f7..79a65329f3 100644 --- a/apm-sniffer/apm-sdk-plugin/resteasy-plugin/resteasy-server-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/resteasy/v3/server/SynchronousDispatcherInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/resteasy-plugin/resteasy-server-3.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/resteasy/v3/server/SynchronousDispatcherInterceptorTest.java @@ -18,8 +18,6 @@ package org.apache.skywalking.apm.plugin.resteasy.v3.server; -import org.apache.skywalking.apm.agent.core.conf.Config; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.LogDataEntity; @@ -136,28 +134,6 @@ public class SynchronousDispatcherInterceptorTest { AssertTools.assertTraceSegmentRef(traceSegment.getRefs().get(0)); } - @Test - public void testWithSW3SerializedContextData() throws Throwable { - Config.Agent.ACTIVE_V1_HEADER = true; - Config.Agent.ACTIVE_V2_HEADER = false; - MultivaluedMapImpl multivaluedMap = new MultivaluedMapImpl(); - multivaluedMap.putSingle(SW3CarrierItem.HEADER_NAME, "1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); - when(request.getHttpHeaders()).thenReturn(new ResteasyHttpHeaders(multivaluedMap)); - - synchronousDispatcherInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); - synchronousDispatcherInterceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); - - Config.Agent.ACTIVE_V1_HEADER = false; - Config.Agent.ACTIVE_V2_HEADER = true; - - assertThat(segmentStorage.getTraceSegments().size(), is(1)); - TraceSegment traceSegment = segmentStorage.getTraceSegments().get(0); - List spans = SegmentHelper.getSpans(traceSegment); - - AssertTools.assertHttpSpan(spans.get(0)); - AssertTools.assertTraceSegmentRef(traceSegment.getRefs().get(0)); - } - @Test public void testWithOccurException() throws Throwable { synchronousDispatcherInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); diff --git a/apm-sniffer/apm-sdk-plugin/sofarpc-plugin/src/test/java/org/apache/skywalking/apm/plugin/sofarpc/SofaRpcProviderInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/sofarpc-plugin/src/test/java/org/apache/skywalking/apm/plugin/sofarpc/SofaRpcProviderInterceptorTest.java index 064c17575e..40fec03772 100644 --- a/apm-sniffer/apm-sdk-plugin/sofarpc-plugin/src/test/java/org/apache/skywalking/apm/plugin/sofarpc/SofaRpcProviderInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/sofarpc-plugin/src/test/java/org/apache/skywalking/apm/plugin/sofarpc/SofaRpcProviderInterceptorTest.java @@ -25,7 +25,7 @@ import com.alipay.sofa.rpc.core.response.SofaResponse; import com.alipay.sofa.rpc.filter.ProviderInvoker; import java.util.List; import org.apache.skywalking.apm.agent.core.conf.Config; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; @@ -41,7 +41,6 @@ import org.apache.skywalking.apm.agent.test.tools.SegmentStorage; import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner; import org.hamcrest.CoreMatchers; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -92,7 +91,6 @@ public class SofaRpcProviderInterceptorTest { @Before public void setUp() throws Exception { - Config.Agent.ACTIVE_V1_HEADER = true; sofaRpcProviderInterceptor = new SofaRpcProviderInterceptor(); PowerMockito.mockStatic(RpcInternalContext.class); @@ -112,16 +110,11 @@ public class SofaRpcProviderInterceptorTest { Config.Agent.SERVICE_NAME = "SOFARPC-TestCases-APP"; } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testProviderWithAttachment() throws Throwable { when(rpcContext.isConsumerSide()).thenReturn(false); - when(sofaRequest.getRequestProp(SKYWALKING_PREFIX + SW3CarrierItem.HEADER_NAME)).thenReturn( - "1.323.4433|3|1|1|#192.168.1.8 :18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(sofaRequest.getRequestProp(SKYWALKING_PREFIX + SW6CarrierItem.HEADER_NAME)).thenReturn( + "1-MC4wLjA=-MS4zMjMuNDQzMw==-3-1-1-IzE5Mi4xNjguMS44IDoxODAwMg==-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); sofaRpcProviderInterceptor.beforeMethod(enhancedInstance, null, allArguments, argumentTypes, methodInterceptResult); sofaRpcProviderInterceptor.afterMethod(enhancedInstance, null, allArguments, argumentTypes, sofaResponse); diff --git a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java index 6a07a19c1c..ce5b5a1b95 100644 --- a/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/struts2-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/struts2/Struts2InterceptorTest.java @@ -23,9 +23,8 @@ import com.opensymphony.xwork2.ActionContext; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import org.apache.skywalking.apm.agent.core.conf.Config; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.struts2.StrutsStatics; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -34,7 +33,6 @@ import org.mockito.Mock; import org.powermock.core.classloader.annotations.PrepareForTest; import org.powermock.modules.junit4.PowerMockRunner; import org.powermock.modules.junit4.PowerMockRunnerDelegate; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.LogDataEntity; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; @@ -94,7 +92,6 @@ public class Struts2InterceptorTest { @Before public void setUp() throws Exception { - Config.Agent.ACTIVE_V1_HEADER = true; struts2Interceptor = new Struts2Interceptor(); when(request.getRequestURI()).thenReturn("/test/testRequestURL"); when(request.getRequestURL()).thenReturn(new StringBuffer("http://localhost:8080/test/testRequestURL")); @@ -113,11 +110,6 @@ public class Struts2InterceptorTest { exceptionArgumentType = new Class[] {request.getClass(), response.getClass(), new RuntimeException().getClass()}; } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testWithoutSerializedContextData() throws Throwable { struts2Interceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); @@ -131,7 +123,7 @@ public class Struts2InterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW6CarrierItem.HEADER_NAME)).thenReturn("1-MC4wLjA=-MS4yMzQuMTEx-3-1-1-IzE5Mi4xNjguMS44OjE4MDAy-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); struts2Interceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); struts2Interceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); diff --git a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java index 3ca932199e..7847f71d5c 100644 --- a/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/tomcat-7.x-8.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/tomcat78x/TomcatInvokeInterceptorTest.java @@ -22,8 +22,7 @@ import java.util.List; import javax.servlet.http.HttpServletResponse; import org.apache.catalina.connector.Request; -import org.apache.skywalking.apm.agent.core.conf.Config; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; @@ -32,7 +31,6 @@ import org.apache.skywalking.apm.agent.test.helper.SpanHelper; import org.apache.skywalking.apm.agent.test.tools.SegmentStorage; import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.SpanAssert; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -84,8 +82,6 @@ public class TomcatInvokeInterceptorTest { @Before public void setUp() throws Exception { - Config.Agent.ACTIVE_V1_HEADER = true; - tomcatInvokeInterceptor = new TomcatInvokeInterceptor(); tomcatExceptionInterceptor = new TomcatExceptionInterceptor(); when(request.getRequestURI()).thenReturn("/test/testRequestURL"); @@ -98,11 +94,6 @@ public class TomcatInvokeInterceptorTest { exceptionArgumentType = new Class[] {request.getClass(), response.getClass(), new RuntimeException().getClass()}; } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testWithoutSerializedContextData() throws Throwable { tomcatInvokeInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); @@ -116,7 +107,7 @@ public class TomcatInvokeInterceptorTest { @Test public void testWithSerializedContextData() throws Throwable { - when(request.getHeader(SW3CarrierItem.HEADER_NAME)).thenReturn("1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + when(request.getHeader(SW6CarrierItem.HEADER_NAME)).thenReturn("1-MC4wLjA=-MS4yMzQuMTEx-3-1-1-IzE5Mi4xNjguMS44OjE4MDAy-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); tomcatInvokeInterceptor.beforeMethod(enhancedInstance, null, arguments, argumentType, methodInterceptResult); tomcatInvokeInterceptor.afterMethod(enhancedInstance, null, arguments, argumentType, null); diff --git a/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/RootHandlerInterceptorTest.java b/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/RootHandlerInterceptorTest.java index 6ce11dbf8f..e319083b48 100644 --- a/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/RootHandlerInterceptorTest.java +++ b/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/RootHandlerInterceptorTest.java @@ -22,7 +22,6 @@ import io.undertow.Undertow; import io.undertow.server.HttpHandler; import io.undertow.server.RoutingHandler; import io.undertow.util.Methods; -import org.apache.skywalking.apm.agent.core.conf.Config; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.EnhancedInstance; import org.apache.skywalking.apm.agent.core.plugin.interceptor.enhance.MethodInterceptResult; import org.apache.skywalking.apm.agent.test.tools.AgentServiceRule; @@ -30,7 +29,6 @@ import org.apache.skywalking.apm.agent.test.tools.SegmentStorage; import org.apache.skywalking.apm.agent.test.tools.SegmentStoragePoint; import org.apache.skywalking.apm.agent.test.tools.TracingSegmentRunner; import org.apache.skywalking.apm.plugin.undertow.v2x.handler.TracingHandler; -import org.junit.After; import org.junit.Before; import org.junit.Rule; import org.junit.Test; @@ -71,15 +69,9 @@ public class RootHandlerInterceptorTest { @Before public void setUp() throws Exception { - Config.Agent.ACTIVE_V1_HEADER = true; rootHandlerInterceptor = new RootHandlerInterceptor(); } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testBindTracingHandler() throws Throwable { Object[] arguments = new Object[]{httpHandler}; diff --git a/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/TracingHandlerTest.java b/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/TracingHandlerTest.java index 6189156414..9314eb7c4f 100644 --- a/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/TracingHandlerTest.java +++ b/apm-sniffer/apm-sdk-plugin/undertow-plugins/undertow-2.x-plugin/src/test/java/org/apache/skywalking/apm/plugin/undertow/v2x/TracingHandlerTest.java @@ -24,8 +24,7 @@ import io.undertow.util.HeaderMap; import io.undertow.util.HttpString; import io.undertow.util.Methods; import io.undertow.util.StatusCodes; -import org.apache.skywalking.apm.agent.core.conf.Config; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.SpanLayer; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; @@ -102,10 +101,9 @@ public class TracingHandlerTest { @Test public void testWithSerializedContextData() throws Throwable { - Config.Agent.ACTIVE_V1_HEADER = true; TracingHandler handler = new TracingHandler(httpHandler); HttpServerExchange exchange = buildExchange(); - exchange.getRequestHeaders().put(HttpString.tryFromString(SW3CarrierItem.HEADER_NAME), "1.234.111|3|1|1|#192.168.1.8:18002|#/portal/|#/testEntrySpan|#AQA*#AQA*Et0We0tQNQA*"); + exchange.getRequestHeaders().put(HttpString.tryFromString(SW6CarrierItem.HEADER_NAME), "1-MC4wLjA=-MS4yMzQuMTEx-3-1-1-IzE5Mi4xNjguMS44OjE4MDAy-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); handler.handleRequest(exchange); exchange.endExchange(); @@ -115,7 +113,6 @@ public class TracingHandlerTest { assertHttpSpan(spans.get(0)); assertTraceSegmentRef(traceSegment.getRefs().get(0)); - Config.Agent.ACTIVE_V1_HEADER = false; } private HttpServerExchange buildExchange() { diff --git a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java index fb9d454cf1..37b1551673 100644 --- a/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java +++ b/apm-sniffer/apm-toolkit-activation/apm-toolkit-opentracing-activation/src/test/java/org/apache/skywalking/apm/toolkit/activation/opentracing/SkywalkingSpanActivationTest.java @@ -26,9 +26,10 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import org.apache.skywalking.apm.agent.core.conf.Config; + +import org.apache.skywalking.apm.agent.core.base64.Base64; import org.apache.skywalking.apm.agent.core.context.ContextSnapshot; -import org.apache.skywalking.apm.agent.core.context.SW3CarrierItem; +import org.apache.skywalking.apm.agent.core.context.SW6CarrierItem; import org.apache.skywalking.apm.agent.core.context.ids.ID; import org.apache.skywalking.apm.agent.core.context.trace.AbstractTracingSpan; import org.apache.skywalking.apm.agent.core.context.trace.TraceSegment; @@ -53,7 +54,6 @@ import org.apache.skywalking.apm.toolkit.opentracing.SkywalkingContinuation; import org.apache.skywalking.apm.toolkit.opentracing.SkywalkingSpan; import org.apache.skywalking.apm.toolkit.opentracing.SkywalkingSpanBuilder; import org.apache.skywalking.apm.toolkit.opentracing.TextMapContext; -import org.junit.After; import org.junit.Assert; import org.junit.Before; import org.junit.Rule; @@ -105,7 +105,6 @@ public class SkywalkingSpanActivationTest { @Before public void setUp() { - Config.Agent.ACTIVE_V1_HEADER = true; spanBuilder = new SkywalkingSpanBuilder("test").withTag(Tags.COMPONENT.getKey(), "test"); constructorWithSpanBuilderInterceptor = new ConstructorWithSpanBuilderInterceptor(); spanLogInterceptor = new SpanLogInterceptor(); @@ -125,11 +124,6 @@ public class SkywalkingSpanActivationTest { activateInterceptor = new ActivateInterceptor(); } - @After - public void clear() { - Config.Agent.ACTIVE_V1_HEADER = false; - } - @Test public void testCreateLocalSpan() throws Throwable { startSpan(); @@ -214,10 +208,10 @@ public class SkywalkingSpanActivationTest { injectInterceptor.afterMethod(enhancedInstance, null, new Object[] {new TextMapContext(), Format.Builtin.TEXT_MAP, carrier}, null, null); - String[] parts = values.get(SW3CarrierItem.HEADER_NAME).split("\\|", 8); - Assert.assertEquals("0", parts[1]); - Assert.assertEquals("#127.0.0.1:8080", parts[4]); - Assert.assertTrue(new ID(parts[7]).isValid()); + String[] parts = values.get(SW6CarrierItem.HEADER_NAME).split("-", 9); + Assert.assertEquals("0", parts[3]); + Assert.assertEquals(Base64.encode("#127.0.0.1:8080"), parts[6]); + Assert.assertTrue(new ID(Base64.decode2UTFString(parts[1])).isValid()); stopSpan(); } @@ -240,7 +234,7 @@ public class SkywalkingSpanActivationTest { }; - values.put(SW3CarrierItem.HEADER_NAME, "1.343.222|3|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|434.12.12123"); + values.put(SW6CarrierItem.HEADER_NAME, "1-NDM0LjEyLjEyMTIz-MS4zNDMuMjIy-3-1-1-IzEyNy4wLjAuMTo4MDgw-Iy9wb3J0YWwv-Iy90ZXN0RW50cnlTcGFu"); extractInterceptor.afterMethod(enhancedInstance, null, new Object[] {Format.Builtin.TEXT_MAP, carrier}, new Class[] {}, null); @@ -278,7 +272,7 @@ public class SkywalkingSpanActivationTest { }; - values.put(SW3CarrierItem.HEADER_NAME, "aaaaaaaa|3|#192.168.1.8:18002|#/portal/|#/testEntrySpan|1.234.444"); + values.put(SW6CarrierItem.HEADER_NAME, "aaaaaaaa|3|#192.168.1.8:18002|#/portal/|#/testEntrySpan|1.234.444"); extractInterceptor.afterMethod(enhancedInstance, null, new Object[] {Format.Builtin.TEXT_MAP, carrier}, new Class[] {}, null); diff --git a/docs/en/protocols/README.md b/docs/en/protocols/README.md index b9bc32a5cc..dda0c8e8b7 100644 --- a/docs/en/protocols/README.md +++ b/docs/en/protocols/README.md @@ -28,15 +28,11 @@ with this specific request. 1. **Trace Data Protocol** is out of wire data, agent/SDK uses this to send traces and metrics to skywalking or other compatible backend. -Header protocol have two formats for compatible. Using v2 in default. -* [Cross Process Propagation Headers Protocol v2](Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md) is the new protocol for -in-wire context propagation, started in 6.0.0-beta release. It will replace the old **SW3** protocol in the future, now both of them are supported. -* [Cross Process Propagation Headers Protocol v1](Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md) is for in-wire propagation. -By following this protocol, the trace segments in different processes could be linked. - -Since SkyWalking v6.0.0-beta, SkyWalking agent and backend are using Trace Data Protocol v2, and v1 is still supported in backend. -* [SkyWalking Trace Data Protocol v2](Trace-Data-Protocol-v2.md) define the communication way and format between agent and backend -* [SkyWalking Trace Data Protocol v1](Trace-Data-Protocol-v1.md). This protocol is used in old version. Still supported. +[Cross Process Propagation Headers Protocol v2](Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md) is the new protocol for +in-wire context propagation, started in 6.0.0-beta release, older protocol is no longer supported. + +Since SkyWalking v6.0.0-beta, SkyWalking agent and backend are using Trace Data Protocol v2. +[SkyWalking Trace Data Protocol v2](Trace-Data-Protocol-v2.md) define the communication way and format between agent and backend. ### Service Mesh probe protocol diff --git a/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md b/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md deleted file mode 100644 index 6388f8994c..0000000000 --- a/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md +++ /dev/null @@ -1,62 +0,0 @@ -# Skywalking Cross Process Propagation Headers Protocol -* Version 1.0 - -SkyWalking is more likely an APM system, rather than common distributed tracing system. -The Headers is much more complex than them in order to improving analysis performance of collector. -You can find many similar mechanism in other commercial APM system.(Some even much more complex than us) - -# Header Item -* Header Name: `sw3` -* Header Value: Split by `|`, the parts are following. - -_The header protocol came from SkyWalking 3, back to 2017. So sw3 header name keeps now._ - -## Values -* Trace Segment Id - -The trace segment id is the unique id for the part of the distributed trace. Each id is only used in a single thread. The id includes three parts(Long), e.g. `"1.2343.234234234` - 1) The first one represents application instance id, which assigned by collector. (most likely just an integer value, would be helpful in protobuf) - 2) The second one represents thread id. (In Java most likely just an integer value, would be helpful in protobuf) - 3) The third one also has two parts - 1) A timestamp, measured in milliseconds - 2) A seq, in current thread, between 0(included) and 9999(included) - -If you are using other language, you can generate your own id, but make sure it is unique and combined by three longs. - -* Span Id - -An integer, unique in a trace segment. Start with 0; - -* Parent Application Instance - -The instance id of the parent node, e.g. for a server of RPC, this id is from the client application instance id. - -* Entry Application Instance - -The instance id of the entry application. e.g. A distributed trace `A->B->C`, the id is from `A`. - -* Peer Host - -The peer-host/peer-id from client side. e.g. client uses `182.14.39.1:9080` to access server, this ip:port is the peer host. - -_This value can use exchange/compress collector service to get the id(integer) to represent the string. If you use the string, it must start with `#`, others use integer directly._ - -* Entry Span Operation Name of First Trace Segment - -The operation name/id of entry span propagates from `Entry Application Instance`. - -_This value can use exchange/compress collector service to get the id(integer) to represent the string. If you use the string, it must start with `#`, others use integer directly._ - -* Entry Span Operation Name of Parent Trace Segment - -The operation name/id of entry span propagates from `Parent Application Instance`. - -_This value can use exchange/compress collector service to get the id(integer) to represent the string. If you use the string, it must start with `#`, others use integer directly._ - -* Distributed Trace Id - -The distributed trace id of the whole trace, if in a batch process, it comes from the trace of first batch producer. The rule is as same as `Trace Segment Id` with three Longs. - -### Sample value -1. `1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|#/testEntrySpan|1.2343.234234234` -1. `1.2343.234234234|1|1|1|#127.0.0.1:8080|#/portal/|1038|1.2343.234234234` \ No newline at end of file diff --git a/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md b/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md index fa4b4a73b0..de40c4ce93 100644 --- a/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md +++ b/docs/en/protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md @@ -1,9 +1,12 @@ # SkyWalking Cross Process Propagation Headers Protocol * Version 2.0 +SkyWalking is more likely an APM system, rather than common distributed tracing system. +The Headers is much more complex than them in order to improving analysis performance of collector. +You can find many similar mechanism in other commercial APM system. (Some are even much more complex than our's) + ## Abstract -SkyWalking Cross Process Propagation Headers Protocol v2 is also named as sw6 protocol. This protocol keeps the same purposes -of [v1(a.k.a. sw3)](Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md), which is keep context propagation works. +SkyWalking Cross Process Propagation Headers Protocol v2 is also named as sw6 protocol, which is for context propagation. ## Differences from v1 The major differences of v2 and v1, comes from SkyWalking's evolution, including diff --git a/docs/en/protocols/Trace-Data-Protocol-v1.md b/docs/en/protocols/Trace-Data-Protocol-v1.md deleted file mode 100644 index e6875122fa..0000000000 --- a/docs/en/protocols/Trace-Data-Protocol-v1.md +++ /dev/null @@ -1,213 +0,0 @@ -# Trace Data Protocol -Trace Data Protocol describes the data format between SkyWalking agent/sniffer and backend. - -## Abstract -This protocol includes the downstream and upstream data format. Other languages agents/SDKs can use this protocol to -uplink data to the SkyWalking backend. - -- Other services, includes Register, Trace, etc., provided by HTTP/JSON and gRPC both. - -### Version -v1 - -#### gRPC proto files -[gRPC proto files](https://github.com/apache/skywalking-data-collect-protocol/tree/v2.0) - - -## Trace Segment Service -[gRPC service define](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/TraceSegmentService.proto) - -- UniqueId represents segmentId and globalTraceId. It have 3 parts(Longs), 1) applicationInstanceId, 2) ThreadId, 3) Timestamp + 10000 + seq(seq is in [0, 100000) ) -- Span data please refs to [Plugin Development Guide](../guides/Java-Plugin-Development-Guide.md) -- Id and name both exist, please use id if possible. - - operationNameId/endpointName - - networkAddress/networkAddressId - - entryServiceName/entryServiceId - - parentServiceName/parentServiceId - - peerId/peer -- componentIds are defined in backend, [here](../../../apm-protocol/apm-network/src/main/java/org/apache/skywalking/apm/network/trace/component/ComponentsDefine.java) - -HTTP format: - -Input: -``` -[ - { - "gt": [[230150, 185809, 24040000]], - "sg": { //TraceSegmentObject - "ts": [137150, 185809, 48780000], - "ai": 2, //serviceId - "ii": 3, //applicationInstanceId - "ss": [ //SpanObject - { - "si": 0, //spanId - "tv": 0, //SpanType - "lv": 2, //SpanLayer - "ps": -1, //parentSpanId - "st": 1501858094726, //startTime - "et": 1501858096804, //endTime - "ci": 3, //componentId - "cn": "", //component - "oi": 0, //operationNameId - "on": "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()", //endpointName - "pi": 0, //peerId - "pn": "", //peer - "ie": false, //isError - "rs": [ //TraceSegmentReference - { - "pts": [230150, 185809, 24040000], //parentTraceSegmentId - "pii": 2, //parentServiceInstanceId - "psp": 1, //parentSpanId - "psi": 0, //parentServiceId - "psn": "/dubbox-case/case/dubbox-rest", //parentServiceName - "ni": 0, //networkAddressId - "nn": "172.25.0.4:20880", //networkAddress - "eii": 2, //entryServiceInstanceId - "esi": 0, //entryServiceId - "esn": "/dubbox-case/case/dubbox-rest", //entryServiceName - "rv": 0 //RefTypeValue - } - ], - "to": [ //KeyWithStringValue - { - "k": "url", //key - "v": "rest://172.25.0.4:20880/org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()" //value - }, - { - "k": "http.method", - "v": "GET" - } - ], - "lo": [{ - "ti": 1501858094726, - "ld": [{ - "k": "NullPointException", - "v": "Error Stack" - }] - }] - }, - { - "si": 1, - "tv": 1, - "lv": 1, - "ps": 0, - "st": 1501858094726, - "et": 1501858095804, - "ci": 9, - "cn": "", - "oi": 0, - "on": "mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]", - "pi": 0, - "pn": "localhost:27017", - "ie": false, - "to": [], - "lo": [] - } - ] - } - } -] -``` - - -## Deprecated services -**Deprecated service**(s) are the gRPC services SkyWalking used before. In SkyWalking v6, in order to match the common -concepts in CloudNative world, these services are deprecated. -Although there services are still supported at this moment, but it will keep in supported at least before the end of 2019. - -## ~~Application Register Service~~ -**Deprecated service** - -### Abstract -Register Application Code to the backend, and receive an integer represents the application. - -[gRPC service define](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/ApplicationRegisterService.proto) - -- applicationCode is the config in your `agent.config`. -- The return id is **ApplicationId** as the value in `KeyWithIntegerValue`, which will be used in further data uplink. - -## ~~Discovery Services~~ -**Deprecated services** - -### ~~Register Instance Service~~ -[gRPC service define](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/DiscoveryService.proto#L29) - -- agentUUID generated by agent, should be unique. Stay same before reboot, at least. -- **ApplicationInstanceId** will be used in further data uplink. - -HTTP format http://ip:port/instance/register(default: localhost:12800) - -Input: -``` -{ - ai: x, #serviceId - au: "", #agentUUID - rt: x, #registerTime - oi: "", #osinfo -} -``` - -Output: -``` -{ - ai: x, #serviceId - ii: x, #applicationInstanceId -} -``` - -### ~~Heart beat service~~ -[gRPC service define](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/DiscoveryService.proto#L32) - -- Recommend to report heart beat every 20-60 seconds. -- Java agent don't use this, because JVM metrics upstream replace the capabilities of this. - -HTTP format http://ip:port/instance/heartbeat(default: localhost:12800) - -Input: -``` -{ - "ii": x, #applicationInstanceId - "ht": x #heartbeatTime, java timestamp format -} -``` - -## ~~Service Name Discovery Service~~ -**Deprecated services** -### Abstract -Replace the literal String service(operation) name by an id(integer) - -[gRPC service define](.https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/DiscoveryService.proto#L70) - -- Optional service, reduce the network cost but use more memory as a buffer mapping. - -HTTP format http://ip:port/servicename/discovery(default: localhost:12800) - -Input: -``` -{ - ai: x, #serviceId - sn: "", #serviceName - st: x, #srcSpanType -} -``` - -Output: -``` -{ - si: x, #osinfo - el: { #element - ai: x, #serviceId - sn: "", #serviceName - st: x, #srcSpanType - } -} -``` - -## ~~Network Address Register Service~~ -### Abstract -Network Address includes all remove service address, includes ip, port, hostname, etc., which used in RPC framework, MQ, DB, etc. - -[gRPC service define](https://github.com/apache/skywalking-data-collect-protocol/blob/v2.0/NetworkAddressRegisterService.proto) - -- Optional service, reduce the network cost but use more memory as a buffer mapping. - diff --git a/docs/en/setup/service-agent/java-agent/Namespace.md b/docs/en/setup/service-agent/java-agent/Namespace.md index a2732ddc4a..ad1859b3e3 100644 --- a/docs/en/setup/service-agent/java-agent/Namespace.md +++ b/docs/en/setup/service-agent/java-agent/Namespace.md @@ -18,7 +18,7 @@ Namespace is the proposal from this.It is used for tracing and monitoring isolat The default value of `agent.namespace` is empty. **Influence** -The default header key of SkyWalking is `sw3`, more in this [document](../../../protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v1.md). -After `agent.namespace` set, the key changes to `namespace-sw3`. +The default header key of SkyWalking is `sw6`, more in this [document](../../../protocols/Skywalking-Cross-Process-Propagation-Headers-Protocol-v2.md). +After `agent.namespace` is set, the key changes to `namespace-sw6`. The across process propagation chain breaks, when the two sides are using different namespace. diff --git a/docs/en/setup/service-agent/java-agent/README.md b/docs/en/setup/service-agent/java-agent/README.md index ae3a34a675..f38d67fa70 100755 --- a/docs/en/setup/service-agent/java-agent/README.md +++ b/docs/en/setup/service-agent/java-agent/README.md @@ -78,11 +78,9 @@ property key | Description | Default | `agent.span_limit_per_segment`|The max number of spans in a single segment. Through this config item, SkyWalking keep your application memory cost estimated.|300 | `agent.ignore_suffix`|If the operation name of the first span is included in this set, this segment should be ignored.|Not set| `agent.is_open_debugging_class`|If true, skywalking agent will save all instrumented classes files in `/debugging` folder. SkyWalking team may ask for these files in order to resolve compatible problem.|Not set| -`agent.active_v2_header`|Active V2 header in default.|`true`| `agent.instance_uuid` |Instance uuid is the identity of an instance, SkyWalking treat same instance uuid as one instance.if empty, SkyWalking agent will generate an 32-bit uuid. Using `NAME:` as UUID prefix could set the customized instance name. Such as, set it as `NAME:SVR-INSTANCE-A`, `SVR-INSTANCE-A` is the instance name. Otherwise, use `ServiceName`-pid:`id`@`hostname` as the instance name. |`""`| `agent.instance_properties[key]=value` | Add service instance custom properties. | Not set| `agent.cause_exception_depth`|How depth the agent goes, when log all cause exceptions.|`5`| -`agent.active_v1_header `|Deactivate V1 header in default.|`false`| `agent.cool_down_threshold `|How long should the agent wait (in minute) before re-registering to the OAP server after receiving reset command.|`10`| `agent.force_reconnection_period `|Force reconnection period of grpc, based on grpc_channel_check_interval.|`1`| `agent.operation_name_threshold `|The operationName max length, setting this value > 500 is not recommended.|`500`| diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java index 696ce84ab3..ca11770b1e 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/query/TraceQueryService.java @@ -23,8 +23,7 @@ import java.util.ArrayList; import java.util.Comparator; import java.util.LinkedList; import java.util.List; -import org.apache.skywalking.apm.network.language.agent.SpanObject; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentObject; +import java.util.stream.Collectors; import org.apache.skywalking.apm.network.language.agent.UniqueId; import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject; import org.apache.skywalking.apm.network.language.agent.v2.SpanObjectV2; @@ -125,13 +124,8 @@ public class TraceQueryService implements Service { } else { for (SegmentRecord segment : segmentRecords) { if (nonNull(segment)) { - if (segment.getVersion() == 2) { - SegmentObject segmentObject = SegmentObject.parseFrom(segment.getDataBinary()); - trace.getSpans().addAll(buildSpanV2List(traceId, segment.getSegmentId(), segment.getServiceId(), segmentObject.getSpansList())); - } else { - TraceSegmentObject segmentObject = TraceSegmentObject.parseFrom(segment.getDataBinary()); - trace.getSpans().addAll(buildSpanList(traceId, segment.getSegmentId(), segment.getServiceId(), segmentObject.getSpansList())); - } + SegmentObject segmentObject = SegmentObject.parseFrom(segment.getDataBinary()); + trace.getSpans().addAll(buildSpanV2List(traceId, segment.getSegmentId(), segment.getServiceId(), segmentObject.getSpansList())); } } } @@ -221,125 +215,9 @@ public class TraceQueryService implements Service { } ref.setParentSpanId(reference.getParentSpanId()); - UniqueId uniqueId = reference.getParentTraceSegmentId(); - StringBuilder segmentIdBuilder = new StringBuilder(); - for (int i = 0; i < uniqueId.getIdPartsList().size(); i++) { - if (i == 0) { - segmentIdBuilder.append(uniqueId.getIdPartsList().get(i)); - } else { - segmentIdBuilder.append(".").append(uniqueId.getIdPartsList().get(i)); - } - } - ref.setParentSegmentId(segmentIdBuilder.toString()); - - span.setSegmentParentSpanId(ref.getParentSegmentId() + Const.SEGMENT_SPAN_SPLIT + ref.getParentSpanId()); - - span.getRefs().add(ref); - }); - - spanObject.getTagsList().forEach(tag -> { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(tag.getKey()); - keyValue.setValue(tag.getValue()); - span.getTags().add(keyValue); - }); - - spanObject.getLogsList().forEach(log -> { - LogEntity logEntity = new LogEntity(); - logEntity.setTime(log.getTime()); - - log.getDataList().forEach(data -> { - KeyValue keyValue = new KeyValue(); - keyValue.setKey(data.getKey()); - keyValue.setValue(data.getValue()); - logEntity.getData().add(keyValue); - }); - - span.getLogs().add(logEntity); - }); - - spans.add(span); - }); - - return spans; - } - - private List buildSpanList(String traceId, String segmentId, int serviceId, - List spanObjects) { - List spans = new ArrayList<>(); - - spanObjects.forEach(spanObject -> { - Span span = new Span(); - span.setTraceId(traceId); - span.setSegmentId(segmentId); - span.setSpanId(spanObject.getSpanId()); - span.setParentSpanId(spanObject.getParentSpanId()); - span.setStartTime(spanObject.getStartTime()); - span.setEndTime(spanObject.getEndTime()); - span.setError(spanObject.getIsError()); - span.setLayer(spanObject.getSpanLayer().name()); - span.setType(spanObject.getSpanType().name()); - - String segmentSpanId = segmentId + Const.SEGMENT_SPAN_SPLIT + spanObject.getSpanId(); - span.setSegmentSpanId(segmentSpanId); - - String segmentParentSpanId = segmentId + Const.SEGMENT_SPAN_SPLIT + spanObject.getParentSpanId(); - span.setSegmentParentSpanId(segmentParentSpanId); - - if (spanObject.getPeerId() == 0) { - span.setPeer(spanObject.getPeer()); - } else { - span.setPeer(getNetworkAddressInventoryCache().get(spanObject.getPeerId()).getName()); - } - - String endpointName = spanObject.getOperationName(); - if (spanObject.getOperationNameId() != 0) { - EndpointInventory endpointInventory = getEndpointInventoryCache().get(spanObject.getOperationNameId()); - if (nonNull(endpointInventory)) { - endpointName = endpointInventory.getName(); - } else { - endpointName = Const.EMPTY_STRING; - } - } - span.setEndpointName(endpointName); - - final ServiceInventory serviceInventory = getServiceInventoryCache().get(serviceId); - if (serviceInventory != null) { - span.setServiceCode(serviceInventory.getName()); - } else { - span.setServiceCode("unknown"); - } - - if (spanObject.getComponentId() == 0) { - span.setComponent(spanObject.getComponent()); - } else { - span.setComponent(getComponentLibraryCatalogService().getComponentName(spanObject.getComponentId())); - } - - spanObject.getRefsList().forEach(reference -> { - Ref ref = new Ref(); - ref.setTraceId(traceId); - - switch (reference.getRefType()) { - case CrossThread: - ref.setType(RefType.CROSS_THREAD); - break; - case CrossProcess: - ref.setType(RefType.CROSS_PROCESS); - break; - } - ref.setParentSpanId(reference.getParentSpanId()); - - UniqueId uniqueId = reference.getParentTraceSegmentId(); - StringBuilder segmentIdBuilder = new StringBuilder(); - for (int i = 0; i < uniqueId.getIdPartsList().size(); i++) { - if (i == 0) { - segmentIdBuilder.append(uniqueId.getIdPartsList().get(i)); - } else { - segmentIdBuilder.append(".").append(uniqueId.getIdPartsList().get(i)); - } - } - ref.setParentSegmentId(segmentIdBuilder.toString()); + final UniqueId uniqueId = reference.getParentTraceSegmentId(); + final String parentSegmentId = uniqueId.getIdPartsList().stream().map(String::valueOf).collect(Collectors.joining(".")); + ref.setParentSegmentId(parentSegmentId); span.setSegmentParentSpanId(ref.getParentSegmentId() + Const.SEGMENT_SPAN_SPLIT + ref.getParentSpanId()); @@ -392,14 +270,14 @@ public class TraceQueryService implements Service { rootSpans.add(span); } }); - /** + /* * In some cases, there are segment fragments, which could not be linked by Ref, * because of two kinds of reasons. * 1. Multiple leaf segments have no particular order in the storage. * 2. Lost in sampling, agent fail safe, segment lost, even bug. * Sorting the segments makes the trace view more readable. */ - rootSpans.sort(Comparator.comparing(span -> span.getStartTime())); + rootSpans.sort(Comparator.comparing(Span::getStartTime)); return rootSpans; } diff --git a/oap-server/server-library/library-buffer/src/main/java/org/apache/skywalking/oap/server/library/buffer/BufferData.java b/oap-server/server-library/library-buffer/src/main/java/org/apache/skywalking/oap/server/library/buffer/BufferData.java index 4ef90c58d0..6feef6b0d6 100644 --- a/oap-server/server-library/library-buffer/src/main/java/org/apache/skywalking/oap/server/library/buffer/BufferData.java +++ b/oap-server/server-library/library-buffer/src/main/java/org/apache/skywalking/oap/server/library/buffer/BufferData.java @@ -19,8 +19,8 @@ package org.apache.skywalking.oap.server.library.buffer; import com.google.protobuf.GeneratedMessageV3; -import lombok.*; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentObject; +import lombok.Getter; +import lombok.Setter; import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject; /** @@ -29,7 +29,6 @@ import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject; @Getter public class BufferData { private MESSAGE_TYPE messageType; - @Setter private TraceSegmentObject v1Segment; @Setter private SegmentObject v2Segment; public BufferData(MESSAGE_TYPE messageType) { diff --git a/oap-server/server-library/library-buffer/src/test/java/org/apache/skywalking/oap/server/library/buffer/BufferStreamTestCase.java b/oap-server/server-library/library-buffer/src/test/java/org/apache/skywalking/oap/server/library/buffer/BufferStreamTestCase.java deleted file mode 100644 index 4b7e7d6190..0000000000 --- a/oap-server/server-library/library-buffer/src/test/java/org/apache/skywalking/oap/server/library/buffer/BufferStreamTestCase.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.library.buffer; - -import java.io.IOException; -import java.util.concurrent.TimeUnit; -import org.apache.skywalking.apm.network.language.agent.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class BufferStreamTestCase { - - private static final Logger logger = LoggerFactory.getLogger(BufferStreamTestCase.class); - - public static void main(String[] args) throws IOException, InterruptedException { - String directory = "/Users/pengys5/code/sky-walking/buffer-test"; - BufferStream.Builder builder = new BufferStream.Builder<>(directory); -// builder.cleanWhenRestart(true); - builder.dataFileMaxSize(50); - builder.offsetFileMaxSize(10); - builder.parser(TraceSegmentObject.parser()); - builder.callBack(bufferData -> { - logger.info("segment parse: {}", bufferData.getMessageType().getSpans(0).getSpanId()); - return false; - }); - - BufferStream stream = builder.build(); - stream.initialize(); - - TimeUnit.SECONDS.sleep(5); - - StringBuilder str = new StringBuilder("2018-08-27 11:59:45,261 main DEBUG Registering MBean org.apache.logging.log4j2:type=6d6f6e28"); - for (int i = 0; i < 1000; i++) { - str.append("main DEBUG Registering MBean org.apache.logging.log4j2:type=6d6f6e28 main DEBUG Registering MBean org.apache.logging.log4j2:type=6d6f6e28 main DEBUG Registering MBean org.apache.logging.log4j2:type=6d6f6e28"); - } - - for (int i = 0; i < 20000; i++) { - TraceSegmentObject.Builder segment = TraceSegmentObject.newBuilder(); - SpanObject.Builder span = SpanObject.newBuilder(); - - span.setSpanId(i); - span.setOperationName(str.toString()); - segment.addSpans(span); - stream.write(segment.build()); - - if (i % 1000 == 0) { - TimeUnit.MILLISECONDS.sleep(50); - } - } - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java index 535144b59b..b9bde06753 100644 --- a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/JVMModuleProvider.java @@ -47,7 +47,6 @@ public class JVMModuleProvider extends ModuleProvider { @Override public void start() { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); - grpcHandlerRegister.addHandler(new JVMMetricsServiceHandler(getManager())); grpcHandlerRegister.addHandler(new JVMMetricReportServiceHandler(getManager())); } diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandler.java deleted file mode 100644 index 0f13a2852e..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandler.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.jvm.provider.handler; - -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class JVMMetricsServiceHandler extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase implements GRPCHandler { - - private static final Logger logger = LoggerFactory.getLogger(JVMMetricsServiceHandler.class); - - private final JVMSourceDispatcher jvmSourceDispatcher; - - public JVMMetricsServiceHandler(ModuleManager moduleManager) { - this.jvmSourceDispatcher = new JVMSourceDispatcher(moduleManager); - } - - @Override public void collect(JVMMetrics request, StreamObserver responseObserver) { - int serviceInstanceId = request.getApplicationInstanceId(); - - if (logger.isDebugEnabled()) { - logger.debug("receive the jvm metrics from service instance, id: {}", serviceInstanceId); - } - - request.getMetricsList().forEach(metrics -> { - long minuteTimeBucket = TimeBucket.getMinuteTimeBucket(metrics.getTime()); - jvmSourceDispatcher.sendMetric(serviceInstanceId, minuteTimeBucket, metrics); - }); - - responseObserver.onNext(Downstream.newBuilder().build()); - responseObserver.onCompleted(); - } - -} diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandlerMainTest.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandlerMainTest.java deleted file mode 100644 index 5a09022b12..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricsServiceHandlerMainTest.java +++ /dev/null @@ -1,143 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.jvm.provider.handler; - -import io.grpc.*; -import java.util.concurrent.*; -import org.apache.skywalking.apm.network.common.CPU; -import org.apache.skywalking.apm.network.language.agent.*; - -/** - * @author peng-yongsheng - */ -public class JVMMetricsServiceHandlerMainTest { - - public static void main(String[] args) { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext().build(); - - JVMMetricsServiceGrpc.JVMMetricsServiceBlockingStub stub = JVMMetricsServiceGrpc.newBlockingStub(channel); - - Executors.newSingleThreadScheduledExecutor().schedule(() -> send(stub), 1, TimeUnit.SECONDS); - } - - private static void send(JVMMetricsServiceGrpc.JVMMetricsServiceBlockingStub stub) { - JVMMetrics.Builder jvmMetrics = JVMMetrics.newBuilder(); - jvmMetrics.setApplicationInstanceId(2); - - JVMMetric.Builder jvmMetricBuilder = JVMMetric.newBuilder(); - jvmMetricBuilder.setTime(System.currentTimeMillis()); - - buildCPUMetric(jvmMetricBuilder); - buildGCMetric(jvmMetricBuilder); - buildMemoryMetric(jvmMetricBuilder); - buildMemoryPoolMetric(jvmMetricBuilder); - - jvmMetrics.addMetrics(jvmMetricBuilder); - - stub.collect(jvmMetrics.build()); - } - - private static void buildMemoryPoolMetric(JVMMetric.Builder metricBuilder) { - MemoryPool.Builder codeCache = MemoryPool.newBuilder(); - codeCache.setInit(10); - codeCache.setMax(100); - codeCache.setCommited(10); - codeCache.setUsed(50); - codeCache.setType(PoolType.CODE_CACHE_USAGE); - metricBuilder.addMemoryPool(codeCache); - - MemoryPool.Builder newGen = MemoryPool.newBuilder(); - newGen.setInit(10); - newGen.setMax(100); - newGen.setCommited(10); - newGen.setUsed(50); - newGen.setType(PoolType.NEWGEN_USAGE); - metricBuilder.addMemoryPool(newGen); - - MemoryPool.Builder oldGen = MemoryPool.newBuilder(); - oldGen.setInit(10); - oldGen.setMax(100); - oldGen.setCommited(10); - oldGen.setUsed(50); - oldGen.setType(PoolType.OLDGEN_USAGE); - metricBuilder.addMemoryPool(oldGen); - - MemoryPool.Builder survivor = MemoryPool.newBuilder(); - survivor.setInit(10); - survivor.setMax(100); - survivor.setCommited(10); - survivor.setUsed(50); - survivor.setType(PoolType.SURVIVOR_USAGE); - metricBuilder.addMemoryPool(survivor); - - MemoryPool.Builder permGen = MemoryPool.newBuilder(); - permGen.setInit(10); - permGen.setMax(100); - permGen.setCommited(10); - permGen.setUsed(50); - permGen.setType(PoolType.PERMGEN_USAGE); - metricBuilder.addMemoryPool(permGen); - - MemoryPool.Builder metaSpace = MemoryPool.newBuilder(); - metaSpace.setInit(10); - metaSpace.setMax(100); - metaSpace.setCommited(10); - metaSpace.setUsed(50); - metaSpace.setType(PoolType.METASPACE_USAGE); - metricBuilder.addMemoryPool(metaSpace); - } - - private static void buildMemoryMetric(JVMMetric.Builder metricBuilder) { - Memory.Builder isHeap = Memory.newBuilder(); - isHeap.setInit(20); - isHeap.setMax(100); - isHeap.setCommitted(20); - isHeap.setUsed(60); - isHeap.setIsHeap(true); - metricBuilder.addMemory(isHeap); - - Memory.Builder nonHeap = Memory.newBuilder(); - nonHeap.setInit(20); - nonHeap.setMax(100); - nonHeap.setCommitted(20); - nonHeap.setUsed(60); - nonHeap.setIsHeap(false); - metricBuilder.addMemory(nonHeap); - } - - private static void buildGCMetric(JVMMetric.Builder metricBuilder) { - GC.Builder newGC = GC.newBuilder(); - newGC.setPhrase(GCPhrase.NEW); - newGC.setCount(2); - newGC.setTime(1000); - metricBuilder.addGc(newGC); - - GC.Builder oldGC = GC.newBuilder(); - oldGC.setPhrase(GCPhrase.OLD); - oldGC.setCount(4); - oldGC.setTime(49); - metricBuilder.addGc(oldGC); - } - - private static void buildCPUMetric(JVMMetric.Builder metricBuilder) { - CPU.Builder cpu = CPU.newBuilder(); - cpu.setUsagePercent(20); - metricBuilder.setCpu(cpu.build()); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java index ffdba9000d..85ffe556f6 100644 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java @@ -19,12 +19,13 @@ package org.apache.skywalking.oap.server.receiver.register.provider; import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.server.*; -import org.apache.skywalking.oap.server.library.module.*; +import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister; +import org.apache.skywalking.oap.server.library.module.ModuleConfig; +import org.apache.skywalking.oap.server.library.module.ModuleDefine; +import org.apache.skywalking.oap.server.library.module.ModuleProvider; import org.apache.skywalking.oap.server.receiver.register.module.RegisterModule; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc.*; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest.*; -import org.apache.skywalking.oap.server.receiver.register.provider.handler.v6.grpc.*; +import org.apache.skywalking.oap.server.receiver.register.provider.handler.v6.grpc.RegisterServiceHandler; +import org.apache.skywalking.oap.server.receiver.register.provider.handler.v6.grpc.ServiceInstancePingServiceHandler; import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; /** @@ -49,21 +50,8 @@ public class RegisterModuleProvider extends ModuleProvider { @Override public void start() { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); - grpcHandlerRegister.addHandler(new ApplicationRegisterHandler(getManager())); - grpcHandlerRegister.addHandler(new InstanceDiscoveryServiceHandler(getManager())); - grpcHandlerRegister.addHandler(new ServiceNameDiscoveryHandler(getManager())); - grpcHandlerRegister.addHandler(new NetworkAddressRegisterServiceHandler(getManager())); - - // v2 grpcHandlerRegister.addHandler(new RegisterServiceHandler(getManager())); grpcHandlerRegister.addHandler(new ServiceInstancePingServiceHandler(getManager())); - - JettyHandlerRegister jettyHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(JettyHandlerRegister.class); - jettyHandlerRegister.addHandler(new ApplicationRegisterServletHandler(getManager())); - jettyHandlerRegister.addHandler(new InstanceDiscoveryServletHandler(getManager())); - jettyHandlerRegister.addHandler(new InstanceHeartBeatServletHandler(getManager())); - jettyHandlerRegister.addHandler(new NetworkAddressRegisterServletHandler(getManager())); - jettyHandlerRegister.addHandler(new ServiceNameDiscoveryServiceHandler(getManager())); } @Override public void notifyAfterCompleted() { diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ApplicationRegisterHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ApplicationRegisterHandler.java deleted file mode 100644 index f0e2b5ef1a..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ApplicationRegisterHandler.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc; - -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.oap.server.core.*; -import org.apache.skywalking.oap.server.core.register.service.IServiceInventoryRegister; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class ApplicationRegisterHandler extends ApplicationRegisterServiceGrpc.ApplicationRegisterServiceImplBase implements GRPCHandler { - - private static final Logger logger = LoggerFactory.getLogger(ApplicationRegisterHandler.class); - - private final IServiceInventoryRegister serviceInventoryRegister; - - public ApplicationRegisterHandler(ModuleManager moduleManager) { - serviceInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(IServiceInventoryRegister.class); - } - - @Override - public void applicationCodeRegister(Application request, StreamObserver responseObserver) { - if (logger.isDebugEnabled()) { - logger.debug("Register application, application code: {}", request.getApplicationCode()); - } - - ApplicationMapping.Builder builder = ApplicationMapping.newBuilder(); - String serviceName = request.getApplicationCode(); - int serviceId = serviceInventoryRegister.getOrCreate(serviceName, null); - - if (serviceId != Const.NONE) { - KeyWithIntegerValue value = KeyWithIntegerValue.newBuilder().setKey(serviceName).setValue(serviceId).build(); - builder.setApplication(value); - } - responseObserver.onNext(builder.build()); - responseObserver.onCompleted(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/InstanceDiscoveryServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/InstanceDiscoveryServiceHandler.java deleted file mode 100644 index 4bb5479ecf..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/InstanceDiscoveryServiceHandler.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc; - -import com.google.common.base.Strings; -import com.google.gson.JsonObject; -import io.grpc.stub.StreamObserver; -import java.util.Objects; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.cache.*; -import org.apache.skywalking.oap.server.core.register.*; -import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory.PropertyUtil; -import org.apache.skywalking.oap.server.core.register.service.*; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class InstanceDiscoveryServiceHandler extends InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceImplBase implements GRPCHandler { - - private static final Logger logger = LoggerFactory.getLogger(InstanceDiscoveryServiceHandler.class); - - private final ServiceInventoryCache serviceInventoryCache; - private final ServiceInstanceInventoryCache serviceInstanceInventoryCache; - private final IServiceInventoryRegister serviceInventoryRegister; - private final IServiceInstanceInventoryRegister serviceInstanceInventoryRegister; - - public InstanceDiscoveryServiceHandler(ModuleManager moduleManager) { - this.serviceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInventoryCache.class); - this.serviceInstanceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInstanceInventoryCache.class); - this.serviceInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(IServiceInventoryRegister.class); - this.serviceInstanceInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(IServiceInstanceInventoryRegister.class); - } - - @Override - public void registerInstance(ApplicationInstance request, - StreamObserver responseObserver) { - OSInfo osinfo = request.getOsinfo(); - - JsonObject instanceProperties = new JsonObject(); - instanceProperties.addProperty(PropertyUtil.HOST_NAME, osinfo.getHostname()); - instanceProperties.addProperty(PropertyUtil.OS_NAME, osinfo.getOsName()); - instanceProperties.addProperty(PropertyUtil.PROCESS_NO, osinfo.getProcessNo() + ""); - instanceProperties.addProperty(PropertyUtil.IPV4S, PropertyUtil.ipv4sSerialize(osinfo.getIpv4SList())); - - ServiceInventory serviceInventory = serviceInventoryCache.get(request.getApplicationId()); - - String instanceName = serviceInventory.getName(); - if (osinfo.getProcessNo() != 0) { - instanceName += "-pid:" + osinfo.getProcessNo(); - } - if (!Strings.isNullOrEmpty(osinfo.getHostname())) { - instanceName += "@" + osinfo.getHostname(); - } - - int serviceInstanceId = serviceInstanceInventoryRegister.getOrCreate(request.getApplicationId(), instanceName, request.getAgentUUID(), request.getRegisterTime(), instanceProperties); - ApplicationInstanceMapping.Builder builder = ApplicationInstanceMapping.newBuilder(); - builder.setApplicationId(request.getApplicationId()); - builder.setApplicationInstanceId(serviceInstanceId); - responseObserver.onNext(builder.build()); - responseObserver.onCompleted(); - } - - @Override public void heartbeat(ApplicationInstanceHeartbeat request, StreamObserver responseObserver) { - int serviceInstanceId = request.getApplicationInstanceId(); - long heartBeatTime = request.getHeartbeatTime(); - serviceInstanceInventoryRegister.heartbeat(serviceInstanceId, heartBeatTime); - - ServiceInstanceInventory serviceInstanceInventory = serviceInstanceInventoryCache.get(serviceInstanceId); - if (Objects.nonNull(serviceInstanceInventory)) { - serviceInventoryRegister.heartbeat(serviceInstanceInventory.getServiceId(), heartBeatTime); - } else { - logger.warn("Can't found service by service instance id from cache, service instance id is: {}", serviceInstanceId); - } - - responseObserver.onNext(Downstream.getDefaultInstance()); - responseObserver.onCompleted(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/NetworkAddressRegisterServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/NetworkAddressRegisterServiceHandler.java deleted file mode 100644 index a1adb9e57b..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/NetworkAddressRegisterServiceHandler.java +++ /dev/null @@ -1,63 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc; - -import com.google.protobuf.ProtocolStringList; -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.oap.server.core.*; -import org.apache.skywalking.oap.server.core.register.service.INetworkAddressInventoryRegister; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class NetworkAddressRegisterServiceHandler extends NetworkAddressRegisterServiceGrpc.NetworkAddressRegisterServiceImplBase implements GRPCHandler { - - private static final Logger logger = LoggerFactory.getLogger(NetworkAddressRegisterServiceHandler.class); - - private final INetworkAddressInventoryRegister networkAddressInventoryRegister; - - public NetworkAddressRegisterServiceHandler(ModuleManager moduleManager) { - this.networkAddressInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(INetworkAddressInventoryRegister.class); - } - - @Override - public void batchRegister(NetworkAddresses request, StreamObserver responseObserver) { - if (logger.isDebugEnabled()) { - logger.debug("register application"); - } - - ProtocolStringList addressesList = request.getAddressesList(); - - NetworkAddressMappings.Builder builder = NetworkAddressMappings.newBuilder(); - for (String networkAddress : addressesList) { - int addressId = networkAddressInventoryRegister.getOrCreate(networkAddress, null); - - if (addressId != Const.NONE) { - KeyWithIntegerValue value = KeyWithIntegerValue.newBuilder().setKey(networkAddress).setValue(addressId).build(); - builder.addAddressIds(value); - } - } - responseObserver.onNext(builder.build()); - responseObserver.onCompleted(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ServiceNameDiscoveryHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ServiceNameDiscoveryHandler.java deleted file mode 100644 index f628c881dd..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/grpc/ServiceNameDiscoveryHandler.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.grpc; - -import io.grpc.stub.StreamObserver; -import java.util.List; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.oap.server.core.*; -import org.apache.skywalking.oap.server.core.register.service.IEndpointInventoryRegister; -import org.apache.skywalking.oap.server.core.source.DetectPoint; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class ServiceNameDiscoveryHandler extends ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceImplBase implements GRPCHandler { - - private static final Logger logger = LoggerFactory.getLogger(ServiceNameDiscoveryHandler.class); - - private final IEndpointInventoryRegister inventoryService; - - public ServiceNameDiscoveryHandler(ModuleManager moduleManager) { - this.inventoryService = moduleManager.find(CoreModule.NAME).provider().getService(IEndpointInventoryRegister.class); - } - - @Override public void discovery(ServiceNameCollection request, - StreamObserver responseObserver) { - List serviceNameElementList = request.getElementsList(); - - ServiceNameMappingCollection.Builder builder = ServiceNameMappingCollection.newBuilder(); - for (ServiceNameElement serviceNameElement : serviceNameElementList) { - int serviceId = serviceNameElement.getApplicationId(); - String endpointName = serviceNameElement.getServiceName(); - int endpointId = inventoryService.getOrCreate(serviceId, endpointName, DetectPoint.fromSpanType(serviceNameElement.getSrcSpanType())); - - if (endpointId != Const.NONE) { - ServiceNameMappingElement.Builder mappingElement = ServiceNameMappingElement.newBuilder(); - mappingElement.setServiceId(endpointId); - mappingElement.setElement(serviceNameElement); - builder.addElements(mappingElement); - } - } - - responseObserver.onNext(builder.build()); - responseObserver.onCompleted(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ApplicationRegisterServletHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ApplicationRegisterServletHandler.java deleted file mode 100644 index b08512bc99..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ApplicationRegisterServletHandler.java +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest; - -import com.google.gson.*; -import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.register.service.IServiceInventoryRegister; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.jetty.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class ApplicationRegisterServletHandler extends JettyJsonHandler { - - private static final Logger logger = LoggerFactory.getLogger(ApplicationRegisterServletHandler.class); - - private final IServiceInventoryRegister serviceInventoryRegister; - private Gson gson = new Gson(); - private static final String APPLICATION_CODE = "c"; - private static final String APPLICATION_ID = "i"; - - public ApplicationRegisterServletHandler(ModuleManager moduleManager) { - serviceInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(IServiceInventoryRegister.class); - } - - @Override public String pathSpec() { - return "/application/register"; - } - - @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - throw new UnsupportedOperationException(); - } - - @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { - JsonArray responseArray = new JsonArray(); - try { - JsonArray applicationCodes = gson.fromJson(req.getReader(), JsonArray.class); - for (int i = 0; i < applicationCodes.size(); i++) { - String applicationCode = applicationCodes.get(i).getAsString(); - int applicationId = serviceInventoryRegister.getOrCreate(applicationCode, null); - JsonObject mapping = new JsonObject(); - mapping.addProperty(APPLICATION_CODE, applicationCode); - mapping.addProperty(APPLICATION_ID, applicationId); - responseArray.add(mapping); - } - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - return responseArray; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceDiscoveryServletHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceDiscoveryServletHandler.java deleted file mode 100644 index d1ba1808ef..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceDiscoveryServletHandler.java +++ /dev/null @@ -1,102 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest; - -import com.google.gson.*; -import java.io.IOException; -import java.util.*; -import javax.servlet.http.HttpServletRequest; -import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.cache.ServiceInventoryCache; -import org.apache.skywalking.oap.server.core.register.*; -import org.apache.skywalking.oap.server.core.register.service.IServiceInstanceInventoryRegister; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.jetty.*; -import org.slf4j.*; - -import static org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory.PropertyUtil.*; - -/** - * @author peng-yongsheng - */ -public class InstanceDiscoveryServletHandler extends JettyJsonHandler { - - private static final Logger logger = LoggerFactory.getLogger(InstanceDiscoveryServletHandler.class); - - private final IServiceInstanceInventoryRegister serviceInstanceInventoryRegister; - private final ServiceInventoryCache serviceInventoryCache; - private final Gson gson = new Gson(); - - private static final String APPLICATION_ID = "ai"; - private static final String AGENT_UUID = "au"; - private static final String REGISTER_TIME = "rt"; - private static final String INSTANCE_ID = "ii"; - private static final String OS_INFO = "oi"; - - public InstanceDiscoveryServletHandler(ModuleManager moduleManager) { - this.serviceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInventoryCache.class); - this.serviceInstanceInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(IServiceInstanceInventoryRegister.class); - } - - @Override public String pathSpec() { - return "/instance/register"; - } - - @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - throw new UnsupportedOperationException(); - } - - @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { - JsonObject responseJson = new JsonObject(); - try { - JsonObject instance = gson.fromJson(req.getReader(), JsonObject.class); - int applicationId = instance.get(APPLICATION_ID).getAsInt(); - String agentUUID = instance.get(AGENT_UUID).getAsString(); - long registerTime = instance.get(REGISTER_TIME).getAsLong(); - JsonObject osInfoJson = instance.get(OS_INFO).getAsJsonObject(); - - List ipv4sList = new ArrayList<>(); - JsonArray ipv4s = osInfoJson.get("ipv4s").getAsJsonArray(); - ipv4s.forEach(ipv4 -> ipv4sList.add(ipv4.getAsString())); - - ServiceInventory serviceInventory = serviceInventoryCache.get(applicationId); - - JsonObject instanceProperties = new JsonObject(); - instanceProperties.addProperty(ServiceInstanceInventory.PropertyUtil.HOST_NAME, osInfoJson.get("hostName").getAsString()); - instanceProperties.addProperty(ServiceInstanceInventory.PropertyUtil.OS_NAME, osInfoJson.get("osName").getAsString()); - instanceProperties.addProperty(ServiceInstanceInventory.PropertyUtil.PROCESS_NO, osInfoJson.get("processId").getAsInt() + ""); - instanceProperties.addProperty(ServiceInstanceInventory.PropertyUtil.IPV4S, ServiceInstanceInventory.PropertyUtil.ipv4sSerialize(ipv4sList)); - - String instanceName = serviceInventory.getName(); - if (instanceProperties.has(PROCESS_NO)) { - instanceName += "-pid:" + instanceProperties.get(PROCESS_NO).getAsString(); - } - if (instanceProperties.has(HOST_NAME)) { - instanceName += "@" + instanceProperties.get(HOST_NAME).getAsString(); - } - - int instanceId = serviceInstanceInventoryRegister.getOrCreate(applicationId, instanceName, agentUUID, registerTime, instanceProperties); - responseJson.addProperty(APPLICATION_ID, applicationId); - responseJson.addProperty(INSTANCE_ID, instanceId); - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - return responseJson; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceHeartBeatServletHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceHeartBeatServletHandler.java deleted file mode 100644 index 34c39715af..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/InstanceHeartBeatServletHandler.java +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest; - -import com.google.gson.*; -import java.io.IOException; -import java.util.Objects; -import javax.servlet.http.HttpServletRequest; -import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache; -import org.apache.skywalking.oap.server.core.register.ServiceInstanceInventory; -import org.apache.skywalking.oap.server.core.register.service.IServiceInstanceInventoryRegister; -import org.apache.skywalking.oap.server.core.register.service.IServiceInventoryRegister; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.jetty.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class InstanceHeartBeatServletHandler extends JettyJsonHandler { - - private static final Logger logger = LoggerFactory.getLogger(InstanceHeartBeatServletHandler.class); - - private final IServiceInstanceInventoryRegister serviceInstanceInventoryRegister; - private final ServiceInstanceInventoryCache serviceInstanceInventoryCache; - private final IServiceInventoryRegister serviceInventoryRegister; - private final Gson gson = new Gson(); - - private static final String INSTANCE_ID = "ii"; - private static final String HEARTBEAT_TIME = "ht"; - - public InstanceHeartBeatServletHandler(ModuleManager moduleManager) { - this.serviceInstanceInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(IServiceInstanceInventoryRegister.class); - this.serviceInstanceInventoryCache = moduleManager.find(CoreModule.NAME).provider().getService(ServiceInstanceInventoryCache.class); - this.serviceInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(IServiceInventoryRegister.class); - } - - @Override public String pathSpec() { - return "/instance/heartbeat"; - } - - @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - throw new UnsupportedOperationException(); - } - - @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException, IOException { - JsonObject responseJson = new JsonObject(); - try { - JsonObject heartBeat = gson.fromJson(req.getReader(), JsonObject.class); - int instanceId = heartBeat.get(INSTANCE_ID).getAsInt(); - long heartBeatTime = heartBeat.get(HEARTBEAT_TIME).getAsLong(); - - serviceInstanceInventoryRegister.heartbeat(instanceId, heartBeatTime); - ServiceInstanceInventory serviceInstanceInventory = serviceInstanceInventoryCache.get(instanceId); - if (Objects.nonNull(serviceInstanceInventory)) { - serviceInventoryRegister.heartbeat(serviceInstanceInventory.getServiceId(), heartBeatTime); - } else { - logger.warn("Can't found service by service instance id from cache, service instance id is: {}", instanceId); - } - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - return responseJson; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/NetworkAddressRegisterServletHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/NetworkAddressRegisterServletHandler.java deleted file mode 100644 index b873d08e47..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/NetworkAddressRegisterServletHandler.java +++ /dev/null @@ -1,76 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest; - -import com.google.gson.*; -import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.register.service.INetworkAddressInventoryRegister; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.jetty.JettyJsonHandler; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class NetworkAddressRegisterServletHandler extends JettyJsonHandler { - - private static final Logger logger = LoggerFactory.getLogger(NetworkAddressRegisterServletHandler.class); - - private final INetworkAddressInventoryRegister networkAddressInventoryRegister; - private Gson gson = new Gson(); - private static final String NETWORK_ADDRESS = "n"; - private static final String ADDRESS_ID = "i"; - - public NetworkAddressRegisterServletHandler(ModuleManager moduleManager) { - this.networkAddressInventoryRegister = moduleManager.find(CoreModule.NAME).provider().getService(INetworkAddressInventoryRegister.class); - } - - @Override public String pathSpec() { - return "/networkAddress/register"; - } - - @Override protected JsonElement doGet(HttpServletRequest req) { - throw new UnsupportedOperationException(); - } - - @Override protected JsonElement doPost(HttpServletRequest req) { - JsonArray responseArray = new JsonArray(); - try { - JsonArray networkAddresses = gson.fromJson(req.getReader(), JsonArray.class); - for (int i = 0; i < networkAddresses.size(); i++) { - String networkAddress = networkAddresses.get(i).getAsString(); - - if (logger.isDebugEnabled()) { - logger.debug("network getAddress register, network getAddress: {}", networkAddress); - } - - int addressId = networkAddressInventoryRegister.getOrCreate(networkAddress, null); - JsonObject mapping = new JsonObject(); - mapping.addProperty(ADDRESS_ID, addressId); - mapping.addProperty(NETWORK_ADDRESS, networkAddress); - responseArray.add(mapping); - } - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - return responseArray; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ServiceNameDiscoveryServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ServiceNameDiscoveryServiceHandler.java deleted file mode 100644 index c9b09d43ed..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/rest/ServiceNameDiscoveryServiceHandler.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5.rest; - -import com.google.gson.*; -import java.io.IOException; -import java.util.Objects; -import javax.servlet.http.HttpServletRequest; -import org.apache.skywalking.apm.network.language.agent.SpanType; -import org.apache.skywalking.oap.server.core.CoreModule; -import org.apache.skywalking.oap.server.core.register.service.IEndpointInventoryRegister; -import org.apache.skywalking.oap.server.core.source.DetectPoint; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.library.server.jetty.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class ServiceNameDiscoveryServiceHandler extends JettyJsonHandler { - - private static final Logger logger = LoggerFactory.getLogger(ServiceNameDiscoveryServiceHandler.class); - - private final IEndpointInventoryRegister inventoryService; - private final Gson gson = new Gson(); - - private static final String APPLICATION_ID = "ai"; - private static final String SERVICE_NAME = "sn"; - private static final String SRC_SPAN_TYPE = "st"; - private static final String SERVICE_ID = "si"; - private static final String ELEMENT = "el"; - - public ServiceNameDiscoveryServiceHandler(ModuleManager moduleManager) { - this.inventoryService = moduleManager.find(CoreModule.NAME).provider().getService(IEndpointInventoryRegister.class); - } - - @Override public String pathSpec() { - return "/servicename/discovery"; - } - - @Override protected JsonElement doGet(HttpServletRequest req) throws ArgumentsParseException { - throw new UnsupportedOperationException(); - } - - @Override protected JsonElement doPost(HttpServletRequest req) throws ArgumentsParseException { - JsonArray responseArray = new JsonArray(); - try { - JsonArray services = gson.fromJson(req.getReader(), JsonArray.class); - for (JsonElement service : services) { - int applicationId = service.getAsJsonObject().get(APPLICATION_ID).getAsInt(); - String serviceName = service.getAsJsonObject().get(SERVICE_NAME).getAsString(); - int srcSpanType = service.getAsJsonObject().get(SRC_SPAN_TYPE).getAsInt(); - - SpanType spanType = SpanType.forNumber(srcSpanType); - if (Objects.nonNull(spanType)) { - int serviceId = inventoryService.getOrCreate(applicationId, serviceName, DetectPoint.fromSpanType(spanType)); - if (serviceId != 0) { - JsonObject responseJson = new JsonObject(); - responseJson.addProperty(SERVICE_ID, serviceId); - responseJson.add(ELEMENT, service); - responseArray.add(responseJson); - } - } - } - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - return responseArray; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ApplicationRegisterHandlerTestCase.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ApplicationRegisterHandlerTestCase.java deleted file mode 100644 index f2763bd211..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ApplicationRegisterHandlerTestCase.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5; - -import io.grpc.*; -import io.grpc.stub.MetadataUtils; -import org.apache.skywalking.apm.network.language.agent.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class ApplicationRegisterHandlerTestCase { - - private static final Logger logger = LoggerFactory.getLogger(ApplicationRegisterHandlerTestCase.class); - - public static void main(String[] args) { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext().build(); - - ApplicationRegisterServiceGrpc.ApplicationRegisterServiceBlockingStub stub = ApplicationRegisterServiceGrpc.newBlockingStub(channel); - - Metadata authHeader = new Metadata(); - authHeader.put(Metadata.Key.of("Authentication", Metadata.ASCII_STRING_MARSHALLER), "c4a4baabf931f2379bdfe53a450ecb89"); - stub = MetadataUtils.attachHeaders(stub, authHeader); - - Application.Builder application = Application.newBuilder(); - application.setApplicationCode("dubbox-consumer"); - - ApplicationMapping applicationMapping = stub.applicationCodeRegister(application.build()); - logger.info("application id: {}", applicationMapping.getApplication().getValue()); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceDiscoveryServiceHandlerTestCase.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceDiscoveryServiceHandlerTestCase.java deleted file mode 100644 index a4bbd2261c..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceDiscoveryServiceHandlerTestCase.java +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5; - -import io.grpc.*; -import org.apache.skywalking.apm.network.language.agent.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class InstanceDiscoveryServiceHandlerTestCase { - - private static final Logger logger = LoggerFactory.getLogger(InstanceDiscoveryServiceHandlerTestCase.class); - - public static void main(String[] args) { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext().build(); - - InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceBlockingStub stub = InstanceDiscoveryServiceGrpc.newBlockingStub(channel); - - ApplicationInstance.Builder applicationInstance = ApplicationInstance.newBuilder(); - applicationInstance.setApplicationId(1); - applicationInstance.setAgentUUID("Test"); - applicationInstance.setRegisterTime(System.currentTimeMillis()); - - OSInfo.Builder osInfo = OSInfo.newBuilder(); - osInfo.setOsName("mac os"); - osInfo.setHostname("pengys"); - osInfo.setProcessNo(1); - osInfo.addIpv4S("10.0.0.1"); - osInfo.addIpv4S("10.0.0.2"); - applicationInstance.setOsinfo(osInfo); - - ApplicationInstanceMapping instanceMapping = stub.registerInstance(applicationInstance.build()); - logger.info("application id: {}, application instance id: {}", instanceMapping.getApplicationId(), instanceMapping.getApplicationInstanceId()); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceHeartBeatTestCase.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceHeartBeatTestCase.java deleted file mode 100644 index 96d79f21de..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/InstanceHeartBeatTestCase.java +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5; - -import io.grpc.*; -import org.apache.skywalking.apm.network.language.agent.*; - -/** - * @author peng-yongsheng - */ -public class InstanceHeartBeatTestCase { - - public static void main(String[] args) { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext().build(); - - InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceBlockingStub stub = InstanceDiscoveryServiceGrpc.newBlockingStub(channel); - - ApplicationInstanceHeartbeat.Builder builder = ApplicationInstanceHeartbeat.newBuilder(); - builder.setApplicationInstanceId(2); - builder.setHeartbeatTime(System.currentTimeMillis() + 5 * 1000 * 60); - Downstream heartbeat = stub.heartbeat(builder.build()); - - builder.setApplicationInstanceId(3); - heartbeat = stub.heartbeat(builder.build()); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/NetworkAddressRegisterServiceHandlerTestCase.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/NetworkAddressRegisterServiceHandlerTestCase.java deleted file mode 100644 index 65add449b7..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/NetworkAddressRegisterServiceHandlerTestCase.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5; - -import io.grpc.*; -import org.apache.skywalking.apm.network.language.agent.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class NetworkAddressRegisterServiceHandlerTestCase { - - private static final Logger logger = LoggerFactory.getLogger(NetworkAddressRegisterServiceHandlerTestCase.class); - - public static void main(String[] args) { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext().build(); - - NetworkAddressRegisterServiceGrpc.NetworkAddressRegisterServiceBlockingStub stub = NetworkAddressRegisterServiceGrpc.newBlockingStub(channel); - - NetworkAddresses.Builder networkAddresses = NetworkAddresses.newBuilder(); - networkAddresses.addAddresses("127.0.0.1:8080"); - - NetworkAddressMappings addressMappings = stub.batchRegister(networkAddresses.build()); - - for (KeyWithIntegerValue value : addressMappings.getAddressIdsList()) { - logger.info("key: {}, value: {}", value.getKey(), value.getValue()); - } - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ServiceNameDiscoveryHandlerTestCase.java b/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ServiceNameDiscoveryHandlerTestCase.java deleted file mode 100644 index e74bb330f0..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-register-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v5/ServiceNameDiscoveryHandlerTestCase.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.register.provider.handler.v5; - -import io.grpc.*; -import org.apache.skywalking.apm.network.language.agent.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class ServiceNameDiscoveryHandlerTestCase { - - private static final Logger logger = LoggerFactory.getLogger(ServiceNameDiscoveryHandlerTestCase.class); - - public static void main(String[] args) { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext().build(); - ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceBlockingStub stub = ServiceNameDiscoveryServiceGrpc.newBlockingStub(channel); - - ServiceNameCollection.Builder serviceNameCollection = ServiceNameCollection.newBuilder(); - ServiceNameElement.Builder serviceNameElement = ServiceNameElement.newBuilder(); - serviceNameElement.setApplicationId(1); - serviceNameElement.setServiceName("org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"); - serviceNameElement.setSrcSpanType(SpanType.Entry); - serviceNameCollection.addElements(serviceNameElement); - - ServiceNameMappingCollection collection = stub.discovery(serviceNameCollection.build()); - - for (ServiceNameMappingElement element : collection.getElementsList()) { - logger.info("service id: {}", element.getServiceId()); - } - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java index 5df7956bec..7b1ab2ca62 100755 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/TraceModuleProvider.java @@ -22,7 +22,6 @@ import org.apache.skywalking.oap.server.configuration.api.ConfigurationModule; import org.apache.skywalking.oap.server.configuration.api.DynamicConfigurationService; import org.apache.skywalking.oap.server.core.CoreModule; import org.apache.skywalking.oap.server.core.server.GRPCHandlerRegister; -import org.apache.skywalking.oap.server.core.server.JettyHandlerRegister; import org.apache.skywalking.oap.server.library.module.ModuleConfig; import org.apache.skywalking.oap.server.library.module.ModuleDefine; import org.apache.skywalking.oap.server.library.module.ModuleProvider; @@ -30,11 +29,8 @@ import org.apache.skywalking.oap.server.library.module.ModuleStartException; import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedException; import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; import org.apache.skywalking.oap.server.receiver.trace.module.TraceModule; -import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.grpc.TraceSegmentServiceHandler; -import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.TraceSegmentServletHandler; import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v6.grpc.TraceSegmentReportServiceHandler; import org.apache.skywalking.oap.server.receiver.trace.provider.parser.ISegmentParserService; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.SegmentParse; import org.apache.skywalking.oap.server.receiver.trace.provider.parser.SegmentParseV2; import org.apache.skywalking.oap.server.receiver.trace.provider.parser.SegmentParserListenerManager; import org.apache.skywalking.oap.server.receiver.trace.provider.parser.SegmentParserServiceImpl; @@ -53,7 +49,6 @@ import java.io.IOException; public class TraceModuleProvider extends ModuleProvider { private final TraceServiceModuleConfig moduleConfig; - private SegmentParse.Producer segmentProducer; private SegmentParseV2.Producer segmentProducerV2; private DBLatencyThresholdsAndWatcher thresholds; private UninstrumentedGatewaysConfig uninstrumentedGatewaysConfig; @@ -82,7 +77,6 @@ public class TraceModuleProvider extends ModuleProvider { moduleConfig.setDbLatencyThresholdsAndWatcher(thresholds); moduleConfig.setUninstrumentedGatewaysConfig(uninstrumentedGatewaysConfig); - segmentProducer = new SegmentParse.Producer(getManager(), listenerManager(), moduleConfig); segmentProducerV2 = new SegmentParseV2.Producer(getManager(), listenerManager(), moduleConfig); this.registerServiceImplementation(ISegmentParserService.class, new SegmentParserServiceImpl(segmentProducerV2)); @@ -103,19 +97,13 @@ public class TraceModuleProvider extends ModuleProvider { @Override public void start() throws ModuleStartException { DynamicConfigurationService dynamicConfigurationService = getManager().find(ConfigurationModule.NAME).provider().getService(DynamicConfigurationService.class); GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(GRPCHandlerRegister.class); - JettyHandlerRegister jettyHandlerRegister = getManager().find(SharingServerModule.NAME).provider().getService(JettyHandlerRegister.class); try { dynamicConfigurationService.registerConfigChangeWatcher(thresholds); dynamicConfigurationService.registerConfigChangeWatcher(uninstrumentedGatewaysConfig); - grpcHandlerRegister.addHandler(new TraceSegmentServiceHandler(segmentProducer)); grpcHandlerRegister.addHandler(new TraceSegmentReportServiceHandler(segmentProducerV2, getManager())); - jettyHandlerRegister.addHandler(new TraceSegmentServletHandler(segmentProducer)); - SegmentStandardizationWorker standardizationWorker = new SegmentStandardizationWorker(getManager(), segmentProducer, moduleConfig.getBufferPath() + "v5", moduleConfig.getBufferOffsetMaxFileSize(), moduleConfig.getBufferDataMaxFileSize(), moduleConfig.isBufferFileCleanWhenRestart(), false); - segmentProducer.setStandardizationWorker(standardizationWorker); - - SegmentStandardizationWorker standardizationWorkerV2 = new SegmentStandardizationWorker(getManager(), segmentProducerV2, moduleConfig.getBufferPath(), moduleConfig.getBufferOffsetMaxFileSize(), moduleConfig.getBufferDataMaxFileSize(), moduleConfig.isBufferFileCleanWhenRestart(), true); + SegmentStandardizationWorker standardizationWorkerV2 = new SegmentStandardizationWorker(getManager(), segmentProducerV2, moduleConfig.getBufferPath(), moduleConfig.getBufferOffsetMaxFileSize(), moduleConfig.getBufferDataMaxFileSize(), moduleConfig.isBufferFileCleanWhenRestart()); segmentProducerV2.setStandardizationWorker(standardizationWorkerV2); } catch (IOException e) { throw new ModuleStartException(e.getMessage(), e); diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/SegmentCounter.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/SegmentCounter.java deleted file mode 100644 index e65030afd7..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/SegmentCounter.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.grpc; - -import java.util.concurrent.atomic.AtomicLong; - -/** - * @author peng-yongsheng - */ -public enum SegmentCounter { - INSTANCE; - - private final AtomicLong counter = new AtomicLong(0); - - public long incrementAndGet() { - return counter.incrementAndGet(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/TraceSegmentServiceHandler.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/TraceSegmentServiceHandler.java deleted file mode 100644 index cd4baa0737..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/grpc/TraceSegmentServiceHandler.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.grpc; - -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.SegmentParse; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class TraceSegmentServiceHandler extends TraceSegmentServiceGrpc.TraceSegmentServiceImplBase implements GRPCHandler { - - private static final Logger logger = LoggerFactory.getLogger(TraceSegmentServiceHandler.class); - - private final Boolean debug; - private final SegmentParse.Producer segmentProducer; - - public TraceSegmentServiceHandler(SegmentParse.Producer segmentProducer) { - this.debug = System.getProperty("debug") != null; - this.segmentProducer = segmentProducer; - } - - @Override public StreamObserver collect(StreamObserver responseObserver) { - return new StreamObserver() { - @Override public void onNext(UpstreamSegment segment) { - if (logger.isDebugEnabled()) { - logger.debug("receive segment"); - } - - segmentProducer.send(segment, SegmentParse.Source.Agent); - - if (debug) { - long count = SegmentCounter.INSTANCE.incrementAndGet(); - if (count % 100000 == 0) { - logger.info("received segment count: {}", count); - } - } - } - - @Override public void onError(Throwable throwable) { - logger.error(throwable.getMessage(), throwable); - responseObserver.onCompleted(); - } - - @Override public void onCompleted() { - responseObserver.onNext(Downstream.newBuilder().build()); - responseObserver.onCompleted(); - } - }; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/TraceSegmentServletHandler.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/TraceSegmentServletHandler.java deleted file mode 100644 index 6a3ecb959b..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/TraceSegmentServletHandler.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest; - -import com.google.gson.JsonElement; -import com.google.gson.stream.JsonReader; -import java.io.*; -import javax.servlet.http.HttpServletRequest; -import org.apache.skywalking.oap.server.library.server.jetty.JettyJsonHandler; -import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader.*; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.SegmentParse; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class TraceSegmentServletHandler extends JettyJsonHandler { - - private static final Logger logger = LoggerFactory.getLogger(TraceSegmentServletHandler.class); - - private final SegmentParse.Producer segmentProducer; - - public TraceSegmentServletHandler(SegmentParse.Producer segmentProducer) { - this.segmentProducer = segmentProducer; - } - - @Override public String pathSpec() { - return "/segments"; - } - - @Override protected JsonElement doGet(HttpServletRequest req) { - throw new UnsupportedOperationException(); - } - - @Override protected JsonElement doPost(HttpServletRequest req) { - if (logger.isDebugEnabled()) { - logger.debug("receive stream segment"); - } - - try { - BufferedReader bufferedReader = req.getReader(); - read(bufferedReader); - } catch (IOException e) { - logger.error(e.getMessage(), e); - } - - return null; - } - - private TraceSegmentJsonReader jsonReader = new TraceSegmentJsonReader(); - - private void read(BufferedReader bufferedReader) throws IOException { - JsonReader reader = new JsonReader(bufferedReader); - - reader.beginArray(); - while (reader.hasNext()) { - TraceSegment traceSegment = jsonReader.read(reader); - segmentProducer.send(traceSegment.getUpstreamSegment(), SegmentParse.Source.Agent); - } - reader.endArray(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/KeyWithStringValueJsonReader.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/KeyWithStringValueJsonReader.java deleted file mode 100644 index 95739b41fe..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/KeyWithStringValueJsonReader.java +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import org.apache.skywalking.apm.network.language.agent.KeyWithStringValue; - -/** - * @author peng-yongsheng - */ -public class KeyWithStringValueJsonReader implements StreamJsonReader { - - private static final String KEY = "k"; - private static final String VALUE = "v"; - - @Override public KeyWithStringValue read(JsonReader reader) throws IOException { - KeyWithStringValue.Builder builder = KeyWithStringValue.newBuilder(); - - reader.beginObject(); - while (reader.hasNext()) { - switch (reader.nextName()) { - case KEY: - builder.setKey(reader.nextString()); - break; - case VALUE: - builder.setValue(reader.nextString()); - break; - default: - reader.skipValue(); - break; - } - } - reader.endObject(); - - return builder.build(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/LogJsonReader.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/LogJsonReader.java deleted file mode 100644 index ddacc91ec7..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/LogJsonReader.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import org.apache.skywalking.apm.network.language.agent.LogMessage; - -/** - * @author peng-yongsheng - */ -public class LogJsonReader implements StreamJsonReader { - - private KeyWithStringValueJsonReader keyWithStringValueJsonReader = new KeyWithStringValueJsonReader(); - - private static final String TIME = "ti"; - private static final String LOG_DATA = "ld"; - - @Override public LogMessage read(JsonReader reader) throws IOException { - LogMessage.Builder builder = LogMessage.newBuilder(); - - reader.beginObject(); - while (reader.hasNext()) { - switch (reader.nextName()) { - case TIME: - builder.setTime(reader.nextLong()); - break; - case LOG_DATA: - reader.beginArray(); - while (reader.hasNext()) { - builder.addData(keyWithStringValueJsonReader.read(reader)); - } - reader.endArray(); - break; - default: - reader.skipValue(); - break; - } - } - reader.endObject(); - - return builder.build(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/ReferenceJsonReader.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/ReferenceJsonReader.java deleted file mode 100644 index 65c6b7ad56..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/ReferenceJsonReader.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentReference; - -/** - * @author peng-yongsheng - */ -public class ReferenceJsonReader implements StreamJsonReader { - - private UniqueIdJsonReader uniqueIdJsonReader = new UniqueIdJsonReader(); - - private static final String PARENT_TRACE_SEGMENT_ID = "pts"; - private static final String PARENT_APPLICATION_INSTANCE_ID = "pii"; - private static final String PARENT_SPAN_ID = "psp"; - private static final String PARENT_SERVICE_ID = "psi"; - private static final String PARENT_SERVICE_NAME = "psn"; - private static final String NETWORK_ADDRESS_ID = "ni"; - private static final String NETWORK_ADDRESS = "nn"; - private static final String ENTRY_APPLICATION_INSTANCE_ID = "eii"; - private static final String ENTRY_SERVICE_ID = "esi"; - private static final String ENTRY_SERVICE_NAME = "esn"; - private static final String REF_TYPE_VALUE = "rv"; - - @Override public TraceSegmentReference read(JsonReader reader) throws IOException { - TraceSegmentReference.Builder builder = TraceSegmentReference.newBuilder(); - - reader.beginObject(); - while (reader.hasNext()) { - switch (reader.nextName()) { - case PARENT_TRACE_SEGMENT_ID: - builder.setParentTraceSegmentId(uniqueIdJsonReader.read(reader)); - break; - case PARENT_APPLICATION_INSTANCE_ID: - builder.setParentApplicationInstanceId(reader.nextInt()); - break; - case PARENT_SPAN_ID: - builder.setParentSpanId(reader.nextInt()); - break; - case PARENT_SERVICE_ID: - builder.setParentServiceId(reader.nextInt()); - break; - case PARENT_SERVICE_NAME: - builder.setParentServiceName(reader.nextString()); - break; - case NETWORK_ADDRESS_ID: - builder.setNetworkAddressId(reader.nextInt()); - break; - case NETWORK_ADDRESS: - builder.setNetworkAddress(reader.nextString()); - break; - case ENTRY_APPLICATION_INSTANCE_ID: - builder.setEntryApplicationInstanceId(reader.nextInt()); - break; - case ENTRY_SERVICE_ID: - builder.setEntryServiceId(reader.nextInt()); - break; - case ENTRY_SERVICE_NAME: - builder.setEntryServiceName(reader.nextString()); - break; - case REF_TYPE_VALUE: - builder.setRefTypeValue(reader.nextInt()); - break; - default: - reader.skipValue(); - break; - } - } - reader.endObject(); - - return builder.build(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SegmentJsonReader.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SegmentJsonReader.java deleted file mode 100644 index eab2406be9..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SegmentJsonReader.java +++ /dev/null @@ -1,77 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentObject; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class SegmentJsonReader implements StreamJsonReader { - - private static final Logger logger = LoggerFactory.getLogger(SegmentJsonReader.class); - - private UniqueIdJsonReader uniqueIdJsonReader = new UniqueIdJsonReader(); - private SpanJsonReader spanJsonReader = new SpanJsonReader(); - - private static final String TRACE_SEGMENT_ID = "ts"; - private static final String APPLICATION_ID = "ai"; - private static final String APPLICATION_INSTANCE_ID = "ii"; - private static final String SPANS = "ss"; - - @Override public TraceSegmentObject.Builder read(JsonReader reader) throws IOException { - TraceSegmentObject.Builder builder = TraceSegmentObject.newBuilder(); - - reader.beginObject(); - while (reader.hasNext()) { - switch (reader.nextName()) { - case TRACE_SEGMENT_ID: - builder.setTraceSegmentId(uniqueIdJsonReader.read(reader)); - if (logger.isDebugEnabled()) { - StringBuilder segmentId = new StringBuilder(); - builder.getTraceSegmentId().getIdPartsList().forEach(idPart -> segmentId.append(idPart)); - logger.debug("segment id: {}", segmentId); - } - break; - case APPLICATION_ID: - builder.setApplicationId(reader.nextInt()); - break; - case APPLICATION_INSTANCE_ID: - builder.setApplicationInstanceId(reader.nextInt()); - break; - case SPANS: - reader.beginArray(); - while (reader.hasNext()) { - builder.addSpans(spanJsonReader.read(reader)); - } - reader.endArray(); - break; - default: - reader.skipValue(); - break; - } - } - reader.endObject(); - - return builder; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SpanJsonReader.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SpanJsonReader.java deleted file mode 100644 index ef9471fdaa..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/SpanJsonReader.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import org.apache.skywalking.apm.network.language.agent.SpanObject; - -/** - * @author peng-yongsheng - */ -public class SpanJsonReader implements StreamJsonReader { - - private KeyWithStringValueJsonReader keyWithStringValueJsonReader = new KeyWithStringValueJsonReader(); - private LogJsonReader logJsonReader = new LogJsonReader(); - private ReferenceJsonReader referenceJsonReader = new ReferenceJsonReader(); - - private static final String SPAN_ID = "si"; - private static final String SPAN_TYPE_VALUE = "tv"; - private static final String SPAN_LAYER_VALUE = "lv"; - private static final String PARENT_SPAN_ID = "ps"; - private static final String START_TIME = "st"; - private static final String END_TIME = "et"; - private static final String COMPONENT_ID = "ci"; - private static final String COMPONENT_NAME = "cn"; - private static final String OPERATION_NAME_ID = "oi"; - private static final String OPERATION_NAME = "on"; - private static final String PEER_ID = "pi"; - private static final String PEER = "pn"; - private static final String IS_ERROR = "ie"; - private static final String TRACE_SEGMENT_REFERENCE = "rs"; - private static final String TAGS = "to"; - private static final String LOGS = "lo"; - - @Override public SpanObject read(JsonReader reader) throws IOException { - SpanObject.Builder builder = SpanObject.newBuilder(); - - reader.beginObject(); - while (reader.hasNext()) { - switch (reader.nextName()) { - case SPAN_ID: - builder.setSpanId(reader.nextInt()); - break; - case SPAN_TYPE_VALUE: - builder.setSpanTypeValue(reader.nextInt()); - break; - case SPAN_LAYER_VALUE: - builder.setSpanLayerValue(reader.nextInt()); - break; - case PARENT_SPAN_ID: - builder.setParentSpanId(reader.nextInt()); - break; - case START_TIME: - builder.setStartTime(reader.nextLong()); - break; - case END_TIME: - builder.setEndTime(reader.nextLong()); - break; - case COMPONENT_ID: - builder.setComponentId(reader.nextInt()); - break; - case COMPONENT_NAME: - builder.setComponent(reader.nextString()); - break; - case OPERATION_NAME_ID: - builder.setOperationNameId(reader.nextInt()); - break; - case OPERATION_NAME: - builder.setOperationName(reader.nextString()); - break; - case PEER_ID: - builder.setPeerId(reader.nextInt()); - break; - case PEER: - builder.setPeer(reader.nextString()); - break; - case IS_ERROR: - builder.setIsError(reader.nextBoolean()); - break; - case TRACE_SEGMENT_REFERENCE: - reader.beginArray(); - while (reader.hasNext()) { - builder.addRefs(referenceJsonReader.read(reader)); - } - reader.endArray(); - break; - case TAGS: - reader.beginArray(); - while (reader.hasNext()) { - builder.addTags(keyWithStringValueJsonReader.read(reader)); - } - reader.endArray(); - break; - case LOGS: - reader.beginArray(); - while (reader.hasNext()) { - builder.addLogs(logJsonReader.read(reader)); - } - reader.endArray(); - break; - default: - reader.skipValue(); - break; - } - } - reader.endObject(); - - return builder.build(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegment.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegment.java deleted file mode 100644 index 4ca230b10f..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegment.java +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import org.apache.skywalking.apm.network.language.agent.*; - -/** - * @author peng-yongsheng - */ -public class TraceSegment { - - private UpstreamSegment.Builder builder; - - public TraceSegment() { - builder = UpstreamSegment.newBuilder(); - } - - public void addGlobalTraceId(UniqueId.Builder globalTraceId) { - builder.addGlobalTraceIds(globalTraceId); - } - - public void setTraceSegmentBuilder(TraceSegmentObject.Builder traceSegmentBuilder) { - builder.setSegment(traceSegmentBuilder.build().toByteString()); - } - - public UpstreamSegment getUpstreamSegment() { - return builder.build(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegmentJsonReader.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegmentJsonReader.java deleted file mode 100644 index 26e2358a47..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/TraceSegmentJsonReader.java +++ /dev/null @@ -1,64 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class TraceSegmentJsonReader implements StreamJsonReader { - - private static final Logger logger = LoggerFactory.getLogger(TraceSegmentJsonReader.class); - - private UniqueIdJsonReader uniqueIdJsonReader = new UniqueIdJsonReader(); - private SegmentJsonReader segmentJsonReader = new SegmentJsonReader(); - - private static final String GLOBAL_TRACE_IDS = "gt"; - private static final String SEGMENT = "sg"; - - @Override public TraceSegment read(JsonReader reader) throws IOException { - TraceSegment traceSegment = new TraceSegment(); - - reader.beginObject(); - while (reader.hasNext()) { - switch (reader.nextName()) { - case GLOBAL_TRACE_IDS: - reader.beginArray(); - while (reader.hasNext()) { - traceSegment.addGlobalTraceId(uniqueIdJsonReader.read(reader)); - } - reader.endArray(); - - break; - case SEGMENT: - traceSegment.setTraceSegmentBuilder(segmentJsonReader.read(reader)); - break; - default: - reader.skipValue(); - break; - } - } - reader.endObject(); - - return traceSegment; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/UniqueIdJsonReader.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/UniqueIdJsonReader.java deleted file mode 100644 index 43465eba08..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v5/rest/reader/UniqueIdJsonReader.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.handler.v5.rest.reader; - -import com.google.gson.stream.JsonReader; -import java.io.IOException; -import org.apache.skywalking.apm.network.language.agent.UniqueId; - -/** - * @author peng-yongsheng - */ -public class UniqueIdJsonReader implements StreamJsonReader { - - @Override public UniqueId.Builder read(JsonReader reader) throws IOException { - UniqueId.Builder builder = UniqueId.newBuilder(); - - reader.beginArray(); - while (reader.hasNext()) { - builder.addIdParts(reader.nextLong()); - } - reader.endArray(); - return builder; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParse.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParse.java deleted file mode 100644 index 1b527bcaba..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParse.java +++ /dev/null @@ -1,284 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.provider.parser; - -import com.google.protobuf.InvalidProtocolBufferException; -import java.util.*; -import lombok.Setter; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.oap.server.library.buffer.*; -import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; -import org.apache.skywalking.oap.server.receiver.trace.provider.TraceServiceModuleConfig; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.*; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.*; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.standardization.*; -import org.apache.skywalking.oap.server.telemetry.TelemetryModule; -import org.apache.skywalking.oap.server.telemetry.api.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -public class SegmentParse { - - private static final Logger logger = LoggerFactory.getLogger(SegmentParse.class); - - private final ModuleManager moduleManager; - private final List spanListeners; - private final SegmentParserListenerManager listenerManager; - private final SegmentCoreInfo segmentCoreInfo; - private final TraceServiceModuleConfig config; - @Setter private SegmentStandardizationWorker standardizationWorker; - private volatile static CounterMetrics TRACE_BUFFER_FILE_RETRY; - private volatile static CounterMetrics TRACE_BUFFER_FILE_OUT; - private volatile static CounterMetrics TRACE_PARSE_ERROR; - - private SegmentParse(ModuleManager moduleManager, SegmentParserListenerManager listenerManager, - TraceServiceModuleConfig config) { - this.moduleManager = moduleManager; - this.listenerManager = listenerManager; - this.spanListeners = new LinkedList<>(); - this.segmentCoreInfo = new SegmentCoreInfo(); - this.segmentCoreInfo.setStartTime(Long.MAX_VALUE); - this.segmentCoreInfo.setEndTime(Long.MIN_VALUE); - this.segmentCoreInfo.setV2(false); - this.config = config; - - MetricsCreator metricsCreator = moduleManager.find(TelemetryModule.NAME).provider().getService(MetricsCreator.class); - TRACE_BUFFER_FILE_RETRY = metricsCreator.createCounter("v5_trace_buffer_file_retry", "The number of retry trace segment from the buffer file, but haven't registered successfully.", - MetricsTag.EMPTY_KEY, MetricsTag.EMPTY_VALUE); - TRACE_BUFFER_FILE_OUT = metricsCreator.createCounter("v5_trace_buffer_file_out", "The number of trace segment out of the buffer file", - MetricsTag.EMPTY_KEY, MetricsTag.EMPTY_VALUE); - TRACE_PARSE_ERROR = metricsCreator.createCounter("v5_trace_parse_error", "The number of trace segment out of the buffer file", - MetricsTag.EMPTY_KEY, MetricsTag.EMPTY_VALUE); - } - - public boolean parse(BufferData bufferData, Source source) { - createSpanListeners(); - - try { - UpstreamSegment upstreamSegment = bufferData.getMessageType(); - List traceIds = upstreamSegment.getGlobalTraceIdsList(); - - if (bufferData.getV1Segment() == null) { - bufferData.setV1Segment(parseBinarySegment(upstreamSegment)); - } - TraceSegmentObject segmentObject = bufferData.getV1Segment(); - - SegmentDecorator segmentDecorator = new SegmentDecorator(segmentObject); - - if (!preBuild(traceIds, segmentDecorator)) { - if (logger.isDebugEnabled()) { - logger.debug("This segment id exchange not success, write to buffer file, id: {}", segmentCoreInfo.getSegmentId()); - } - - if (source.equals(Source.Agent)) { - writeToBufferFile(segmentCoreInfo.getSegmentId(), upstreamSegment); - } else { - // from SegmentSource.Buffer - TRACE_BUFFER_FILE_RETRY.inc(); - } - return false; - } else { - if (logger.isDebugEnabled()) { - logger.debug("This segment id exchange success, id: {}", segmentCoreInfo.getSegmentId()); - } - TRACE_BUFFER_FILE_OUT.inc(); - notifyListenerToBuild(); - return true; - } - } catch (Throwable e) { - TRACE_PARSE_ERROR.inc(); - logger.error(e.getMessage(), e); - return true; - } - } - - private TraceSegmentObject parseBinarySegment(UpstreamSegment segment) throws InvalidProtocolBufferException { - return TraceSegmentObject.parseFrom(segment.getSegment()); - } - - private boolean preBuild(List traceIds, SegmentDecorator segmentDecorator) { - StringBuilder segmentIdBuilder = new StringBuilder(); - - for (int i = 0; i < segmentDecorator.getTraceSegmentId().getIdPartsList().size(); i++) { - if (i == 0) { - segmentIdBuilder.append(segmentDecorator.getTraceSegmentId().getIdPartsList().get(i)); - } else { - segmentIdBuilder.append(".").append(segmentDecorator.getTraceSegmentId().getIdPartsList().get(i)); - } - } - - for (UniqueId uniqueId : traceIds) { - notifyGlobalsListener(uniqueId); - } - - segmentCoreInfo.setSegmentId(segmentIdBuilder.toString()); - segmentCoreInfo.setServiceId(segmentDecorator.getServiceId()); - segmentCoreInfo.setServiceInstanceId(segmentDecorator.getServiceInstanceId()); - segmentCoreInfo.setDataBinary(segmentDecorator.toByteArray()); - segmentCoreInfo.setV2(false); - - boolean exchanged = true; - - for (int i = 0; i < segmentDecorator.getSpansCount(); i++) { - SpanDecorator spanDecorator = segmentDecorator.getSpans(i); - - if (!SpanExchanger.getInstance(moduleManager).exchange(spanDecorator, segmentCoreInfo.getServiceId())) { - exchanged = false; - } else { - for (int j = 0; j < spanDecorator.getRefsCount(); j++) { - ReferenceDecorator referenceDecorator = spanDecorator.getRefs(j); - if (!ReferenceIdExchanger.getInstance(moduleManager).exchange(referenceDecorator, segmentCoreInfo.getServiceId())) { - exchanged = false; - } - } - } - - if (segmentCoreInfo.getStartTime() > spanDecorator.getStartTime()) { - segmentCoreInfo.setStartTime(spanDecorator.getStartTime()); - } - if (segmentCoreInfo.getEndTime() < spanDecorator.getEndTime()) { - segmentCoreInfo.setEndTime(spanDecorator.getEndTime()); - } - segmentCoreInfo.setError(spanDecorator.getIsError() || segmentCoreInfo.isError()); - } - - if (exchanged) { - long minuteTimeBucket = TimeBucket.getMinuteTimeBucket(segmentCoreInfo.getStartTime()); - segmentCoreInfo.setMinuteTimeBucket(minuteTimeBucket); - - for (int i = 0; i < segmentDecorator.getSpansCount(); i++) { - SpanDecorator spanDecorator = segmentDecorator.getSpans(i); - - if (spanDecorator.getSpanId() == 0) { - notifyFirstListener(spanDecorator); - } - - if (SpanType.Exit.equals(spanDecorator.getSpanType())) { - notifyExitListener(spanDecorator); - } else if (SpanType.Entry.equals(spanDecorator.getSpanType())) { - notifyEntryListener(spanDecorator); - } else if (SpanType.Local.equals(spanDecorator.getSpanType())) { - notifyLocalListener(spanDecorator); - } else { - logger.error("span type value was unexpected, span type name: {}", spanDecorator.getSpanType().name()); - } - } - } - - return exchanged; - } - - private void writeToBufferFile(String id, UpstreamSegment upstreamSegment) { - if (logger.isDebugEnabled()) { - logger.debug("push to segment buffer write worker, id: {}", id); - } - - SegmentStandardization standardization = new SegmentStandardization(id); - standardization.setUpstreamSegment(upstreamSegment); - - standardizationWorker.in(standardization); - } - - private void notifyListenerToBuild() { - spanListeners.forEach(SpanListener::build); - } - - private void notifyExitListener(SpanDecorator spanDecorator) { - spanListeners.forEach(listener -> { - if (listener.containsPoint(SpanListener.Point.Exit)) { - ((ExitSpanListener)listener).parseExit(spanDecorator, segmentCoreInfo); - } - }); - } - - private void notifyEntryListener(SpanDecorator spanDecorator) { - spanListeners.forEach(listener -> { - if (listener.containsPoint(SpanListener.Point.Entry)) { - ((EntrySpanListener)listener).parseEntry(spanDecorator, segmentCoreInfo); - } - }); - } - - private void notifyLocalListener(SpanDecorator spanDecorator) { - spanListeners.forEach(listener -> { - if (listener.containsPoint(SpanListener.Point.Local)) { - ((LocalSpanListener)listener).parseLocal(spanDecorator, segmentCoreInfo); - } - }); - } - - private void notifyFirstListener(SpanDecorator spanDecorator) { - spanListeners.forEach(listener -> { - if (listener.containsPoint(SpanListener.Point.First)) { - ((FirstSpanListener)listener).parseFirst(spanDecorator, segmentCoreInfo); - } - }); - } - - private void notifyGlobalsListener(UniqueId uniqueId) { - spanListeners.forEach(listener -> { - if (listener.containsPoint(SpanListener.Point.TraceIds)) { - ((GlobalTraceIdsListener)listener).parseGlobalTraceId(uniqueId, segmentCoreInfo); - } - }); - } - - private void createSpanListeners() { - listenerManager.getSpanListenerFactories().forEach(spanListenerFactory -> spanListeners.add(spanListenerFactory.create(moduleManager, config))); - } - - public enum Source { - Agent, Buffer - } - - public static class Producer implements DataStreamReader.CallBack { - - @Setter private SegmentStandardizationWorker standardizationWorker; - private final ModuleManager moduleManager; - private final SegmentParserListenerManager listenerManager; - private final TraceServiceModuleConfig config; - - public Producer(ModuleManager moduleManager, SegmentParserListenerManager listenerManager, - TraceServiceModuleConfig config) { - this.moduleManager = moduleManager; - this.listenerManager = listenerManager; - this.config = config; - } - - public void send(UpstreamSegment segment, Source source) { - SegmentParse segmentParse = new SegmentParse(moduleManager, listenerManager, config); - segmentParse.setStandardizationWorker(standardizationWorker); - segmentParse.parse(new BufferData<>(segment), source); - } - - @Override public boolean call(BufferData bufferData) { - SegmentParse segmentParse = new SegmentParse(moduleManager, listenerManager, config); - segmentParse.setStandardizationWorker(standardizationWorker); - boolean parseResult = segmentParse.parse(bufferData, Source.Buffer); - if (parseResult) { - TRACE_BUFFER_FILE_OUT.inc(); - } - - return parseResult; - } - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParseV2.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParseV2.java index 583301bbe1..097efaa576 100755 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParseV2.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParseV2.java @@ -19,22 +19,42 @@ package org.apache.skywalking.oap.server.receiver.trace.provider.parser; import com.google.protobuf.InvalidProtocolBufferException; -import java.util.*; +import java.util.LinkedList; +import java.util.List; +import java.util.stream.Collectors; import lombok.Setter; -import org.apache.skywalking.apm.network.language.agent.*; +import org.apache.skywalking.apm.network.ProtocolVersion; +import org.apache.skywalking.apm.network.language.agent.SpanType; +import org.apache.skywalking.apm.network.language.agent.UniqueId; +import org.apache.skywalking.apm.network.language.agent.UpstreamSegment; import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject; import org.apache.skywalking.oap.server.core.CoreModule; +import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.core.cache.ServiceInstanceInventoryCache; -import org.apache.skywalking.oap.server.library.buffer.*; +import org.apache.skywalking.oap.server.library.buffer.BufferData; +import org.apache.skywalking.oap.server.library.buffer.DataStreamReader; import org.apache.skywalking.oap.server.library.module.ModuleManager; -import org.apache.skywalking.oap.server.core.analysis.TimeBucket; import org.apache.skywalking.oap.server.receiver.trace.provider.TraceServiceModuleConfig; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.*; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.*; -import org.apache.skywalking.oap.server.receiver.trace.provider.parser.standardization.*; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.ReferenceDecorator; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.SegmentCoreInfo; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.SegmentDecorator; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator.SpanDecorator; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.EntrySpanListener; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.ExitSpanListener; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.FirstSpanListener; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.GlobalTraceIdsListener; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.LocalSpanListener; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.SpanListener; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.standardization.ReferenceIdExchanger; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.standardization.SegmentStandardization; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.standardization.SegmentStandardizationWorker; +import org.apache.skywalking.oap.server.receiver.trace.provider.parser.standardization.SpanExchanger; import org.apache.skywalking.oap.server.telemetry.TelemetryModule; -import org.apache.skywalking.oap.server.telemetry.api.*; -import org.slf4j.*; +import org.apache.skywalking.oap.server.telemetry.api.CounterMetrics; +import org.apache.skywalking.oap.server.telemetry.api.MetricsCreator; +import org.apache.skywalking.oap.server.telemetry.api.MetricsTag; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * SegmentParseV2 is a replication of SegmentParse, but be compatible with v2 trace protocol. @@ -63,7 +83,7 @@ public class SegmentParseV2 { this.segmentCoreInfo = new SegmentCoreInfo(); this.segmentCoreInfo.setStartTime(Long.MAX_VALUE); this.segmentCoreInfo.setEndTime(Long.MIN_VALUE); - this.segmentCoreInfo.setV2(true); + this.segmentCoreInfo.setVersion(ProtocolVersion.V2); this.config = config; if (TRACE_BUFFER_FILE_RETRY == null) { @@ -133,25 +153,16 @@ public class SegmentParseV2 { } private boolean preBuild(List traceIds, SegmentDecorator segmentDecorator) { - StringBuilder segmentIdBuilder = new StringBuilder(); - - for (int i = 0; i < segmentDecorator.getTraceSegmentId().getIdPartsList().size(); i++) { - if (i == 0) { - segmentIdBuilder.append(segmentDecorator.getTraceSegmentId().getIdPartsList().get(i)); - } else { - segmentIdBuilder.append(".").append(segmentDecorator.getTraceSegmentId().getIdPartsList().get(i)); - } - } - for (UniqueId uniqueId : traceIds) { notifyGlobalsListener(uniqueId); } - segmentCoreInfo.setSegmentId(segmentIdBuilder.toString()); + final String segmentId = segmentDecorator.getTraceSegmentId().getIdPartsList().stream().map(String::valueOf).collect(Collectors.joining(".")); + segmentCoreInfo.setSegmentId(segmentId); segmentCoreInfo.setServiceId(segmentDecorator.getServiceId()); segmentCoreInfo.setServiceInstanceId(segmentDecorator.getServiceInstanceId()); segmentCoreInfo.setDataBinary(segmentDecorator.toByteArray()); - segmentCoreInfo.setV2(true); + segmentCoreInfo.setVersion(ProtocolVersion.V2); boolean exchanged = true; diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParserListenerManager.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParserListenerManager.java index 36a80a467f..24dc6d62e6 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParserListenerManager.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/SegmentParserListenerManager.java @@ -27,7 +27,7 @@ import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener. */ public class SegmentParserListenerManager implements ISegmentParserListenerManager { - private List spanListenerFactories; + private final List spanListenerFactories; public SegmentParserListenerManager() { this.spanListenerFactories = new LinkedList<>(); diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/ReferenceDecorator.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/ReferenceDecorator.java index 591a570956..81ea5d4459 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/ReferenceDecorator.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/ReferenceDecorator.java @@ -18,9 +18,6 @@ package org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator; -import org.apache.skywalking.apm.network.language.agent.RefType; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentReference; -import org.apache.skywalking.apm.network.language.agent.UniqueId; import org.apache.skywalking.apm.network.language.agent.v2.SegmentReference; /** @@ -29,60 +26,26 @@ import org.apache.skywalking.apm.network.language.agent.v2.SegmentReference; public class ReferenceDecorator implements StandardBuilder { private boolean isOrigin = true; - private StandardBuilder standardBuilder; - private TraceSegmentReference referenceObject; - private TraceSegmentReference.Builder referenceBuilder; - private final boolean isV2; + private final StandardBuilder standardBuilder; private SegmentReference referenceObjectV2; private SegmentReference.Builder referenceBuilderV2; - public ReferenceDecorator(TraceSegmentReference referenceObject, StandardBuilder standardBuilder) { - this.referenceObject = referenceObject; - this.standardBuilder = standardBuilder; - isV2 = false; - } - - public ReferenceDecorator(TraceSegmentReference.Builder referenceBuilder, StandardBuilder standardBuilder) { - this.referenceBuilder = referenceBuilder; - this.standardBuilder = standardBuilder; - this.isOrigin = false; - isV2 = false; - } - public ReferenceDecorator(SegmentReference referenceObject, StandardBuilder standardBuilder) { this.referenceObjectV2 = referenceObject; this.standardBuilder = standardBuilder; - isV2 = true; } public ReferenceDecorator(SegmentReference.Builder referenceBuilder, StandardBuilder standardBuilder) { this.referenceBuilderV2 = referenceBuilder; this.standardBuilder = standardBuilder; this.isOrigin = false; - isV2 = true; - } - - public RefType getRefType() { - if (isOrigin) { - return isV2 ? referenceObjectV2.getRefType() : referenceObject.getRefType(); - } else { - return isV2 ? referenceBuilderV2.getRefType() : referenceBuilder.getRefType(); - } - } - - public int getRefTypeValue() { - if (isOrigin) { - return isV2 ? referenceObjectV2.getRefTypeValue() : referenceObject.getRefTypeValue(); - } else { - return isV2 ? referenceBuilderV2.getRefTypeValue() : referenceBuilder.getRefTypeValue(); - } } public int getEntryEndpointId() { if (isOrigin) { - return isV2 ? referenceObjectV2.getEntryEndpointId() : referenceObject.getEntryServiceId(); + return referenceObjectV2.getEntryEndpointId(); } else { - return isV2 ? referenceBuilderV2.getEntryEndpointId() : referenceBuilder.getEntryServiceId(); + return referenceBuilderV2.getEntryEndpointId(); } } @@ -90,18 +53,14 @@ public class ReferenceDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - referenceBuilderV2.setEntryEndpointId(value); - } else { - referenceBuilder.setEntryServiceId(value); - } + referenceBuilderV2.setEntryEndpointId(value); } public String getEntryEndpointName() { if (isOrigin) { - return isV2 ? referenceObjectV2.getEntryEndpoint() : referenceObject.getEntryServiceName(); + return referenceObjectV2.getEntryEndpoint(); } else { - return isV2 ? referenceBuilderV2.getEntryEndpoint() : referenceBuilder.getEntryServiceName(); + return referenceBuilderV2.getEntryEndpoint(); } } @@ -109,34 +68,30 @@ public class ReferenceDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - referenceBuilderV2.setEntryEndpoint(value); - } else { - referenceBuilder.setEntryServiceName(value); - } + referenceBuilderV2.setEntryEndpoint(value); } public int getEntryServiceInstanceId() { if (isOrigin) { - return isV2 ? referenceObjectV2.getEntryServiceInstanceId() : referenceObject.getEntryApplicationInstanceId(); + return referenceObjectV2.getEntryServiceInstanceId(); } else { - return isV2 ? referenceBuilderV2.getEntryServiceInstanceId() : referenceBuilder.getEntryApplicationInstanceId(); + return referenceBuilderV2.getEntryServiceInstanceId(); } } public int getParentServiceInstanceId() { if (isOrigin) { - return isV2 ? referenceObjectV2.getParentServiceInstanceId() : referenceObject.getParentApplicationInstanceId(); + return referenceObjectV2.getParentServiceInstanceId(); } else { - return isV2 ? referenceBuilderV2.getParentServiceInstanceId() : referenceBuilder.getParentApplicationInstanceId(); + return referenceBuilderV2.getParentServiceInstanceId(); } } public int getParentEndpointId() { if (isOrigin) { - return isV2 ? referenceObjectV2.getParentEndpointId() : referenceObject.getParentServiceId(); + return referenceObjectV2.getParentEndpointId(); } else { - return isV2 ? referenceBuilderV2.getParentEndpointId() : referenceBuilder.getParentServiceId(); + return referenceBuilderV2.getParentEndpointId(); } } @@ -144,26 +99,14 @@ public class ReferenceDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - referenceBuilderV2.setParentEndpointId(value); - } else { - referenceBuilder.setParentServiceId(value); - } - } - - public int getParentSpanId() { - if (isOrigin) { - return isV2 ? referenceObjectV2.getParentSpanId() : referenceObject.getParentSpanId(); - } else { - return isV2 ? referenceBuilderV2.getParentSpanId() : referenceBuilder.getParentSpanId(); - } + referenceBuilderV2.setParentEndpointId(value); } public String getParentEndpointName() { if (isOrigin) { - return isV2 ? referenceObjectV2.getParentEndpoint() : referenceObject.getParentServiceName(); + return referenceObjectV2.getParentEndpoint(); } else { - return isV2 ? referenceBuilderV2.getParentEndpoint() : referenceBuilder.getParentServiceName(); + return referenceBuilderV2.getParentEndpoint(); } } @@ -171,26 +114,14 @@ public class ReferenceDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - referenceBuilderV2.setParentEndpoint(value); - } else { - referenceBuilder.setParentServiceName(value); - } - } - - public UniqueId getParentTraceSegmentId() { - if (isOrigin) { - return isV2 ? referenceObjectV2.getParentTraceSegmentId() : referenceObject.getParentTraceSegmentId(); - } else { - return isV2 ? referenceBuilderV2.getParentTraceSegmentId() : referenceBuilder.getParentTraceSegmentId(); - } + referenceBuilderV2.setParentEndpoint(value); } public int getNetworkAddressId() { if (isOrigin) { - return isV2 ? referenceObjectV2.getNetworkAddressId() : referenceObject.getNetworkAddressId(); + return referenceObjectV2.getNetworkAddressId(); } else { - return isV2 ? referenceBuilderV2.getNetworkAddressId() : referenceBuilder.getNetworkAddressId(); + return referenceBuilderV2.getNetworkAddressId(); } } @@ -198,18 +129,14 @@ public class ReferenceDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - referenceBuilderV2.setNetworkAddressId(value); - } else { - referenceBuilder.setNetworkAddressId(value); - } + referenceBuilderV2.setNetworkAddressId(value); } public String getNetworkAddress() { if (isOrigin) { - return isV2 ? referenceObjectV2.getNetworkAddress() : referenceObject.getNetworkAddress(); + return referenceObjectV2.getNetworkAddress(); } else { - return isV2 ? referenceBuilderV2.getNetworkAddress() : referenceBuilder.getNetworkAddress(); + return referenceBuilderV2.getNetworkAddress(); } } @@ -217,21 +144,13 @@ public class ReferenceDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - referenceBuilderV2.setNetworkAddress(value); - } else { - referenceBuilder.setNetworkAddress(value); - } + referenceBuilderV2.setNetworkAddress(value); } @Override public void toBuilder() { if (this.isOrigin) { this.isOrigin = false; - if (isV2) { - referenceBuilderV2 = referenceObjectV2.toBuilder(); - } else { - referenceBuilder = referenceObject.toBuilder(); - } + referenceBuilderV2 = referenceObjectV2.toBuilder(); standardBuilder.toBuilder(); } } diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentCoreInfo.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentCoreInfo.java index d78bea8581..fcb960f76c 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentCoreInfo.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentCoreInfo.java @@ -19,6 +19,7 @@ package org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator; import lombok.*; +import org.apache.skywalking.apm.network.ProtocolVersion; /** * @author peng-yongsheng @@ -34,5 +35,5 @@ public class SegmentCoreInfo { private boolean isError; private long minuteTimeBucket; private byte[] dataBinary; - private boolean isV2; + private ProtocolVersion version; } diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentDecorator.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentDecorator.java index 061d5bdd8b..7cd7ea4221 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentDecorator.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SegmentDecorator.java @@ -18,7 +18,6 @@ package org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator; -import org.apache.skywalking.apm.network.language.agent.TraceSegmentObject; import org.apache.skywalking.apm.network.language.agent.UniqueId; import org.apache.skywalking.apm.network.language.agent.v2.SegmentObject; @@ -29,78 +28,50 @@ import static java.util.Objects.isNull; */ public class SegmentDecorator implements StandardBuilder { private boolean isOrigin = true; - private final TraceSegmentObject segmentObject; - private TraceSegmentObject.Builder segmentBuilder; - private final boolean isV2; private final SegmentObject segmentObjectV2; private SegmentObject.Builder segmentBuilderV2; private final SpanDecorator[] spanDecorators; - public SegmentDecorator(TraceSegmentObject segmentObject) { - this.segmentObject = segmentObject; - this.segmentObjectV2 = null; - this.spanDecorators = new SpanDecorator[segmentObject.getSpansCount()]; - isV2 = false; - } - public SegmentDecorator(SegmentObject segmentObjectV2) { this.segmentObjectV2 = segmentObjectV2; - this.segmentObject = null; this.spanDecorators = new SpanDecorator[segmentObjectV2.getSpansCount()]; - isV2 = true; } public int getServiceId() { - return isV2 ? segmentObjectV2.getServiceId() : segmentObject.getApplicationId(); + return segmentObjectV2.getServiceId(); } public int getServiceInstanceId() { - return isV2 ? segmentObjectV2.getServiceInstanceId() : segmentObject.getApplicationInstanceId(); + return segmentObjectV2.getServiceInstanceId(); } public UniqueId getTraceSegmentId() { - return isV2 ? segmentObjectV2.getTraceSegmentId() : segmentObject.getTraceSegmentId(); + return segmentObjectV2.getTraceSegmentId(); } public int getSpansCount() { - return isV2 ? segmentObjectV2.getSpansCount() : segmentObject.getSpansCount(); + return segmentObjectV2.getSpansCount(); } public SpanDecorator getSpans(int index) { if (isNull(spanDecorators[index])) { if (isOrigin) { - if (isV2) { - spanDecorators[index] = new SpanDecorator(segmentObjectV2.getSpans(index), this); - } else { - spanDecorators[index] = new SpanDecorator(segmentObject.getSpans(index), this); - } + spanDecorators[index] = new SpanDecorator(segmentObjectV2.getSpans(index), this); } else { - if (isV2) { - spanDecorators[index] = new SpanDecorator(segmentBuilderV2.getSpansBuilder(index), this); - } else { - spanDecorators[index] = new SpanDecorator(segmentBuilder.getSpansBuilder(index), this); - } + spanDecorators[index] = new SpanDecorator(segmentBuilderV2.getSpansBuilder(index), this); } } return spanDecorators[index]; } public byte[] toByteArray() { - if (isOrigin) { - return isV2 ? segmentObjectV2.toByteArray() : segmentObject.toByteArray(); - } else { - return segmentBuilder.build().toByteArray(); - } + return segmentObjectV2.toByteArray(); } @Override public void toBuilder() { if (isOrigin) { this.isOrigin = false; - if (isV2) { - this.segmentBuilderV2 = segmentObjectV2.toBuilder(); - } else { - this.segmentBuilder = segmentObject.toBuilder(); - } + this.segmentBuilderV2 = segmentObjectV2.toBuilder(); } } } diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SpanDecorator.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SpanDecorator.java index 76fefa6f1c..7c291dd514 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SpanDecorator.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/decorator/SpanDecorator.java @@ -18,9 +18,10 @@ package org.apache.skywalking.oap.server.receiver.trace.provider.parser.decorator; -import java.util.*; +import java.util.List; import org.apache.skywalking.apm.network.common.KeyStringValuePair; -import org.apache.skywalking.apm.network.language.agent.*; +import org.apache.skywalking.apm.network.language.agent.SpanLayer; +import org.apache.skywalking.apm.network.language.agent.SpanType; import org.apache.skywalking.apm.network.language.agent.v2.SpanObjectV2; import static java.util.Objects.isNull; @@ -29,35 +30,16 @@ import static java.util.Objects.isNull; * @author peng-yongsheng */ public class SpanDecorator implements StandardBuilder { - private final boolean isV2; private boolean isOrigin = true; - private StandardBuilder standardBuilder; - private SpanObject spanObject; + private final StandardBuilder standardBuilder; private SpanObjectV2 spanObjectV2; - private SpanObject.Builder spanBuilder; private SpanObjectV2.Builder spanBuilderV2; private final ReferenceDecorator[] referenceDecorators; - public SpanDecorator(SpanObject spanObject, StandardBuilder standardBuilder) { - this.spanObject = spanObject; - this.standardBuilder = standardBuilder; - this.referenceDecorators = new ReferenceDecorator[spanObject.getRefsCount()]; - this.isV2 = false; - } - - public SpanDecorator(SpanObject.Builder spanBuilder, StandardBuilder standardBuilder) { - this.spanBuilder = spanBuilder; - this.standardBuilder = standardBuilder; - this.isOrigin = false; - this.referenceDecorators = new ReferenceDecorator[spanBuilder.getRefsCount()]; - this.isV2 = false; - } - public SpanDecorator(SpanObjectV2 spanObject, StandardBuilder standardBuilder) { this.spanObjectV2 = spanObject; this.standardBuilder = standardBuilder; this.referenceDecorators = new ReferenceDecorator[spanObject.getRefsCount()]; - this.isV2 = true; } public SpanDecorator(SpanObjectV2.Builder spanBuilder, StandardBuilder standardBuilder) { @@ -65,78 +47,61 @@ public class SpanDecorator implements StandardBuilder { this.standardBuilder = standardBuilder; this.isOrigin = false; this.referenceDecorators = new ReferenceDecorator[spanBuilder.getRefsCount()]; - this.isV2 = true; } public int getSpanId() { if (isOrigin) { - return isV2 ? spanObjectV2.getSpanId() : spanObject.getSpanId(); + return spanObjectV2.getSpanId(); } else { - return isV2 ? spanBuilderV2.getSpanId() : spanBuilder.getSpanId(); - } - } - - public int getParentSpanId() { - if (isOrigin) { - return isV2 ? spanObjectV2.getParentSpanId() : spanObject.getParentSpanId(); - } else { - return isV2 ? spanBuilderV2.getParentSpanId() : spanBuilder.getParentSpanId(); + return spanBuilderV2.getSpanId(); } } public SpanType getSpanType() { if (isOrigin) { - return isV2 ? spanObjectV2.getSpanType() : spanObject.getSpanType(); + return spanObjectV2.getSpanType(); } else { - return isV2 ? spanBuilderV2.getSpanType() : spanBuilder.getSpanType(); - } - } - - public int getSpanTypeValue() { - if (isOrigin) { - return isV2 ? spanObjectV2.getSpanTypeValue() : spanObject.getSpanTypeValue(); - } else { - return isV2 ? spanBuilderV2.getSpanTypeValue() : spanBuilder.getSpanTypeValue(); + return spanBuilderV2.getSpanType(); } } public SpanLayer getSpanLayer() { if (isOrigin) { - return isV2 ? spanObjectV2.getSpanLayer() : spanObject.getSpanLayer(); + return spanObjectV2.getSpanLayer(); } else { - return isV2 ? spanBuilderV2.getSpanLayer() : spanBuilder.getSpanLayer(); + return spanBuilderV2.getSpanLayer(); } } public int getSpanLayerValue() { if (isOrigin) { - return isV2 ? spanObjectV2.getSpanLayerValue() : spanObject.getSpanLayerValue(); + return spanObjectV2.getSpanLayerValue(); } else { - return isV2 ? spanBuilderV2.getSpanLayerValue() : spanBuilder.getSpanLayerValue(); + return spanBuilderV2.getSpanLayerValue(); } } public long getStartTime() { if (isOrigin) { - return isV2 ? spanObjectV2.getStartTime() : spanObject.getStartTime(); + return spanObjectV2.getStartTime(); } else { - return isV2 ? spanBuilderV2.getStartTime() : spanBuilder.getStartTime(); + return spanBuilderV2.getStartTime(); } } public long getEndTime() { if (isOrigin) { - return isV2 ? spanObjectV2.getEndTime() : spanObject.getEndTime(); + return spanObjectV2.getEndTime(); } else { - return isV2 ? spanBuilderV2.getEndTime() : spanBuilder.getEndTime(); + return spanBuilderV2.getEndTime(); } } public int getComponentId() { if (isOrigin) { - return isV2 ? spanObjectV2.getComponentId() : spanObject.getComponentId(); + return spanObjectV2.getComponentId(); } else { - return isV2 ? spanBuilderV2.getComponentId() : spanBuilder.getComponentId(); + return spanBuilderV2.getComponentId(); } } @@ -144,18 +109,14 @@ public class SpanDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - spanBuilderV2.setComponentId(value); - } else { - spanBuilder.setComponentId(value); - } + spanBuilderV2.setComponentId(value); } public String getComponent() { if (isOrigin) { - return isV2 ? spanObjectV2.getComponent() : spanObject.getComponent(); + return spanObjectV2.getComponent(); } else { - return isV2 ? spanBuilderV2.getComponent() : spanBuilder.getComponent(); + return spanBuilderV2.getComponent(); } } @@ -163,18 +124,14 @@ public class SpanDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - spanBuilderV2.setComponent(value); - } else { - spanBuilder.setComponent(value); - } + spanBuilderV2.setComponent(value); } public int getPeerId() { if (isOrigin) { - return isV2 ? spanObjectV2.getPeerId() : spanObject.getPeerId(); + return spanObjectV2.getPeerId(); } else { - return isV2 ? spanBuilderV2.getPeerId() : spanBuilder.getPeerId(); + return spanBuilderV2.getPeerId(); } } @@ -182,18 +139,14 @@ public class SpanDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - spanBuilderV2.setPeerId(peerId); - } else { - spanBuilder.setPeerId(peerId); - } + spanBuilderV2.setPeerId(peerId); } public String getPeer() { if (isOrigin) { - return isV2 ? spanObjectV2.getPeer() : spanObject.getPeer(); + return spanObjectV2.getPeer(); } else { - return isV2 ? spanBuilderV2.getPeer() : spanBuilder.getPeer(); + return spanBuilderV2.getPeer(); } } @@ -201,18 +154,14 @@ public class SpanDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - spanBuilderV2.setPeer(peer); - } else { - spanBuilder.setPeer(peer); - } + spanBuilderV2.setPeer(peer); } public int getOperationNameId() { if (isOrigin) { - return isV2 ? spanObjectV2.getOperationNameId() : spanObject.getOperationNameId(); + return spanObjectV2.getOperationNameId(); } else { - return isV2 ? spanBuilderV2.getOperationNameId() : spanBuilder.getOperationNameId(); + return spanBuilderV2.getOperationNameId(); } } @@ -220,18 +169,14 @@ public class SpanDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - spanBuilderV2.setOperationNameId(value); - } else { - spanBuilder.setOperationNameId(value); - } + spanBuilderV2.setOperationNameId(value); } public String getOperationName() { if (isOrigin) { - return isV2 ? spanObjectV2.getOperationName() : spanObject.getOperationName(); + return spanObjectV2.getOperationName(); } else { - return isV2 ? spanBuilderV2.getOperationName() : spanBuilder.getOperationName(); + return spanBuilderV2.getOperationName(); } } @@ -239,43 +184,31 @@ public class SpanDecorator implements StandardBuilder { if (isOrigin) { toBuilder(); } - if (isV2) { - spanBuilderV2.setOperationName(value); - } else { - spanBuilder.setOperationName(value); - } + spanBuilderV2.setOperationName(value); } public boolean getIsError() { if (isOrigin) { - return isV2 ? spanObjectV2.getIsError() : spanObject.getIsError(); + return spanObjectV2.getIsError(); } else { - return isV2 ? spanBuilderV2.getIsError() : spanBuilder.getIsError(); + return spanBuilderV2.getIsError(); } } public int getRefsCount() { if (isOrigin) { - return isV2 ? spanObjectV2.getRefsCount() : spanObject.getRefsCount(); + return spanObjectV2.getRefsCount(); } else { - return isV2 ? spanBuilderV2.getRefsCount() : spanBuilder.getRefsCount(); + return spanBuilderV2.getRefsCount(); } } public ReferenceDecorator getRefs(int index) { if (isNull(referenceDecorators[index])) { if (isOrigin) { - if (isV2) { - referenceDecorators[index] = new ReferenceDecorator(spanObjectV2.getRefs(index), this); - } else { - referenceDecorators[index] = new ReferenceDecorator(spanObject.getRefs(index), this); - } + referenceDecorators[index] = new ReferenceDecorator(spanObjectV2.getRefs(index), this); } else { - if (isV2) { - referenceDecorators[index] = new ReferenceDecorator(spanBuilderV2.getRefsBuilder(index), this); - } else { - referenceDecorators[index] = new ReferenceDecorator(spanBuilder.getRefsBuilder(index), this); - } + referenceDecorators[index] = new ReferenceDecorator(spanBuilderV2.getRefsBuilder(index), this); } } return referenceDecorators[index]; @@ -283,33 +216,18 @@ public class SpanDecorator implements StandardBuilder { public List getAllTags() { if (isOrigin) { - return isV2 ? spanObjectV2.getTagsList() : convert(spanObject.getTagsList()); + return spanObjectV2.getTagsList(); } else { - return isV2 ? spanBuilderV2.getTagsList() : convert(spanBuilder.getTagsList()); + return spanBuilderV2.getTagsList(); } } @Override public void toBuilder() { if (this.isOrigin) { this.isOrigin = false; - if (isV2) { - spanBuilderV2 = spanObjectV2.toBuilder(); - } else { - spanBuilder = spanObject.toBuilder(); - } + spanBuilderV2 = spanObjectV2.toBuilder(); standardBuilder.toBuilder(); } } - private List convert(List list) { - List result = new ArrayList<>(); - if (list != null) { - list.forEach(element -> { - result.add(KeyStringValuePair.newBuilder() - .setKey(element.getKey()) - .setValue(element.getValue()).build()); - }); - } - return result; - } } diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/endpoint/MultiScopesSpanListener.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/endpoint/MultiScopesSpanListener.java index 705c782fc4..8b15c4a2e2 100755 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/endpoint/MultiScopesSpanListener.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/endpoint/MultiScopesSpanListener.java @@ -21,6 +21,7 @@ package org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener import java.util.ArrayList; import java.util.LinkedList; import java.util.List; +import java.util.stream.Collectors; import org.apache.skywalking.apm.network.common.KeyStringValuePair; import org.apache.skywalking.apm.network.language.agent.SpanLayer; import org.apache.skywalking.apm.network.language.agent.UniqueId; @@ -49,24 +50,16 @@ import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener. import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.GlobalTraceIdsListener; import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.SpanListener; import org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.SpanListenerFactory; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import static java.util.Objects.nonNull; /** * Notice, in here, there are following concepts match * - * v5 | v6 - * - * 1. Application == Service 2. Server == Service Instance 3. Service == Endpoint - * * @author peng-yongsheng, wusheng */ public class MultiScopesSpanListener implements EntrySpanListener, ExitSpanListener, GlobalTraceIdsListener { - private static final Logger logger = LoggerFactory.getLogger(MultiScopesSpanListener.class); - private final SourceReceiver sourceReceiver; private final ServiceInstanceInventoryCache instanceInventoryCache; private final ServiceInventoryCache serviceInventoryCache; @@ -257,7 +250,7 @@ public class MultiScopesSpanListener implements EntrySpanListener, ExitSpanListe sourceReceiver.receive(entrySourceBuilder.toServiceRelation()); sourceReceiver.receive(entrySourceBuilder.toServiceInstanceRelation()); EndpointRelation endpointRelation = entrySourceBuilder.toEndpointRelation(); - /** + /* * Parent endpoint could be none, because in SkyWalking Cross Process Propagation Headers Protocol v2, * endpoint in ref could be empty, based on that, endpoint relation maybe can't be established. * So, I am making this source as optional. @@ -291,15 +284,7 @@ public class MultiScopesSpanListener implements EntrySpanListener, ExitSpanListe @Override public void parseGlobalTraceId(UniqueId uniqueId, SegmentCoreInfo segmentCoreInfo) { if (traceId == null) { - StringBuilder traceIdBuilder = new StringBuilder(); - for (int i = 0; i < uniqueId.getIdPartsList().size(); i++) { - if (i == 0) { - traceIdBuilder.append(uniqueId.getIdPartsList().get(i)); - } else { - traceIdBuilder.append(".").append(uniqueId.getIdPartsList().get(i)); - } - } - traceId = traceIdBuilder.toString(); + traceId = uniqueId.getIdPartsList().stream().map(String::valueOf).collect(Collectors.joining(".")); } } diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java index 492b1d6de9..36f4c9a9a1 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/listener/segment/SegmentSpanListener.java @@ -18,6 +18,7 @@ package org.apache.skywalking.oap.server.receiver.trace.provider.parser.listener.segment; +import java.util.stream.Collectors; import org.apache.skywalking.apm.network.language.agent.UniqueId; import org.apache.skywalking.oap.server.core.Const; import org.apache.skywalking.oap.server.core.CoreModule; @@ -81,10 +82,7 @@ public class SegmentSpanListener implements FirstSpanListener, EntrySpanListener segment.setIsError(BooleanUtils.booleanToValue(segmentCoreInfo.isError())); segment.setTimeBucket(timeBucket); segment.setDataBinary(segmentCoreInfo.getDataBinary()); - /** - * Only consider v1, v2 compatible for now. - */ - segment.setVersion(segmentCoreInfo.isV2() ? 2 : 1); + segment.setVersion(segmentCoreInfo.getVersion().number()); firstEndpointId = spanDecorator.getOperationNameId(); firstEndpointName = spanDecorator.getOperationName(); @@ -107,15 +105,8 @@ public class SegmentSpanListener implements FirstSpanListener, EntrySpanListener return; } - StringBuilder traceIdBuilder = new StringBuilder(); - for (int i = 0; i < uniqueId.getIdPartsList().size(); i++) { - if (i == 0) { - traceIdBuilder.append(uniqueId.getIdPartsList().get(i)); - } else { - traceIdBuilder.append(".").append(uniqueId.getIdPartsList().get(i)); - } - } - segment.setTraceId(traceIdBuilder.toString()); + final String traceId = uniqueId.getIdPartsList().stream().map(String::valueOf).collect(Collectors.joining(".")); + segment.setTraceId(traceId); } @Override public void build() { @@ -129,13 +120,13 @@ public class SegmentSpanListener implements FirstSpanListener, EntrySpanListener if (entryEndpointId == Const.NONE) { if (firstEndpointId != Const.NONE) { - /** + /* * Since 6.6.0, only entry span is treated as an endpoint. Other span's endpoint id == 0. */ segment.setEndpointId(firstEndpointId); segment.setEndpointName(serviceNameCacheService.get(firstEndpointId).getName()); } else { - /** + /* * Only fill first operation name for the trace list query, as no endpoint id. */ segment.setEndpointName(firstEndpointName); @@ -153,7 +144,7 @@ public class SegmentSpanListener implements FirstSpanListener, EntrySpanListener } public static class Factory implements SpanListenerFactory { - private TraceSegmentSampler sampler; + private final TraceSegmentSampler sampler; public Factory(int segmentSamplingRate) { this.sampler = new TraceSegmentSampler(segmentSamplingRate); diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SegmentStandardizationWorker.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SegmentStandardizationWorker.java index 92fc4a0b9e..8464e0669a 100644 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SegmentStandardizationWorker.java +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/parser/standardization/SegmentStandardizationWorker.java @@ -42,7 +42,7 @@ public class SegmentStandardizationWorker extends AbstractWorker segmentParse, String path, int offsetFileMaxSize, - int dataFileMaxSize, boolean cleanWhenRestart, boolean isV6) throws IOException { + int dataFileMaxSize, boolean cleanWhenRestart) throws IOException { super(moduleDefineHolder); BufferStream.Builder builder = new BufferStream.Builder<>(path); @@ -59,7 +59,7 @@ public class SegmentStandardizationWorker extends AbstractWorker streamObserver = createStreamObserver(); - - UniqueId.Builder globalTraceId = UniqueIdBuilder.INSTANCE.create(); - long startTimestamp = System.currentTimeMillis(); - //long startTimestamp = new DateTime().minusDays(2).getMillis(); - - // ServiceAMock - ServiceAMock serviceAMock = new ServiceAMock(registerMock); - serviceAMock.register(); - - // ServiceBMock - ServiceBMock serviceBMock = new ServiceBMock(registerMock); - serviceBMock.register(); - - // ServiceCMock - ServiceCMock serviceCMock = new ServiceCMock(registerMock); - serviceCMock.register(); - - UniqueId.Builder serviceASegmentId = UniqueIdBuilder.INSTANCE.create(); - serviceAMock.mock(streamObserver, globalTraceId, serviceASegmentId, startTimestamp, true); - - UniqueId.Builder serviceBSegmentId = UniqueIdBuilder.INSTANCE.create(); - serviceBMock.mock(streamObserver, globalTraceId, serviceBSegmentId, serviceASegmentId, startTimestamp, true); - - UniqueId.Builder serviceCSegmentId = UniqueIdBuilder.INSTANCE.create(); - serviceCMock.mock(streamObserver, globalTraceId, serviceCSegmentId, serviceBSegmentId, startTimestamp, true); - - TimeUnit.SECONDS.sleep(10); - - for (int i = 0; i < 500; i++) { - globalTraceId = UniqueIdBuilder.INSTANCE.create(); - serviceASegmentId = UniqueIdBuilder.INSTANCE.create(); - serviceBSegmentId = UniqueIdBuilder.INSTANCE.create(); - serviceCSegmentId = UniqueIdBuilder.INSTANCE.create(); - serviceAMock.mock(streamObserver, globalTraceId, serviceASegmentId, startTimestamp, true); - serviceBMock.mock(streamObserver, globalTraceId, serviceBSegmentId, serviceASegmentId, startTimestamp, true); - serviceCMock.mock(streamObserver, globalTraceId, serviceCSegmentId, serviceBSegmentId, startTimestamp, true); - } - - streamObserver.onCompleted(); - while (!IS_COMPLETED) { - TimeUnit.MILLISECONDS.sleep(500); - } - } - - private static StreamObserver createStreamObserver() { - ManagedChannel channel = ManagedChannelBuilder.forAddress("localhost", 11800).usePlaintext().build(); - TraceSegmentServiceGrpc.TraceSegmentServiceStub stub = TraceSegmentServiceGrpc.newStub(channel); - return stub.collect(new StreamObserver() { - @Override public void onNext(Downstream downstream) { - } - - @Override public void onError(Throwable throwable) { - } - - @Override public void onCompleted() { - IS_COMPLETED = true; - } - }); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java deleted file mode 100644 index 5ba649e763..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/RegisterMock.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.mock; - -import io.grpc.ManagedChannel; -import java.util.concurrent.TimeUnit; -import org.apache.skywalking.apm.network.language.agent.*; -import org.slf4j.*; - -/** - * @author peng-yongsheng - */ -class RegisterMock { - - private static final Logger logger = LoggerFactory.getLogger(RegisterMock.class); - - private final ApplicationRegisterServiceGrpc.ApplicationRegisterServiceBlockingStub applicationRegisterServiceBlockingStub; - private final InstanceDiscoveryServiceGrpc.InstanceDiscoveryServiceBlockingStub instanceDiscoveryServiceBlockingStub; - - RegisterMock(ManagedChannel channel) { - applicationRegisterServiceBlockingStub = ApplicationRegisterServiceGrpc.newBlockingStub(channel); - instanceDiscoveryServiceBlockingStub = InstanceDiscoveryServiceGrpc.newBlockingStub(channel); - } - - int registerService(String serviceName) throws InterruptedException { - Application.Builder application = Application.newBuilder(); - application.setApplicationCode(serviceName); - - ApplicationMapping applicationMapping; - do { - applicationMapping = applicationRegisterServiceBlockingStub.applicationCodeRegister(application.build()); - logger.debug("service id: {}", applicationMapping.getApplication().getValue()); - TimeUnit.MILLISECONDS.sleep(20); - } - while (applicationMapping.getApplication().getValue() == 0); - - return applicationMapping.getApplication().getValue(); - } - - int registerServiceInstance(int serviceId, String agentName) throws InterruptedException { - ApplicationInstance.Builder instance = ApplicationInstance.newBuilder(); - instance.setApplicationId(serviceId); - instance.setAgentUUID(agentName); - instance.setRegisterTime(System.currentTimeMillis()); - - OSInfo.Builder osInfo = OSInfo.newBuilder(); - osInfo.setHostname(agentName); - osInfo.setOsName("MacOS XX"); - osInfo.setProcessNo(1001); - osInfo.addIpv4S("10.0.0.3"); - osInfo.addIpv4S("10.0.0.4"); - instance.setOsinfo(osInfo); - - ApplicationInstanceMapping instanceMapping; - do { - instanceMapping = instanceDiscoveryServiceBlockingStub.registerInstance(instance.build()); - logger.debug("instance id: {}", instanceMapping.getApplicationInstanceId()); - TimeUnit.MILLISECONDS.sleep(20); - } - while (instanceMapping.getApplicationInstanceId() == 0); - - return instanceMapping.getApplicationInstanceId(); - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceAMock.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceAMock.java deleted file mode 100644 index dd6d25ada7..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceAMock.java +++ /dev/null @@ -1,116 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.mock; - -import com.google.protobuf.ByteString; -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; - -/** - * @author peng-yongsheng - */ -class ServiceAMock { - - static String REST_ENDPOINT = "/dubbox-case/case/dubbox-rest"; - static String DUBBO_ENDPOINT = "org.skywaking.apm.testcase.dubbo.services.GreetService.doBusiness()"; - static String DUBBO_ADDRESS = "DubboIPAddress:1000"; - private final RegisterMock registerMock; - private static int SERVICE_ID; - static int SERVICE_INSTANCE_ID; - - ServiceAMock(RegisterMock registerMock) { - this.registerMock = registerMock; - } - - void register() throws InterruptedException { - SERVICE_ID = registerMock.registerService("dubbox-consumer"); - SERVICE_INSTANCE_ID = registerMock.registerServiceInstance(SERVICE_ID, "pengysA"); - } - - void mock(StreamObserver streamObserver, UniqueId.Builder traceId, - UniqueId.Builder segmentId, long startTimestamp, boolean isPrepare) { - UpstreamSegment.Builder upstreamSegment = UpstreamSegment.newBuilder(); - upstreamSegment.addGlobalTraceIds(traceId); - upstreamSegment.setSegment(createSegment(startTimestamp, segmentId, isPrepare)); - - streamObserver.onNext(upstreamSegment.build()); - } - - private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId, boolean isPrepare) { - TraceSegmentObject.Builder segment = TraceSegmentObject.newBuilder(); - segment.setTraceSegmentId(segmentId); - segment.setApplicationId(SERVICE_ID); - segment.setApplicationInstanceId(SERVICE_INSTANCE_ID); - segment.addSpans(createEntrySpan(startTimestamp, isPrepare)); - segment.addSpans(createLocalSpan(startTimestamp, isPrepare)); - segment.addSpans(createExitSpan(startTimestamp, isPrepare)); - - return segment.build().toByteString(); - } - - private SpanObject.Builder createEntrySpan(long startTimestamp, boolean isPrepare) { - SpanObject.Builder span = SpanObject.newBuilder(); - span.setSpanId(0); - span.setSpanType(SpanType.Entry); - span.setSpanLayer(SpanLayer.Http); - span.setParentSpanId(-1); - span.setStartTime(startTimestamp); - span.setEndTime(startTimestamp + 6000); - span.setComponentId(ComponentsDefine.TOMCAT.getId()); - if (isPrepare) { - span.setOperationName(REST_ENDPOINT); - } else { - span.setOperationNameId(2); - } - span.setIsError(false); - return span; - } - - private SpanObject.Builder createLocalSpan(long startTimestamp, boolean isPrepare) { - SpanObject.Builder span = SpanObject.newBuilder(); - span.setSpanId(1); - span.setSpanType(SpanType.Local); - span.setParentSpanId(0); - span.setStartTime(startTimestamp + 100); - span.setEndTime(startTimestamp + 500); - span.setOperationName("org.apache.skywalking.Local.do"); - span.setIsError(false); - return span; - } - - private SpanObject.Builder createExitSpan(long startTimestamp, boolean isPrepare) { - SpanObject.Builder span = SpanObject.newBuilder(); - span.setSpanId(2); - span.setSpanType(SpanType.Exit); - span.setSpanLayer(SpanLayer.RPCFramework); - span.setParentSpanId(1); - span.setStartTime(startTimestamp + 120); - span.setEndTime(startTimestamp + 5800); - span.setComponentId(ComponentsDefine.DUBBO.getId()); - span.setOperationName(DUBBO_ENDPOINT); - if (isPrepare) { - span.setPeer(DUBBO_ADDRESS); - } else { - span.setPeerId(2); - } - span.setIsError(false); - return span; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceBMock.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceBMock.java deleted file mode 100644 index 73893ee1e0..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceBMock.java +++ /dev/null @@ -1,150 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.mock; - -import com.google.protobuf.ByteString; -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; - -/** - * @author peng-yongsheng - */ -class ServiceBMock { - - private final RegisterMock registerMock; - private static int SERVICE_ID; - static int SERVICE_INSTANCE_ID; - static String DUBBO_PROVIDER_ENDPOINT = "org.skywaking.apm.testcase.dubbo.services.GreetServiceImpl.doBusiness()"; - static String ROCKET_MQ_ENDPOINT = "org.apache.skywalking.RocketMQ"; - static String ROCKET_MQ_ADDRESS = "RocketMQAddress:2000"; - - ServiceBMock(RegisterMock registerMock) { - this.registerMock = registerMock; - } - - void register() throws InterruptedException { - SERVICE_ID = registerMock.registerService("dubbox-provider"); - SERVICE_INSTANCE_ID = registerMock.registerServiceInstance(SERVICE_ID, "pengysB"); - } - - void mock(StreamObserver streamObserver, UniqueId.Builder traceId, - UniqueId.Builder segmentId, UniqueId.Builder parentTraceSegmentId, long startTimestamp, boolean isPrepare) { - UpstreamSegment.Builder upstreamSegment = UpstreamSegment.newBuilder(); - upstreamSegment.addGlobalTraceIds(traceId); - upstreamSegment.setSegment(createSegment(startTimestamp, segmentId, parentTraceSegmentId, isPrepare)); - - streamObserver.onNext(upstreamSegment.build()); - } - - private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId, - UniqueId.Builder parentTraceSegmentId, boolean isPrepare) { - TraceSegmentObject.Builder segment = TraceSegmentObject.newBuilder(); - segment.setTraceSegmentId(segmentId); - segment.setApplicationId(SERVICE_ID); - segment.setApplicationInstanceId(SERVICE_INSTANCE_ID); - segment.addSpans(createEntrySpan(startTimestamp, parentTraceSegmentId, isPrepare)); - segment.addSpans(createExitSpan(startTimestamp, isPrepare)); - segment.addSpans(createMQExitSpan(startTimestamp, isPrepare)); - - return segment.build().toByteString(); - } - - private TraceSegmentReference.Builder createReference(UniqueId.Builder parentTraceSegmentId, boolean isPrepare) { - TraceSegmentReference.Builder reference = TraceSegmentReference.newBuilder(); - reference.setParentTraceSegmentId(parentTraceSegmentId); - reference.setParentApplicationInstanceId(ServiceAMock.SERVICE_INSTANCE_ID); - reference.setParentSpanId(2); - reference.setEntryApplicationInstanceId(ServiceAMock.SERVICE_INSTANCE_ID); - reference.setRefType(RefType.CrossProcess); - - if (isPrepare) { - reference.setParentServiceName(ServiceAMock.REST_ENDPOINT); - reference.setNetworkAddress(ServiceAMock.DUBBO_ADDRESS); - reference.setEntryServiceName(ServiceAMock.REST_ENDPOINT); - } else { - reference.setParentServiceId(2); - reference.setNetworkAddressId(2); - reference.setEntryServiceId(2); - } - return reference; - } - - private SpanObject.Builder createEntrySpan(long startTimestamp, UniqueId.Builder uniqueId, boolean isPrepare) { - SpanObject.Builder span = SpanObject.newBuilder(); - span.setSpanId(0); - span.setSpanType(SpanType.Entry); - span.setSpanLayer(SpanLayer.RPCFramework); - span.setParentSpanId(-1); - span.setStartTime(startTimestamp + 500); - span.setEndTime(startTimestamp + 5000); - span.setComponentId(ComponentsDefine.DUBBO.getId()); - span.setIsError(false); - span.addRefs(createReference(uniqueId, isPrepare)); - - if (isPrepare) { - span.setOperationName(ServiceBMock.DUBBO_PROVIDER_ENDPOINT); - } else { - span.setOperationNameId(4); - } - return span; - } - - private SpanObject.Builder createExitSpan(long startTimestamp, boolean isPrepare) { - SpanObject.Builder span = SpanObject.newBuilder(); - span.setSpanId(1); - span.setSpanType(SpanType.Exit); - span.setSpanLayer(SpanLayer.Database); - span.setParentSpanId(0); - span.setStartTime(startTimestamp + 550); - span.setEndTime(startTimestamp + 1500); - span.setComponentId(ComponentsDefine.MONGO_DRIVER.getId()); - span.setIsError(true); - span.addTags(KeyWithStringValue.newBuilder().setKey("db.statement").setValue("select * from database where complex = 1;").build()); - span.addTags(KeyWithStringValue.newBuilder().setKey("db.type").setValue("mongodb").build()); - - span.setOperationName("mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]"); - if (isPrepare) { - span.setPeer("localhost:27017"); - } else { - span.setPeerId(3); - } - return span; - } - - private SpanObject.Builder createMQExitSpan(long startTimestamp, boolean isPrepare) { - SpanObject.Builder span = SpanObject.newBuilder(); - span.setSpanId(2); - span.setSpanType(SpanType.Exit); - span.setSpanLayer(SpanLayer.MQ); - span.setParentSpanId(1); - span.setStartTime(startTimestamp + 1100); - span.setEndTime(startTimestamp + 1500); - span.setComponentId(ComponentsDefine.ROCKET_MQ_PRODUCER.getId()); - span.setIsError(false); - - span.setOperationName(ROCKET_MQ_ENDPOINT); - if (isPrepare) { - span.setPeer(ROCKET_MQ_ADDRESS); - } else { - span.setPeerId(4); - } - return span; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceCMock.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceCMock.java deleted file mode 100644 index b1f537e2c8..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/ServiceCMock.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.mock; - -import com.google.protobuf.ByteString; -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.apm.network.trace.component.ComponentsDefine; - -/** - * @author peng-yongsheng - */ -class ServiceCMock { - - private final RegisterMock registerMock; - private static int SERVICE_ID; - private static int SERVICE_INSTANCE_ID; - - ServiceCMock(RegisterMock registerMock) { - this.registerMock = registerMock; - } - - void register() throws InterruptedException { - SERVICE_ID = registerMock.registerService("rocket-mq-consumer"); - SERVICE_INSTANCE_ID = registerMock.registerServiceInstance(SERVICE_ID, "pengysC"); - } - - void mock(StreamObserver streamObserver, UniqueId.Builder traceId, - UniqueId.Builder segmentId, UniqueId.Builder parentTraceSegmentId, long startTimestamp, boolean isPrepare) { - UpstreamSegment.Builder upstreamSegment = UpstreamSegment.newBuilder(); - upstreamSegment.addGlobalTraceIds(traceId); - upstreamSegment.setSegment(createSegment(startTimestamp, segmentId, parentTraceSegmentId, isPrepare)); - - streamObserver.onNext(upstreamSegment.build()); - } - - private ByteString createSegment(long startTimestamp, UniqueId.Builder segmentId, - UniqueId.Builder parentTraceSegmentId, boolean isPrepare) { - TraceSegmentObject.Builder segment = TraceSegmentObject.newBuilder(); - segment.setTraceSegmentId(segmentId); - segment.setApplicationInstanceId(SERVICE_INSTANCE_ID); - segment.setApplicationId(SERVICE_ID); - segment.addSpans(createEntrySpan(startTimestamp, parentTraceSegmentId, isPrepare)); - - return segment.build().toByteString(); - } - - private SpanObject.Builder createEntrySpan(long startTimestamp, UniqueId.Builder uniqueId, boolean isPrepare) { - SpanObject.Builder span = SpanObject.newBuilder(); - span.setSpanId(0); - span.setSpanType(SpanType.Entry); - span.setSpanLayer(SpanLayer.MQ); - span.setParentSpanId(-1); - span.setStartTime(startTimestamp + 3000); - span.setEndTime(startTimestamp + 5000); - span.setComponentId(ComponentsDefine.ROCKET_MQ_CONSUMER.getId()); - span.setIsError(false); - span.addRefs(createReference(uniqueId, isPrepare)); - - if (isPrepare) { - span.setOperationName(ServiceBMock.ROCKET_MQ_ENDPOINT); - } else { - span.setOperationNameId(5); - } - return span; - } - - private TraceSegmentReference.Builder createReference(UniqueId.Builder parentTraceSegmentId, boolean isPrepare) { - TraceSegmentReference.Builder reference = TraceSegmentReference.newBuilder(); - reference.setParentTraceSegmentId(parentTraceSegmentId); - reference.setParentApplicationInstanceId(ServiceBMock.SERVICE_INSTANCE_ID); - reference.setParentSpanId(2); - reference.setEntryApplicationInstanceId(ServiceAMock.SERVICE_INSTANCE_ID); - reference.setRefType(RefType.CrossProcess); - - if (isPrepare) { - reference.setParentServiceName(ServiceBMock.DUBBO_PROVIDER_ENDPOINT); - reference.setNetworkAddress(ServiceBMock.ROCKET_MQ_ADDRESS); - reference.setEntryServiceName(ServiceAMock.REST_ENDPOINT); - } else { - reference.setParentServiceId(8); - reference.setNetworkAddressId(4); - reference.setEntryServiceId(2); - } - return reference; - } -} diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/UniqueIdBuilder.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/UniqueIdBuilder.java deleted file mode 100644 index e64adff4f9..0000000000 --- a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/test/java/org/apache/skywalking/oap/server/receiver/trace/mock/UniqueIdBuilder.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package org.apache.skywalking.oap.server.receiver.trace.mock; - -import java.util.concurrent.atomic.AtomicLong; -import org.apache.skywalking.apm.network.language.agent.UniqueId; - -/** - * @author peng-yongsheng - */ -public enum UniqueIdBuilder { - INSTANCE; - - private AtomicLong idPart = new AtomicLong(1); - - UniqueId.Builder create() { - UniqueId.Builder uniqueId = UniqueId.newBuilder(); - uniqueId.addIdParts(idPart.getAndIncrement()); - uniqueId.addIdParts(idPart.getAndIncrement()); - uniqueId.addIdParts(idPart.getAndIncrement()); - return uniqueId; - } -} diff --git a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java b/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java index a49b5478a7..d0b02340b0 100644 --- a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java +++ b/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/Main.java @@ -39,13 +39,8 @@ public class Main { .maxConcurrentCallsPerConnection(12).maxMessageSize(16777216) .addService(new MockRegisterService()) .addService(new MockInstancePingService()) - .addService(new MockJVMMetricsService()) - .addService(new MockTraceSegmentV1Service()) - .addService(new MockApplicationRegisterService()) .addService(new MockInstanceDiscoveryService()) - .addService(new MockJVMMetricsV1Service()) .addService(new MockNetworkAddressRegisterService()) - .addService(new MockServiceNameDiscoveryService()) .addService(new MockTraceSegmentService()) .addService(new MockJVMMetricReportService()) .build().start(); diff --git a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockApplicationRegisterService.java b/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockApplicationRegisterService.java deleted file mode 100644 index 0c38117943..0000000000 --- a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockApplicationRegisterService.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.skywalking.plugin.test.mockcollector.service; - -import io.grpc.stub.StreamObserver; - -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.skywalking.apm.network.language.agent.Application; -import org.apache.skywalking.apm.network.language.agent.ApplicationMapping; -import org.apache.skywalking.apm.network.language.agent.ApplicationRegisterServiceGrpc; -import org.apache.skywalking.apm.network.language.agent.KeyWithIntegerValue; -import org.apache.skywalking.plugin.test.mockcollector.entity.RegistryItem; -import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateData; - -/** - * Created by xin on 2017/7/11. - */ -public class MockApplicationRegisterService extends ApplicationRegisterServiceGrpc.ApplicationRegisterServiceImplBase { - private Logger logger = LogManager.getLogger(MockTraceSegmentService.class); - - @Override - public void applicationCodeRegister(Application request, StreamObserver responseObserver) { - logger.debug("receive application register."); - String applicationCode = request.getApplicationCode(); - ApplicationMapping.Builder builder = ApplicationMapping.newBuilder(); - - if (applicationCode.startsWith("localhost") || applicationCode.startsWith("127.0.0.1") || applicationCode.contains(":") || applicationCode.contains("/")) { - responseObserver.onNext(builder.build()); - responseObserver.onCompleted(); - return; - } - - Integer applicationId = Sequences.SERVICE_MAPPING.get(applicationCode); - if (applicationId == null) { - applicationId = Sequences.ENDPOINT_SEQUENCE.incrementAndGet(); - Sequences.SERVICE_MAPPING.put(applicationCode, applicationId); - ValidateData.INSTANCE.getRegistryItem().registryApplication(new RegistryItem.Application(applicationCode, - applicationId)); - } - - builder.setApplication(KeyWithIntegerValue.newBuilder().setKey(applicationCode).setValue(applicationId)); - responseObserver.onNext(builder.build()); - responseObserver.onCompleted(); - } -} diff --git a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsService.java b/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsService.java deleted file mode 100644 index 7f46678756..0000000000 --- a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsService.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.skywalking.plugin.test.mockcollector.service; - -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.Downstream; -import org.apache.skywalking.apm.network.language.agent.JVMMetrics; -import org.apache.skywalking.apm.network.language.agent.JVMMetricsServiceGrpc; - -/** - * Created by xin on 2017/7/11. - */ -public class MockJVMMetricsService extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase { - @Override - public void collect(JVMMetrics request, StreamObserver responseObserver) { - responseObserver.onNext(Downstream.getDefaultInstance()); - responseObserver.onCompleted(); - } -} diff --git a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsV1Service.java b/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsV1Service.java deleted file mode 100644 index a45345e357..0000000000 --- a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockJVMMetricsV1Service.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.skywalking.plugin.test.mockcollector.service; - -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.Downstream; -import org.apache.skywalking.apm.network.language.agent.JVMMetrics; -import org.apache.skywalking.apm.network.language.agent.JVMMetricsServiceGrpc; - -/** - * Created by xin on 2017/7/11. - */ -public class MockJVMMetricsV1Service extends JVMMetricsServiceGrpc.JVMMetricsServiceImplBase { - - @Override - public void collect(JVMMetrics request, StreamObserver responseObserver) { - responseObserver.onNext(Downstream.getDefaultInstance()); - responseObserver.onCompleted(); - } -} diff --git a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockServiceNameDiscoveryService.java b/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockServiceNameDiscoveryService.java deleted file mode 100644 index 52dce63bea..0000000000 --- a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockServiceNameDiscoveryService.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.skywalking.plugin.test.mockcollector.service; - -import io.grpc.stub.StreamObserver; -import org.apache.skywalking.apm.network.language.agent.ServiceNameCollection; -import org.apache.skywalking.apm.network.language.agent.ServiceNameDiscoveryServiceGrpc; -import org.apache.skywalking.apm.network.language.agent.ServiceNameElement; -import org.apache.skywalking.apm.network.language.agent.ServiceNameMappingCollection; -import org.apache.skywalking.plugin.test.mockcollector.entity.RegistryItem; -import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateData; - -public class MockServiceNameDiscoveryService extends ServiceNameDiscoveryServiceGrpc.ServiceNameDiscoveryServiceImplBase { - - @Override - public void discovery(ServiceNameCollection request, - StreamObserver responseObserver) { - for (ServiceNameElement element : request.getElementsList()) { - ValidateData.INSTANCE.getRegistryItem().registryOperationName(new RegistryItem.OperationName(element.getApplicationId(), - element.getServiceName())); - } - responseObserver.onNext(ServiceNameMappingCollection.getDefaultInstance()); - responseObserver.onCompleted(); - } -} diff --git a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockTraceSegmentV1Service.java b/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockTraceSegmentV1Service.java deleted file mode 100644 index 659c3b7265..0000000000 --- a/test/plugin/mock-collector/src/main/java/org/apache/skywalking/plugin/test/mockcollector/service/MockTraceSegmentV1Service.java +++ /dev/null @@ -1,81 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.skywalking.plugin.test.mockcollector.service; - -import com.google.protobuf.InvalidProtocolBufferException; -import io.grpc.stub.StreamObserver; -import org.apache.logging.log4j.LogManager; -import org.apache.logging.log4j.Logger; -import org.apache.skywalking.apm.network.language.agent.*; -import org.apache.skywalking.plugin.test.mockcollector.entity.Segment; -import org.apache.skywalking.plugin.test.mockcollector.entity.ValidateData; -import org.apache.skywalking.plugin.test.mockcollector.entity.Span; - -public class MockTraceSegmentV1Service extends TraceSegmentServiceGrpc.TraceSegmentServiceImplBase { - - private Logger logger = LogManager.getLogger(MockTraceSegmentService.class); - - @Override - public StreamObserver collect(final StreamObserver responseObserver) { - return new StreamObserver() { - @Override public void onNext(UpstreamSegment value) { - try { - TraceSegmentObject traceSegmentObject = TraceSegmentObject.parseFrom(value.getSegment()); - Segment.SegmentBuilder segmentBuilder = Segment.builder().segmentId(traceSegmentObject.getTraceSegmentId()); - logger.debug("Receive segment: Application[{}], TraceSegmentId[{}]", - traceSegmentObject.getApplicationId(), - traceSegmentObject.getTraceSegmentId()); - - for (SpanObject spanObject : traceSegmentObject.getSpansList()) { - Span.SpanBuilder spanBuilder = Span.builder().operationName(spanObject.getOperationName()).parentSpanId(spanObject.getParentSpanId()) - .spanId(spanObject.getSpanId()).componentId(spanObject.getComponentId()).componentName(spanObject.getComponent()) - .spanLayer(spanObject.getSpanLayer().toString()).endTime(spanObject.getEndTime()) - .startTime(spanObject.getStartTime()).spanType(spanObject.getSpanType().toString()) - .peer(spanObject.getPeer()).peerId(spanObject.getPeerId()).operationId(spanObject.getOperationNameId()); - - for (LogMessage logMessage : spanObject.getLogsList()) { - spanBuilder.logEventV1(logMessage.getDataList()); - } - - for (KeyWithStringValue tags : spanObject.getTagsList()) { - spanBuilder.tags(tags.getKey(), tags.getValue()); - } - - for (TraceSegmentReference ref : spanObject.getRefsList()) { - spanBuilder.ref(new Span.SegmentRef(ref)); - } - - segmentBuilder.addSpan(spanBuilder); - } - - ValidateData.INSTANCE.getSegmentItem().addSegmentItem(traceSegmentObject.getApplicationId(), segmentBuilder.build()); - } catch (InvalidProtocolBufferException e) { - e.printStackTrace(); - } - } - - @Override public void onError(Throwable t) { - - } - - @Override public void onCompleted() { - responseObserver.onNext(Downstream.getDefaultInstance()); - responseObserver.onCompleted(); - } - }; - } -} -- GitLab