diff --git a/apm-dist/src/main/assembly/binary.xml b/apm-dist/src/main/assembly/binary.xml index 27a9499bba..ca82e01f38 100644 --- a/apm-dist/src/main/assembly/binary.xml +++ b/apm-dist/src/main/assembly/binary.xml @@ -60,6 +60,7 @@ metadata-service-mapping.yaml trace-sampling-policy-settings.yml hierarchy-definition.yml + bydb.dependencies.properties oal/*.oal fetcher-prom-rules/*.yaml envoy-metrics-rules/** diff --git a/docs/en/setup/backend/storages/banyandb.md b/docs/en/setup/backend/storages/banyandb.md index 5019604dc0..ec5f89e744 100644 --- a/docs/en/setup/backend/storages/banyandb.md +++ b/docs/en/setup/backend/storages/banyandb.md @@ -10,6 +10,7 @@ bydb.version=x.y # BanyanDB API version is the version number of the BanyanDB query APIs # OAP server has bundled implementation of BanyanDB Java client. # Please check BanyanDB documentation for the API version compatibility. +# https://skywalking.apache.org/docs/skywalking-banyandb/next/installation/versions # Each `bydb.api.version` could have multiple compatible release version(`bydb.version`). bydb.api.version=x.y ``` diff --git a/oap-server/server-starter/src/main/resources/bydb.dependencies.properties b/oap-server/server-starter/src/main/resources/bydb.dependencies.properties index 78b00cd001..cbe463a24a 100644 --- a/oap-server/server-starter/src/main/resources/bydb.dependencies.properties +++ b/oap-server/server-starter/src/main/resources/bydb.dependencies.properties @@ -19,5 +19,6 @@ bydb.version=0.8 # BanyanDB API version is the version number of the BanyanDB query APIs # OAP server has bundled implementation of BanyanDB Java client. # Please check BanyanDB documentation for the API version compatibility. +# https://skywalking.apache.org/docs/skywalking-banyandb/next/installation/versions # Each `bydb.api.version` could have multiple compatible release version(`bydb.version`). bydb.api.version=0.8 \ No newline at end of file diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java index e324a5e231..b2b0a647fd 100644 --- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java +++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java @@ -21,9 +21,11 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb; import io.grpc.Status; import io.grpc.StatusRuntimeException; import java.io.IOException; +import java.io.InputStream; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.Properties; import lombok.extern.slf4j.Slf4j; import org.apache.skywalking.banyandb.common.v1.BanyandbCommon; import org.apache.skywalking.banyandb.common.v1.BanyandbCommon.Group; @@ -75,6 +77,22 @@ public class BanyanDBStorageClient implements Client, HealthCheckable { @Override public void connect() throws Exception { this.client.connect(); + final Properties properties = new Properties(); + try (final InputStream resourceAsStream + = BanyanDBStorageClient.class.getClassLoader() + .getResourceAsStream( + "bydb.dependencies.properties")) { + if (resourceAsStream == null) { + throw new IllegalStateException("bydb.dependencies.properties not found"); + } + properties.load(resourceAsStream); + } + final String expectedApiVersion = properties.getProperty("bydb.api.version"); + if (!Arrays.stream(COMPATIBLE_SERVER_API_VERSIONS).anyMatch(v -> v.equals(expectedApiVersion))) { + throw new IllegalStateException("Inconsistent versions between bydb.dependencies.properties and codes(" + + String.join(", ", COMPATIBLE_SERVER_API_VERSIONS) + ")."); + } + BanyandbCommon.APIVersion apiVersion; try { apiVersion = this.client.getAPIVersion();