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 03:45:44 UTC
[skywalking] 01/01: Support JDK 16 and 17.
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch jdk17
in repository https://gitbox.apache.org/repos/asf/skywalking.git
commit 4f8919c5c5324343358a4621eff2444de1a193b8
Author: Wu Sheng <wu...@foxmail.com>
AuthorDate: Tue Oct 26 11:45:21 2021 +0800
Support JDK 16 and 17.
---
.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 | 25 +++++++++++++++---
.../dispatcher/DispatcherClassPackageHolder.java} | 22 +++++-----------
.../oal/rt/metrics/MetricClassPackageHolder.java} | 22 +++++-----------
.../builder/MetricBuilderClassPackageHolder.java} | 22 +++++-----------
.../server/core/analysis/meter/MeterSystem.java | 26 ++++++++++++-------
.../meter/dynamic/MeterClassPackageHolder.java} | 22 +++++-----------
.../oap/server/core/oal/rt/OALDefine.java | 14 +++-------
.../oap/server/library/util/JVMEnvUtil.java} | 30 ++++++++++++----------
.../oap/server/receiver/envoy/TCPOALDefine.java | 3 +--
12 files changed, 91 insertions(+), 100 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 9bc7390..3fd4097 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..afee5c8 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
@@ -65,10 +65,14 @@ 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;
import org.apache.skywalking.oap.server.library.module.ModuleStartException;
+import org.apache.skywalking.oap.server.library.util.JVMEnvUtil;
import org.apache.skywalking.oap.server.library.util.ResourceUtils;
/**
@@ -295,7 +299,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 +310,11 @@ public class OALRuntime implements OALEngine {
Class targetClass;
try {
- targetClass = metricsClass.toClass(currentClassLoader, null);
+ if (JVMEnvUtil.version() < 9) {
+ 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 +368,11 @@ public class OALRuntime implements OALEngine {
}
try {
- metricsBuilderClass.toClass(currentClassLoader, null);
+ if (JVMEnvUtil.version() < 9) {
+ 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 +450,11 @@ public class OALRuntime implements OALEngine {
Class targetClass;
try {
- targetClass = dispatcherClass.toClass(currentClassLoader, null);
+ if (JVMEnvUtil.version() < 9) {
+ 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..91996b5 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
@@ -39,6 +39,7 @@ import lombok.extern.slf4j.Slf4j;
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;
@@ -46,6 +47,7 @@ import org.apache.skywalking.oap.server.core.analysis.worker.MetricsStreamProces
import org.apache.skywalking.oap.server.core.storage.StorageException;
import org.apache.skywalking.oap.server.library.module.ModuleManager;
import org.apache.skywalking.oap.server.library.module.Service;
+import org.apache.skywalking.oap.server.library.util.JVMEnvUtil;
/**
* MeterSystem provides the API way to create {@link MetricsStreamProcessor} rather than manual analysis metrics or OAL
@@ -103,8 +105,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 +140,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 +193,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 +234,11 @@ public class MeterSystem implements Service {
Class targetClass;
try {
- targetClass = metricsClass.toClass(MeterSystem.class.getClassLoader(), null);
+ if (JVMEnvUtil.version() < 9) {
+ 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..a6e2de9 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
@@ -32,18 +32,12 @@ import static java.util.Objects.requireNonNull;
@EqualsAndHashCode
public abstract class OALDefine {
protected OALDefine(final String configFile,
- final String sourcePackage) {
- this(configFile, sourcePackage, sourcePackage);
- }
-
- protected OALDefine(final String configFile,
- final String sourcePackage,
- final String dispatcherPackage) {
+ final String sourcePackage) {
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 = "org.apache.skywalking.oap.server.core.source.oal.rt.dispatcher.";
}
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-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/JVMEnvUtil.java
similarity index 51%
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-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/JVMEnvUtil.java
index 93ca899..d50f2e8 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-library/library-util/src/main/java/org/apache/skywalking/oap/server/library/util/JVMEnvUtil.java
@@ -6,30 +6,34 @@
* (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.library.util;
/**
- * OAL rules to calculate TCP-specific metrics.
+ * JVMEnvUtil provides the metadata of current JVM.
*/
-public class TCPOALDefine extends OALDefine {
- public static final TCPOALDefine INSTANCE = new TCPOALDefine();
+public class JVMEnvUtil {
+ private static final String JVM_VERSION = System.getProperty("java.version");
+ private static int JVM_MAJOR_VERSION = -1;
- private TCPOALDefine() {
- super(
- "oal/tcp.oal",
- "org.apache.skywalking.oap.server.core.source",
- "org.apache.skywalking.oap.server.core.source.tcp"
- );
+ public static int version() {
+ if (JVM_MAJOR_VERSION < 0) {
+ final String[] versionSegments = JVM_VERSION.split("\\.");
+ if (versionSegments[0].equals("1")) {
+ JVM_MAJOR_VERSION = Integer.parseInt(versionSegments[1]);
+ } else {
+ JVM_MAJOR_VERSION = Integer.parseInt(versionSegments[0]);
+ }
+ }
+ return JVM_MAJOR_VERSION;
}
}
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..96d968e 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
@@ -28,8 +28,7 @@ public class TCPOALDefine extends OALDefine {
private TCPOALDefine() {
super(
"oal/tcp.oal",
- "org.apache.skywalking.oap.server.core.source",
- "org.apache.skywalking.oap.server.core.source.tcp"
+ "org.apache.skywalking.oap.server.core.source"
);
}
}