From 6feeaf6e5f95d75b09a1533aa34123ca7ea1f309 Mon Sep 17 00:00:00 2001 From: Zhenxu Ke Date: Fri, 18 Dec 2020 12:29:44 +0800 Subject: [PATCH] Update submodule to sync namespaced proto files (#6026) * update submodule to sync namespaced proto files * add compat E2E test and update mock collector * add changelog, fix GHA syntax, compat Java agent * highlight notes, use archive dist, revert compat in agent * polish changelog, add missing `-javaagent` in provider * fix wrong position of JAVA_OPTS * polish changelog --- .github/workflows/e2e.compat.yaml | 62 +++++++++++++++++++ CHANGES.md | 3 +- apm-protocol/apm-network/src/main/proto | 2 +- .../provider/BrowserModuleProvider.java | 8 ++- .../grpc/BrowserPerfServiceHandlerCompat.java | 41 ++++++++++++ .../clr/provider/CLRModuleProvider.java | 5 +- .../CLRMetricReportServiceHandlerCompat.java | 36 +++++++++++ .../jvm/provider/JVMModuleProvider.java | 5 +- .../JVMMetricReportServiceHandlerCompat.java | 36 +++++++++++ .../provider/RegisterModuleProvider.java | 5 +- .../grpc/ManagementServiceHandlerCompat.java | 42 +++++++++++++ .../receiver/mesh/MeshGRPCHandlerCompat.java | 35 +++++++++++ .../receiver/mesh/MeshReceiverProvider.java | 4 +- .../meter/provider/MeterReceiverProvider.java | 5 +- .../handler/MeterServiceHandlerCompat.java | 36 +++++++++++ .../provider/ProfileModuleProvider.java | 5 +- .../ProfileTaskServiceHandlerCompat.java | 48 ++++++++++++++ .../trace/provider/TraceModuleProvider.java | 5 +- ...raceSegmentReportServiceHandlerCompat.java | 42 +++++++++++++ .../docker/simple/compat/docker-compose.yml | 62 +++++++++++++++++++ .../plugin/agent-test-tools/bin/fetch-code.sh | 6 +- test/plugin/agent-test-tools/pom.xml | 4 +- 22 files changed, 480 insertions(+), 17 deletions(-) create mode 100644 .github/workflows/e2e.compat.yaml create mode 100644 oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandlerCompat.java create mode 100644 oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/handler/CLRMetricReportServiceHandlerCompat.java create mode 100644 oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricReportServiceHandlerCompat.java create mode 100644 oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v8/grpc/ManagementServiceHandlerCompat.java create mode 100644 oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshGRPCHandlerCompat.java create mode 100644 oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/handler/MeterServiceHandlerCompat.java create mode 100644 oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/handler/ProfileTaskServiceHandlerCompat.java create mode 100644 oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/grpc/TraceSegmentReportServiceHandlerCompat.java create mode 100644 test/e2e/e2e-test/docker/simple/compat/docker-compose.yml diff --git a/.github/workflows/e2e.compat.yaml b/.github/workflows/e2e.compat.yaml new file mode 100644 index 000000000..8ec01d1bb --- /dev/null +++ b/.github/workflows/e2e.compat.yaml @@ -0,0 +1,62 @@ +# 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. + +name: E2E + +on: + pull_request: + push: + branches: + - master + +env: + SKIP_TEST: true + +jobs: + Compatability: + name: Compatability + runs-on: ubuntu-latest + timeout-minutes: 30 + env: + SW_SIMPLE_CASE: compat + SW_AGENT_JDK_VERSION: 11 + SW_OAP_BASE_IMAGE: adoptopenjdk/openjdk11:alpine + steps: + - uses: actions/checkout@v2 + with: + submodules: true + - name: Cache local Maven repository + uses: actions/cache@v2 + with: + path: ~/.m2/repository + key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }} + restore-keys: | + ${{ runner.os }}-maven- + - name: Set Up Java + uses: actions/setup-java@v1 + with: + java-version: 11 + - name: Build Docker Image + run: make docker + - name: Copy dist package + run: cp -R dist test/e2e/ + - name: Compatability Test (8.3.0 Agent) + run: ./mvnw --batch-mode -f test/e2e/pom.xml -am -DfailIfNoTests=false verify -Dit.test=org.apache.skywalking.e2e.simple.SimpleE2E + - uses: actions/upload-artifact@v1 + if: failure() + with: + name: logs + path: logs diff --git a/CHANGES.md b/CHANGES.md index e03ccab09..d18d0203f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -7,6 +7,7 @@ Release Notes. #### Project * Incompatible with previous releases when use H2/MySQL/TiDB storage options, due to support multiple alarm rules triggered for one entity. * Chore: adapt `create_source_release.sh` to make it runnable on Linux. +* Add `package` to `.proto` files, prevent polluting top-level namespace in some languages; The OAP server supports previous agent releases, whereas the previous OAP server (<=8.3.0) won't recognize newer agents since this version (>= 8.4.0). #### Java Agent * The operation name of quartz-scheduler plugin, has been changed as the `quartz-scheduler/${className}` format. @@ -21,7 +22,7 @@ Release Notes. * Support Kafka MirrorMaker 2.0 to replicate topics between Kafka clusters. * Add the rule name field to alarm record storage entity as a part of ID, to support multiple alarm rules triggered for one entity. The scope id has been removed from the ID. * Fix MAL concurrent execution issues. -* Fix group name can't be query in the GraphQL. +* Fix group name can't be queried in the GraphQL. * Fix potential gRPC connection leak(not closed) for the channels among OAP instances. * Filter OAP instances(unassigned in booting stage) of the empty IP in KubernetesCoordinator. * Add component ID for Python aiohttp plugin requester and server. diff --git a/apm-protocol/apm-network/src/main/proto b/apm-protocol/apm-network/src/main/proto index 754995b9b..8c10f757a 160000 --- a/apm-protocol/apm-network/src/main/proto +++ b/apm-protocol/apm-network/src/main/proto @@ -1 +1 @@ -Subproject commit 754995b9bd4e64c34e970df3c3011efc9181c2a3 +Subproject commit 8c10f757a9088fef06d6d8b986b8a0650b7fa106 diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserModuleProvider.java index aa137283e..f80cb8071 100644 --- a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/BrowserModuleProvider.java @@ -28,6 +28,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleProvider; 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.browser.module.BrowserModule; +import org.apache.skywalking.oap.server.receiver.browser.provider.handler.grpc.BrowserPerfServiceHandlerCompat; import org.apache.skywalking.oap.server.receiver.browser.provider.handler.grpc.BrowserPerfServiceHandler; import org.apache.skywalking.oap.server.receiver.browser.provider.handler.rest.BrowserErrorLogReportListServletHandler; import org.apache.skywalking.oap.server.receiver.browser.provider.handler.rest.BrowserErrorLogReportSingleServletHandler; @@ -74,9 +75,10 @@ public class BrowserModuleProvider extends ModuleProvider { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME) .provider().getService(GRPCHandlerRegister.class); // grpc - grpcHandlerRegister.addHandler( - new BrowserPerfServiceHandler( - getManager(), moduleConfig, perfDataListenerManager(), errorLogListenerManager())); + BrowserPerfServiceHandler browserPerfServiceHandler = new BrowserPerfServiceHandler( + getManager(), moduleConfig, perfDataListenerManager(), errorLogListenerManager()); + grpcHandlerRegister.addHandler(browserPerfServiceHandler); + grpcHandlerRegister.addHandler(new BrowserPerfServiceHandlerCompat(browserPerfServiceHandler)); // rest JettyHandlerRegister jettyHandlerRegister = getManager().find(SharingServerModule.NAME) diff --git a/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandlerCompat.java new file mode 100644 index 000000000..de5819ca7 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-browser-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/browser/provider/handler/grpc/BrowserPerfServiceHandlerCompat.java @@ -0,0 +1,41 @@ +/* + * 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.browser.provider.handler.grpc; + +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.common.v3.Commands; +import org.apache.skywalking.apm.network.language.agent.v3.BrowserErrorLog; +import org.apache.skywalking.apm.network.language.agent.v3.BrowserPerfData; +import org.apache.skywalking.apm.network.language.agent.v3.compat.BrowserPerfServiceGrpc; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; + +@RequiredArgsConstructor +public class BrowserPerfServiceHandlerCompat extends BrowserPerfServiceGrpc.BrowserPerfServiceImplBase implements GRPCHandler { + private final BrowserPerfServiceHandler delegate; + + @Override + public void collectPerfData(final BrowserPerfData request, final StreamObserver responseObserver) { + delegate.collectPerfData(request, responseObserver); + } + + @Override + public StreamObserver collectErrorLogs(final StreamObserver responseObserver) { + return delegate.collectErrorLogs(responseObserver); + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/CLRModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/CLRModuleProvider.java index 6aeb88405..fc47a604d 100644 --- a/oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/CLRModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/CLRModuleProvider.java @@ -27,6 +27,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleProvider; 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.clr.module.CLRModule; +import org.apache.skywalking.oap.server.receiver.clr.provider.handler.CLRMetricReportServiceHandlerCompat; import org.apache.skywalking.oap.server.receiver.clr.provider.handler.CLRMetricReportServiceHandler; import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; @@ -66,7 +67,9 @@ public class CLRModuleProvider extends ModuleProvider { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME) .provider() .getService(GRPCHandlerRegister.class); - grpcHandlerRegister.addHandler(new CLRMetricReportServiceHandler(getManager())); + CLRMetricReportServiceHandler clrMetricReportServiceHandler = new CLRMetricReportServiceHandler(getManager()); + grpcHandlerRegister.addHandler(clrMetricReportServiceHandler); + grpcHandlerRegister.addHandler(new CLRMetricReportServiceHandlerCompat(clrMetricReportServiceHandler)); } @Override diff --git a/oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/handler/CLRMetricReportServiceHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/handler/CLRMetricReportServiceHandlerCompat.java new file mode 100644 index 000000000..9d6b81e20 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-clr-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/clr/provider/handler/CLRMetricReportServiceHandlerCompat.java @@ -0,0 +1,36 @@ +/* + * 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.clr.provider.handler; + +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.common.v3.Commands; +import org.apache.skywalking.apm.network.language.agent.v3.CLRMetricCollection; +import org.apache.skywalking.apm.network.language.agent.v3.compat.CLRMetricReportServiceGrpc; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; + +@RequiredArgsConstructor +public class CLRMetricReportServiceHandlerCompat extends CLRMetricReportServiceGrpc.CLRMetricReportServiceImplBase implements GRPCHandler { + private final CLRMetricReportServiceHandler delegate; + + @Override + public void collect(final CLRMetricCollection request, final StreamObserver responseObserver) { + delegate.collect(request, responseObserver); + } +} 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 f5194dc5b..202f9e8be 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 @@ -27,6 +27,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleProvider; import org.apache.skywalking.oap.server.library.module.ModuleStartException; import org.apache.skywalking.oap.server.receiver.jvm.module.JVMModule; import org.apache.skywalking.oap.server.receiver.jvm.provider.handler.JVMMetricReportServiceHandler; +import org.apache.skywalking.oap.server.receiver.jvm.provider.handler.JVMMetricReportServiceHandlerCompat; import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; public class JVMModuleProvider extends ModuleProvider { @@ -61,7 +62,9 @@ public class JVMModuleProvider extends ModuleProvider { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME) .provider() .getService(GRPCHandlerRegister.class); - grpcHandlerRegister.addHandler(new JVMMetricReportServiceHandler(getManager())); + JVMMetricReportServiceHandler jvmMetricReportServiceHandler = new JVMMetricReportServiceHandler(getManager()); + grpcHandlerRegister.addHandler(jvmMetricReportServiceHandler); + grpcHandlerRegister.addHandler(new JVMMetricReportServiceHandlerCompat(jvmMetricReportServiceHandler)); } @Override diff --git a/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricReportServiceHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricReportServiceHandlerCompat.java new file mode 100644 index 000000000..5044ce96e --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-jvm-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/jvm/provider/handler/JVMMetricReportServiceHandlerCompat.java @@ -0,0 +1,36 @@ +/* + * 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 lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.common.v3.Commands; +import org.apache.skywalking.apm.network.language.agent.v3.JVMMetricCollection; +import org.apache.skywalking.apm.network.language.agent.v3.compat.JVMMetricReportServiceGrpc; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; + +@RequiredArgsConstructor +public class JVMMetricReportServiceHandlerCompat extends JVMMetricReportServiceGrpc.JVMMetricReportServiceImplBase implements GRPCHandler { + private final JVMMetricReportServiceHandler delegate; + + @Override + public void collect(final JVMMetricCollection request, final StreamObserver responseObserver) { + delegate.collect(request, responseObserver); + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java index 5855d2a4d..c402eae65 100644 --- a/oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/RegisterModuleProvider.java @@ -26,6 +26,7 @@ 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.v8.grpc.ManagementServiceHandler; +import org.apache.skywalking.oap.server.receiver.register.provider.handler.v8.grpc.ManagementServiceHandlerCompat; import org.apache.skywalking.oap.server.receiver.register.provider.handler.v8.rest.ManagementServiceKeepAliveHandler; import org.apache.skywalking.oap.server.receiver.register.provider.handler.v8.rest.ManagementServiceReportPropertiesHandler; import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; @@ -56,7 +57,9 @@ public class RegisterModuleProvider extends ModuleProvider { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME) .provider() .getService(GRPCHandlerRegister.class); - grpcHandlerRegister.addHandler(new ManagementServiceHandler(getManager())); + ManagementServiceHandler managementServiceHandler = new ManagementServiceHandler(getManager()); + grpcHandlerRegister.addHandler(managementServiceHandler); + grpcHandlerRegister.addHandler(new ManagementServiceHandlerCompat(managementServiceHandler)); JettyHandlerRegister jettyHandlerRegister = getManager().find(SharingServerModule.NAME) .provider() diff --git a/oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v8/grpc/ManagementServiceHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v8/grpc/ManagementServiceHandlerCompat.java new file mode 100644 index 000000000..2991eaa9b --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-management-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/register/provider/handler/v8/grpc/ManagementServiceHandlerCompat.java @@ -0,0 +1,42 @@ +/* + * 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.v8.grpc; + +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.common.v3.Commands; +import org.apache.skywalking.apm.network.management.v3.InstancePingPkg; +import org.apache.skywalking.apm.network.management.v3.InstanceProperties; +import org.apache.skywalking.apm.network.management.v3.compat.ManagementServiceGrpc; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; + +@RequiredArgsConstructor +public class ManagementServiceHandlerCompat extends ManagementServiceGrpc.ManagementServiceImplBase implements GRPCHandler { + private final ManagementServiceHandler delegate; + + @Override + public void reportInstanceProperties(final InstanceProperties request, final StreamObserver responseObserver) { + delegate.reportInstanceProperties(request, responseObserver); + } + + @Override + public void keepAlive(final InstancePingPkg request, final StreamObserver responseObserver) { + delegate.keepAlive(request, responseObserver); + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshGRPCHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshGRPCHandlerCompat.java new file mode 100644 index 000000000..b6f48b7a2 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshGRPCHandlerCompat.java @@ -0,0 +1,35 @@ +/* + * 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.aop.server.receiver.mesh; + +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.servicemesh.v3.MeshProbeDownstream; +import org.apache.skywalking.apm.network.servicemesh.v3.ServiceMeshMetric; +import org.apache.skywalking.apm.network.servicemesh.v3.compat.ServiceMeshMetricServiceGrpc; + +@RequiredArgsConstructor +public class MeshGRPCHandlerCompat extends ServiceMeshMetricServiceGrpc.ServiceMeshMetricServiceImplBase { + private final MeshGRPCHandler delegate; + + @Override + public StreamObserver collect(final StreamObserver responseObserver) { + return delegate.collect(responseObserver); + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java index 89e1eebd8..9ae66e448 100644 --- a/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-mesh-receiver-plugin/src/main/java/org/apache/skywalking/aop/server/receiver/mesh/MeshReceiverProvider.java @@ -68,7 +68,9 @@ public class MeshReceiverProvider extends ModuleProvider { GRPCHandlerRegister service = getManager().find(SharingServerModule.NAME) .provider() .getService(GRPCHandlerRegister.class); - service.addHandler(new MeshGRPCHandler(getManager())); + MeshGRPCHandler meshGRPCHandler = new MeshGRPCHandler(getManager()); + service.addHandler(meshGRPCHandler); + service.addHandler(new MeshGRPCHandlerCompat(meshGRPCHandler)); } @Override diff --git a/oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/MeterReceiverProvider.java b/oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/MeterReceiverProvider.java index 8ff21b08f..730ee1c68 100644 --- a/oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/MeterReceiverProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/MeterReceiverProvider.java @@ -28,6 +28,7 @@ import org.apache.skywalking.oap.server.library.module.ModuleProvider; import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedException; import org.apache.skywalking.oap.server.receiver.meter.module.MeterReceiverModule; import org.apache.skywalking.oap.server.receiver.meter.provider.handler.MeterServiceHandler; +import org.apache.skywalking.oap.server.receiver.meter.provider.handler.MeterServiceHandlerCompat; import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; public class MeterReceiverProvider extends ModuleProvider { @@ -61,7 +62,9 @@ public class MeterReceiverProvider extends ModuleProvider { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME) .provider() .getService(GRPCHandlerRegister.class); - grpcHandlerRegister.addHandler(new MeterServiceHandler(processService)); + MeterServiceHandler meterServiceHandlerCompat = new MeterServiceHandler(processService); + grpcHandlerRegister.addHandler(meterServiceHandlerCompat); + grpcHandlerRegister.addHandler(new MeterServiceHandlerCompat(meterServiceHandlerCompat)); } @Override diff --git a/oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/handler/MeterServiceHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/handler/MeterServiceHandlerCompat.java new file mode 100644 index 000000000..b21a1f5ab --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-meter-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/meter/provider/handler/MeterServiceHandlerCompat.java @@ -0,0 +1,36 @@ +/* + * 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.meter.provider.handler; + +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.common.v3.Commands; +import org.apache.skywalking.apm.network.language.agent.v3.MeterData; +import org.apache.skywalking.apm.network.language.agent.v3.compat.MeterReportServiceGrpc; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; + +@RequiredArgsConstructor +public class MeterServiceHandlerCompat extends MeterReportServiceGrpc.MeterReportServiceImplBase implements GRPCHandler { + private final MeterServiceHandler delegate; + + @Override + public StreamObserver collect(final StreamObserver responseObserver) { + return delegate.collect(responseObserver); + } +} diff --git a/oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/ProfileModuleProvider.java b/oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/ProfileModuleProvider.java index a1b994148..88b4374d4 100644 --- a/oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/ProfileModuleProvider.java +++ b/oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/ProfileModuleProvider.java @@ -27,6 +27,7 @@ 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.profile.module.ProfileModule; import org.apache.skywalking.oap.server.receiver.profile.provider.handler.ProfileTaskServiceHandler; +import org.apache.skywalking.oap.server.receiver.profile.provider.handler.ProfileTaskServiceHandlerCompat; import org.apache.skywalking.oap.server.receiver.sharing.server.SharingServerModule; /** @@ -57,7 +58,9 @@ public class ProfileModuleProvider extends ModuleProvider { GRPCHandlerRegister grpcHandlerRegister = getManager().find(SharingServerModule.NAME) .provider() .getService(GRPCHandlerRegister.class); - grpcHandlerRegister.addHandler(new ProfileTaskServiceHandler(getManager())); + ProfileTaskServiceHandler profileTaskServiceHandler = new ProfileTaskServiceHandler(getManager()); + grpcHandlerRegister.addHandler(profileTaskServiceHandler); + grpcHandlerRegister.addHandler(new ProfileTaskServiceHandlerCompat(profileTaskServiceHandler)); } @Override diff --git a/oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/handler/ProfileTaskServiceHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/handler/ProfileTaskServiceHandlerCompat.java new file mode 100644 index 000000000..d911bf093 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-profile-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/profile/provider/handler/ProfileTaskServiceHandlerCompat.java @@ -0,0 +1,48 @@ +/* + * 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.profile.provider.handler; + +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.common.v3.Commands; +import org.apache.skywalking.apm.network.language.profile.v3.ProfileTaskCommandQuery; +import org.apache.skywalking.apm.network.language.profile.v3.ProfileTaskFinishReport; +import org.apache.skywalking.apm.network.language.profile.v3.ThreadSnapshot; +import org.apache.skywalking.apm.network.language.profile.v3.compat.ProfileTaskGrpc; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; + +@RequiredArgsConstructor +public class ProfileTaskServiceHandlerCompat extends ProfileTaskGrpc.ProfileTaskImplBase implements GRPCHandler { + private final ProfileTaskServiceHandler delegate; + + @Override + public void getProfileTaskCommands(final ProfileTaskCommandQuery request, final StreamObserver responseObserver) { + delegate.getProfileTaskCommands(request, responseObserver); + } + + @Override + public StreamObserver collectSnapshot(final StreamObserver responseObserver) { + return delegate.collectSnapshot(responseObserver); + } + + @Override + public void reportTaskFinish(final ProfileTaskFinishReport request, final StreamObserver responseObserver) { + delegate.reportTaskFinish(request, responseObserver); + } +} 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 98b07e1da..16fcde313 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 @@ -30,6 +30,7 @@ import org.apache.skywalking.oap.server.library.module.ServiceNotProvidedExcepti 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.v8.grpc.TraceSegmentReportServiceHandler; +import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v8.grpc.TraceSegmentReportServiceHandlerCompat; import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v8.rest.TraceSegmentReportListServletHandler; import org.apache.skywalking.oap.server.receiver.trace.provider.handler.v8.rest.TraceSegmentReportSingleServletHandler; import org.apache.skywalking.oap.server.telemetry.TelemetryModule; @@ -65,7 +66,9 @@ public class TraceModuleProvider extends ModuleProvider { .provider() .getService(JettyHandlerRegister.class); - grpcHandlerRegister.addHandler(new TraceSegmentReportServiceHandler(getManager())); + TraceSegmentReportServiceHandler traceSegmentReportServiceHandler = new TraceSegmentReportServiceHandler(getManager()); + grpcHandlerRegister.addHandler(traceSegmentReportServiceHandler); + grpcHandlerRegister.addHandler(new TraceSegmentReportServiceHandlerCompat(traceSegmentReportServiceHandler)); jettyHandlerRegister.addHandler(new TraceSegmentReportListServletHandler(getManager())); jettyHandlerRegister.addHandler(new TraceSegmentReportSingleServletHandler(getManager())); diff --git a/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/grpc/TraceSegmentReportServiceHandlerCompat.java b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/grpc/TraceSegmentReportServiceHandlerCompat.java new file mode 100644 index 000000000..3e25fa5c6 --- /dev/null +++ b/oap-server/server-receiver-plugin/skywalking-trace-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/trace/provider/handler/v8/grpc/TraceSegmentReportServiceHandlerCompat.java @@ -0,0 +1,42 @@ +/* + * 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.v8.grpc; + +import io.grpc.stub.StreamObserver; +import lombok.RequiredArgsConstructor; +import org.apache.skywalking.apm.network.common.v3.Commands; +import org.apache.skywalking.apm.network.language.agent.v3.SegmentCollection; +import org.apache.skywalking.apm.network.language.agent.v3.SegmentObject; +import org.apache.skywalking.apm.network.language.agent.v3.compat.TraceSegmentReportServiceGrpc; +import org.apache.skywalking.oap.server.library.server.grpc.GRPCHandler; + +@RequiredArgsConstructor +public class TraceSegmentReportServiceHandlerCompat extends TraceSegmentReportServiceGrpc.TraceSegmentReportServiceImplBase implements GRPCHandler { + private final TraceSegmentReportServiceHandler delegate; + + @Override + public StreamObserver collect(final StreamObserver responseObserver) { + return delegate.collect(responseObserver); + } + + @Override + public void collectInSync(final SegmentCollection request, final StreamObserver responseObserver) { + delegate.collectInSync(request, responseObserver); + } +} diff --git a/test/e2e/e2e-test/docker/simple/compat/docker-compose.yml b/test/e2e/e2e-test/docker/simple/compat/docker-compose.yml new file mode 100644 index 000000000..7586ccb6f --- /dev/null +++ b/test/e2e/e2e-test/docker/simple/compat/docker-compose.yml @@ -0,0 +1,62 @@ +# 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. + +version: '2.1' + +services: + oap: + environment: + SW_PROMETHEUS_FETCHER: "default" + SW_TELEMETRY: prometheus + extends: + file: ../../base-compose.yml + service: oap + + ui: + extends: + file: ../../base-compose.yml + service: ui + depends_on: + oap: + condition: service_healthy + + provider: + build: + context: ../../../.. + dockerfile: e2e-test/docker/Dockerfile.provider + args: + - SW_AGENT_JDK_VERSION=${SW_AGENT_JDK_VERSION:-11} + - DIST_PACKAGE=http://archive.apache.org/dist/skywalking/8.3.0/apache-skywalking-apm-8.3.0.tar.gz + networks: + - e2e + expose: + - 9090 + - 5005 + volumes: + - ../../../jacoco:/jacoco + environment: + SW_AGENT_COLLECTOR_BACKEND_SERVICES: oap:11800 + JAVA_OPTS: -javaagent:/skywalking/agent/skywalking-agent.jar=logging.output=CONSOLE + healthcheck: + test: ["CMD", "sh", "-c", "nc -nz 127.0.0.1 9090"] + interval: 5s + timeout: 60s + retries: 120 + depends_on: + oap: + condition: service_healthy + +networks: + e2e: diff --git a/test/plugin/agent-test-tools/bin/fetch-code.sh b/test/plugin/agent-test-tools/bin/fetch-code.sh index 5189a4558..b7e16f2e7 100644 --- a/test/plugin/agent-test-tools/bin/fetch-code.sh +++ b/test/plugin/agent-test-tools/bin/fetch-code.sh @@ -21,7 +21,7 @@ RESPOSITORY=$2 COMMIT_ID=$3 DIST_DIRECTORY=$4 -HOME_DIR="$(cd "$(dirname $0)"; pwd)" +ROOT_DIR="$(cd "$(dirname $0)"; pwd)" git clone $RESPOSITORY $WORK_DIRECTORY @@ -29,8 +29,8 @@ cd $WORK_DIRECTORY git checkout $COMMIT_ID -mvn -B package -DskipTests +"$ROOT_DIR"/../../../../mvnw -B package -DskipTests [[ -d $DIST_DIRECTORY ]] || mkdir -p $DIST_DIRECTORY -cp $WORK_DIRECTORY/dist/* $DIST_DIRECTORY/ \ No newline at end of file +cp $WORK_DIRECTORY/dist/* $DIST_DIRECTORY/ diff --git a/test/plugin/agent-test-tools/pom.xml b/test/plugin/agent-test-tools/pom.xml index d3c9e5e97..c22023450 100644 --- a/test/plugin/agent-test-tools/pom.xml +++ b/test/plugin/agent-test-tools/pom.xml @@ -35,7 +35,7 @@ pom - d75f7e1f593bd3816f6cd815482e355658adb8a0 + 24270f8f1ee1cb9186ede5202ff1c4ae3d2d482a ${project.basedir}/target/agent-test-tools https://github.com/apache/skywalking-agent-test-tool.git @@ -70,4 +70,4 @@ - \ No newline at end of file +