You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2021/10/26 08:34:35 UTC

[skywalking] branch master updated: Support JDK 16 and 17. (#8005)

This is an automated email from the ASF dual-hosted git repository.

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new e575701  Support JDK 16 and 17. (#8005)
e575701 is described below

commit e575701f85495235b210b770b90c8edcc5e25a05
Author: 吴晟 Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Oct 26 16:34:24 2021 +0800

    Support JDK 16 and 17. (#8005)
---
 .github/workflows/e2e.jdk-versions.yaml            |  2 +-
 CHANGES.md                                         |  1 +
 docs/en/setup/backend/backend-setup.md             |  2 +-
 .../org/apache/skywalking/oal/rt/OALRuntime.java   | 26 +++++++++++++++++----
 .../dispatcher/DispatcherClassPackageHolder.java}  | 22 ++++++------------
 .../oal/rt/metrics/MetricClassPackageHolder.java}  | 22 ++++++------------
 .../builder/MetricBuilderClassPackageHolder.java}  | 22 ++++++------------
 .../server/core/analysis/meter/MeterSystem.java    | 27 ++++++++++++++--------
 .../meter/dynamic/MeterClassPackageHolder.java}    | 22 ++++++------------
 .../oap/server/core/oal/rt/OALDefine.java          | 23 +++++++++++++-----
 .../oap/server/receiver/envoy/TCPOALDefine.java    |  2 +-
 11 files changed, 89 insertions(+), 82 deletions(-)

diff --git a/.github/workflows/e2e.jdk-versions.yaml b/.github/workflows/e2e.jdk-versions.yaml
index b68b6a2..36db82e 100644
--- a/.github/workflows/e2e.jdk-versions.yaml
+++ b/.github/workflows/e2e.jdk-versions.yaml
@@ -33,7 +33,7 @@ jobs:
     timeout-minutes: 90
     strategy:
       matrix:
-        jdk: [ 8, 11, 12, 13, 14, 15 ]
+        jdk: [ 8, 11, 12, 13, 14, 15, 16 ]
     env:
       SW_AGENT_JDK_VERSION: ${{ matrix.jdk }}
       SW_OAP_BASE_IMAGE: adoptopenjdk/openjdk${{ matrix.jdk }}:alpine-jre
diff --git a/CHANGES.md b/CHANGES.md
index 60bd3e7..831aecb 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -24,6 +24,7 @@ Release Notes.
   - Profile
   - Kafka: Base, Meter, Log, Profile
   - Client-JS
+* Support JDK 16 and 17.
 
 #### OAP Server
 
diff --git a/docs/en/setup/backend/backend-setup.md b/docs/en/setup/backend/backend-setup.md
index 543392f..b5651de 100755
--- a/docs/en/setup/backend/backend-setup.md
+++ b/docs/en/setup/backend/backend-setup.md
@@ -15,7 +15,7 @@ SkyWalking's backend distribution package consists of the following parts:
 
 ## Requirements and default settings
 
-Requirement: **JDK8 to JDK12 are tested**. Other versions are not tested and may or may not work.
+Requirement: **JDK8 to JDK17 are tested**. Other versions are not tested and may or may not work.
 
 Before you start, you should know that the main purpose of quickstart is to help you obtain a basic configuration for previews/demo. Performance and long-term running are not our goals.
 
diff --git a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
index c75e837..df2c663 100644
--- a/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oal/rt/OALRuntime.java
@@ -49,6 +49,8 @@ import javassist.bytecode.annotation.IntegerMemberValue;
 import javassist.bytecode.annotation.StringMemberValue;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.lang3.JavaVersion;
+import org.apache.commons.lang3.SystemUtils;
 import org.apache.skywalking.apm.util.StringUtil;
 import org.apache.skywalking.oal.rt.output.AllDispatcherContext;
 import org.apache.skywalking.oal.rt.output.DispatcherContext;
@@ -65,6 +67,9 @@ import org.apache.skywalking.oap.server.core.analysis.StreamAnnotationListener;
 import org.apache.skywalking.oap.server.core.oal.rt.OALCompileException;
 import org.apache.skywalking.oap.server.core.oal.rt.OALDefine;
 import org.apache.skywalking.oap.server.core.oal.rt.OALEngine;
+import org.apache.skywalking.oap.server.core.source.oal.rt.dispatcher.DispatcherClassPackageHolder;
+import org.apache.skywalking.oap.server.core.source.oal.rt.metrics.MetricClassPackageHolder;
+import org.apache.skywalking.oap.server.core.source.oal.rt.metrics.builder.MetricBuilderClassPackageHolder;
 import org.apache.skywalking.oap.server.core.storage.StorageBuilderFactory;
 import org.apache.skywalking.oap.server.core.storage.StorageException;
 import org.apache.skywalking.oap.server.core.storage.annotation.Column;
@@ -295,7 +300,8 @@ public class OALRuntime implements OALEngine {
             constPool, AnnotationsAttribute.visibleTag);
         Annotation streamAnnotation = new Annotation(Stream.class.getName(), constPool);
         streamAnnotation.addMemberValue("name", new StringMemberValue(metricsStmt.getTableName(), constPool));
-        streamAnnotation.addMemberValue("scopeId", new IntegerMemberValue(constPool, metricsStmt.getFrom().getSourceScopeId()));
+        streamAnnotation.addMemberValue(
+            "scopeId", new IntegerMemberValue(constPool, metricsStmt.getFrom().getSourceScopeId()));
         streamAnnotation.addMemberValue(
             "builder", new ClassMemberValue(metricsBuilderClassName(metricsStmt, true), constPool));
         streamAnnotation.addMemberValue("processor", new ClassMemberValue(METRICS_STREAM_PROCESSOR, constPool));
@@ -305,7 +311,11 @@ public class OALRuntime implements OALEngine {
 
         Class targetClass;
         try {
-            targetClass = metricsClass.toClass(currentClassLoader, null);
+            if (SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_8)) {
+                targetClass = metricsClass.toClass(currentClassLoader, null);
+            } else {
+                targetClass = metricsClass.toClass(MetricClassPackageHolder.class);
+            }
         } catch (CannotCompileException e) {
             log.error("Can't compile/load " + className + ".", e);
             throw new OALCompileException(e.getMessage(), e);
@@ -359,7 +369,11 @@ public class OALRuntime implements OALEngine {
         }
 
         try {
-            metricsBuilderClass.toClass(currentClassLoader, null);
+            if (SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_8)) {
+                metricsBuilderClass.toClass(currentClassLoader, null);
+            } else {
+                metricsBuilderClass.toClass(MetricBuilderClassPackageHolder.class);
+            }
         } catch (CannotCompileException e) {
             log.error("Can't compile/load " + className + ".", e);
             throw new OALCompileException(e.getMessage(), e);
@@ -437,7 +451,11 @@ public class OALRuntime implements OALEngine {
 
         Class targetClass;
         try {
-            targetClass = dispatcherClass.toClass(currentClassLoader, null);
+            if (SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_8)) {
+                targetClass = dispatcherClass.toClass(currentClassLoader, null);
+            } else {
+                targetClass = dispatcherClass.toClass(DispatcherClassPackageHolder.class);
+            }
         } catch (CannotCompileException e) {
             log.error("Can't compile/load " + className + ".", e);
             throw new OALCompileException(e.getMessage(), e);
diff --git a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/dispatcher/DispatcherClassPackageHolder.java
similarity index 58%
copy from oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
copy to oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/dispatcher/DispatcherClassPackageHolder.java
index 93ca899..076cc70 100644
--- a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/dispatcher/DispatcherClassPackageHolder.java
@@ -6,30 +6,22 @@
  * (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
+ *     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.envoy;
-
-import org.apache.skywalking.oap.server.core.oal.rt.OALDefine;
+package org.apache.skywalking.oap.server.core.source.oal.rt.dispatcher;
 
 /**
- * OAL rules to calculate TCP-specific metrics.
+ * DispatcherClassPackageHolder holds the package for generated metric classes.
+ *
+ * @since 8.9.0 for adopting JDK16+ to avoid `--add-opens java.base/java.lang=ALL-UNNAMED`
  */
-public class TCPOALDefine extends OALDefine {
-    public static final TCPOALDefine INSTANCE = new TCPOALDefine();
-
-    private TCPOALDefine() {
-        super(
-            "oal/tcp.oal",
-            "org.apache.skywalking.oap.server.core.source",
-            "org.apache.skywalking.oap.server.core.source.tcp"
-        );
-    }
+public class DispatcherClassPackageHolder {
 }
diff --git a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/metrics/MetricClassPackageHolder.java
similarity index 58%
copy from oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
copy to oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/metrics/MetricClassPackageHolder.java
index 93ca899..c95ff64 100644
--- a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/metrics/MetricClassPackageHolder.java
@@ -6,30 +6,22 @@
  * (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
+ *     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.envoy;
-
-import org.apache.skywalking.oap.server.core.oal.rt.OALDefine;
+package org.apache.skywalking.oap.server.core.source.oal.rt.metrics;
 
 /**
- * OAL rules to calculate TCP-specific metrics.
+ * MetricClassPackageHolder holds the package for generated metric classes.
+ *
+ * @since 8.9.0 for adopting JDK16+ to avoid `--add-opens java.base/java.lang=ALL-UNNAMED`
  */
-public class TCPOALDefine extends OALDefine {
-    public static final TCPOALDefine INSTANCE = new TCPOALDefine();
-
-    private TCPOALDefine() {
-        super(
-            "oal/tcp.oal",
-            "org.apache.skywalking.oap.server.core.source",
-            "org.apache.skywalking.oap.server.core.source.tcp"
-        );
-    }
+public class MetricClassPackageHolder {
 }
diff --git a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/metrics/builder/MetricBuilderClassPackageHolder.java
similarity index 58%
copy from oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
copy to oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/metrics/builder/MetricBuilderClassPackageHolder.java
index 93ca899..ef10c24 100644
--- a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
+++ b/oap-server/oal-rt/src/main/java/org/apache/skywalking/oap/server/core/source/oal/rt/metrics/builder/MetricBuilderClassPackageHolder.java
@@ -6,30 +6,22 @@
  * (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
+ *     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.envoy;
-
-import org.apache.skywalking.oap.server.core.oal.rt.OALDefine;
+package org.apache.skywalking.oap.server.core.source.oal.rt.metrics.builder;
 
 /**
- * OAL rules to calculate TCP-specific metrics.
+ * MetricBuilderClassPackageHolder holds the package for generated metric builder classes.
+ *
+ * @since 8.9.0 for adopting JDK16+ to avoid `--add-opens java.base/java.lang=ALL-UNNAMED`
  */
-public class TCPOALDefine extends OALDefine {
-    public static final TCPOALDefine INSTANCE = new TCPOALDefine();
-
-    private TCPOALDefine() {
-        super(
-            "oal/tcp.oal",
-            "org.apache.skywalking.oap.server.core.source",
-            "org.apache.skywalking.oap.server.core.source.tcp"
-        );
-    }
+public class MetricBuilderClassPackageHolder {
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
index 9930155..5ea1e70 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/MeterSystem.java
@@ -36,9 +36,12 @@ import javassist.NotFoundException;
 import lombok.Getter;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.JavaVersion;
+import org.apache.commons.lang3.SystemUtils;
 import org.apache.skywalking.oap.server.core.UnexpectedException;
 import org.apache.skywalking.oap.server.core.analysis.StreamDefinition;
 import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
+import org.apache.skywalking.oap.server.core.analysis.meter.dynamic.MeterClassPackageHolder;
 import org.apache.skywalking.oap.server.core.analysis.meter.function.AcceptableValue;
 import org.apache.skywalking.oap.server.core.analysis.meter.function.MeterFunction;
 import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
@@ -103,8 +106,8 @@ public class MeterSystem implements Service {
      * @throws UnexpectedException      if binary code manipulation fails or stream core failure.
      */
     public synchronized <T> void create(String metricsName,
-        String functionName,
-        ScopeType type) throws IllegalArgumentException {
+                                        String functionName,
+                                        ScopeType type) throws IllegalArgumentException {
         final Class<? extends AcceptableValue> meterFunction = functionRegister.get(functionName);
 
         if (meterFunction == null) {
@@ -138,9 +141,9 @@ public class MeterSystem implements Service {
      * @throws UnexpectedException      if binary code manipulation fails or stream core failure.
      */
     public synchronized <T> void create(String metricsName,
-                                           String functionName,
-                                           ScopeType type,
-                                           Class<T> dataType) throws IllegalArgumentException {
+                                        String functionName,
+                                        ScopeType type,
+                                        Class<T> dataType) throws IllegalArgumentException {
         /**
          * Create a new meter class dynamically.
          */
@@ -191,11 +194,13 @@ public class MeterSystem implements Service {
          */
         try {
             CtClass existingMetric = classPool.get(METER_CLASS_PACKAGE + className);
-            if (existingMetric.getSuperclass() != parentClass || type != meterPrototypes.get(metricsName).getScopeType()) {
-                throw new IllegalArgumentException(metricsName + " has been defined, but calculate function or/are scope type is/are different.");
+            if (existingMetric.getSuperclass() != parentClass || type != meterPrototypes.get(metricsName)
+                                                                                        .getScopeType()) {
+                throw new IllegalArgumentException(
+                    metricsName + " has been defined, but calculate function or/are scope type is/are different.");
             }
             log.info("Metric {} is already defined, so skip the metric creation.", metricsName);
-            return ;
+            return;
         } catch (NotFoundException e) {
         }
 
@@ -230,7 +235,11 @@ public class MeterSystem implements Service {
 
         Class targetClass;
         try {
-            targetClass = metricsClass.toClass(MeterSystem.class.getClassLoader(), null);
+            if (SystemUtils.isJavaVersionAtMost(JavaVersion.JAVA_1_8)) {
+                targetClass = metricsClass.toClass(MeterSystem.class.getClassLoader(), null);
+            } else {
+                targetClass = metricsClass.toClass(MeterClassPackageHolder.class);
+            }
             AcceptableValue prototype = (AcceptableValue) targetClass.newInstance();
             meterPrototypes.put(metricsName, new MeterDefinition(type, prototype, dataType));
 
diff --git a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/dynamic/MeterClassPackageHolder.java
similarity index 58%
copy from oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
copy to oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/dynamic/MeterClassPackageHolder.java
index 93ca899..7d3b6b5 100644
--- a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/meter/dynamic/MeterClassPackageHolder.java
@@ -6,30 +6,22 @@
  * (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
+ *     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.envoy;
-
-import org.apache.skywalking.oap.server.core.oal.rt.OALDefine;
+package org.apache.skywalking.oap.server.core.analysis.meter.dynamic;
 
 /**
- * OAL rules to calculate TCP-specific metrics.
+ * MeterClassPackageHolder holds the package for generated meter classes.
+ *
+ * @since 8.9.0 for adopting JDK16+ to avoid `--add-opens java.base/java.lang=ALL-UNNAMED`
  */
-public class TCPOALDefine extends OALDefine {
-    public static final TCPOALDefine INSTANCE = new TCPOALDefine();
-
-    private TCPOALDefine() {
-        super(
-            "oal/tcp.oal",
-            "org.apache.skywalking.oap.server.core.source",
-            "org.apache.skywalking.oap.server.core.source.tcp"
-        );
-    }
+public class MeterClassPackageHolder {
 }
diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALDefine.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALDefine.java
index b33cd07..128c74f 100644
--- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALDefine.java
+++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/oal/rt/OALDefine.java
@@ -20,6 +20,7 @@ package org.apache.skywalking.oap.server.core.oal.rt;
 import lombok.EqualsAndHashCode;
 import lombok.Getter;
 import lombok.ToString;
+import org.apache.skywalking.apm.util.StringUtil;
 import org.apache.skywalking.oap.server.core.Const;
 
 import static java.util.Objects.requireNonNull;
@@ -32,18 +33,28 @@ import static java.util.Objects.requireNonNull;
 @EqualsAndHashCode
 public abstract class OALDefine {
     protected OALDefine(final String configFile,
-              final String sourcePackage) {
-        this(configFile, sourcePackage, sourcePackage);
+                        final String sourcePackage) {
+        this(configFile, sourcePackage, Const.EMPTY_STRING);
     }
 
+    /**
+     * Define the booting parameters for OAL engine
+     *
+     * @param configFile    OAL script file path
+     * @param sourcePackage the package path of source(s) used in given config OAL script file
+     * @param catalog       of metrics defined through given OAL script file. Be used as prefix of generated dispatcher
+     *                      class name.
+     */
     protected OALDefine(final String configFile,
                         final String sourcePackage,
-                        final String dispatcherPackage) {
+                        final String catalog) {
         this.configFile = requireNonNull(configFile);
         this.sourcePackage = appendPoint(requireNonNull(sourcePackage));
-        this.dynamicMetricsClassPackage = appendPoint(sourcePackage + ".oal.rt.metrics");
-        this.dynamicMetricsBuilderClassPackage = appendPoint(sourcePackage + ".oal.rt.metrics.builder");
-        this.dynamicDispatcherClassPackage = appendPoint(dispatcherPackage + ".oal.rt.dispatcher");
+        this.dynamicMetricsClassPackage = "org.apache.skywalking.oap.server.core.source.oal.rt.metrics.";
+        this.dynamicMetricsBuilderClassPackage = "org.apache.skywalking.oap.server.core.source.oal.rt.metrics.builder.";
+        this.dynamicDispatcherClassPackage = StringUtil.isBlank(catalog) ?
+            "org.apache.skywalking.oap.server.core.source.oal.rt.dispatcher." :
+            "org.apache.skywalking.oap.server.core.source.oal.rt.dispatcher." + catalog;
     }
 
     private final String configFile;
diff --git a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java b/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
index 93ca899..baae129 100644
--- a/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
+++ b/oap-server/server-receiver-plugin/envoy-metrics-receiver-plugin/src/main/java/org/apache/skywalking/oap/server/receiver/envoy/TCPOALDefine.java
@@ -29,7 +29,7 @@ public class TCPOALDefine extends OALDefine {
         super(
             "oal/tcp.oal",
             "org.apache.skywalking.oap.server.core.source",
-            "org.apache.skywalking.oap.server.core.source.tcp"
+            "EnvoyTCP"
         );
     }
 }