You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2025/01/10 02:17:19 UTC
(skywalking-banyandb-java-client) 01/01: adopt the status field which is changed to the string type
This is an automated email from the ASF dual-hosted git repository.
hanahmily pushed a commit to branch status
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb-java-client.git
commit 6da79d93eecb131ae1244ee85a4bf801568460b8
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Fri Jan 10 10:16:37 2025 +0800
adopt the status field which is changed to the string type
Signed-off-by: Gao Hongtao <ha...@gmail.com>
---
CHANGES.md | 1 +
.../banyandb/v1/client/BanyanDBClient.java | 13 ++++---
.../v1/client/MeasureBulkWriteProcessor.java | 8 ++++-
.../v1/client/StreamBulkWriteProcessor.java | 8 ++++-
.../banyandb/v1/client/util/StatusUtil.java | 42 ++++++++++++++++++++++
src/main/proto/banyandb/v1/banyandb-measure.proto | 2 +-
src/main/proto/banyandb/v1/banyandb-model.proto | 1 +
src/main/proto/banyandb/v1/banyandb-stream.proto | 2 +-
.../banyandb/v1/client/BanyanDBClientTestCI.java | 6 ++--
9 files changed, 72 insertions(+), 11 deletions(-)
diff --git a/CHANGES.md b/CHANGES.md
index eb27d36..15cf4e5 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -8,6 +8,7 @@ Release Notes.
* Bump up the API to support the index mode of Measure.
* Bump up the API to support the new property.
+* Bump up the API to adopt the status field which is changed to the string type due to the compatibility issue.
0.7.0
------------------
diff --git a/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java b/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java
index bf52a73..af92554 100644
--- a/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClient.java
@@ -40,6 +40,7 @@ import org.apache.skywalking.banyandb.database.v1.BanyandbDatabase.Stream;
import org.apache.skywalking.banyandb.database.v1.BanyandbDatabase.IndexRule;
import org.apache.skywalking.banyandb.database.v1.BanyandbDatabase.IndexRuleBinding;
import org.apache.skywalking.banyandb.database.v1.BanyandbDatabase.Subject;
+import org.apache.skywalking.banyandb.model.v1.BanyandbModel;
import org.apache.skywalking.banyandb.property.v1.BanyandbProperty;
import org.apache.skywalking.banyandb.property.v1.BanyandbProperty.Property;
import org.apache.skywalking.banyandb.property.v1.BanyandbProperty.ApplyRequest.Strategy;
@@ -75,6 +76,8 @@ import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import java.util.stream.Collectors;
+
+import org.apache.skywalking.banyandb.v1.client.util.StatusUtil;
import org.apache.skywalking.banyandb.v1.client.util.TimeUtils;
import static com.google.common.base.Preconditions.checkNotNull;
@@ -227,7 +230,10 @@ public class BanyanDBClient implements Closeable {
@Override
public void onNext(BanyandbStream.WriteResponse writeResponse) {
- switch (writeResponse.getStatus()) {
+ BanyandbModel.Status status = StatusUtil.convertStringToStatus(writeResponse.getStatus());
+ switch (status) {
+ case STATUS_SUCCEED:
+ break;
case STATUS_INVALID_TIMESTAMP:
responseException = new InvalidArgumentException(
"Invalid timestamp: " + streamWrite.getTimestamp(), null, Status.Code.INVALID_ARGUMENT, false);
@@ -250,11 +256,10 @@ public class BanyanDBClient implements Closeable {
responseException = new InvalidArgumentException(
"Expired revision: " + metadata.getModRevision(), null, Status.Code.INVALID_ARGUMENT, true);
break;
- case STATUS_INTERNAL_ERROR:
+ default:
responseException = new InternalException(
- "Internal error occurs in server", null, Status.Code.INTERNAL, true);
+ String.format("Internal error (%s) occurs in server", writeResponse.getStatus()), null, Status.Code.INTERNAL, true);
break;
- default:
}
}
diff --git a/src/main/java/org/apache/skywalking/banyandb/v1/client/MeasureBulkWriteProcessor.java b/src/main/java/org/apache/skywalking/banyandb/v1/client/MeasureBulkWriteProcessor.java
index 10d663f..fbc71a7 100644
--- a/src/main/java/org/apache/skywalking/banyandb/v1/client/MeasureBulkWriteProcessor.java
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/MeasureBulkWriteProcessor.java
@@ -24,7 +24,9 @@ import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.banyandb.common.v1.BanyandbCommon;
import org.apache.skywalking.banyandb.measure.v1.BanyandbMeasure;
import org.apache.skywalking.banyandb.measure.v1.MeasureServiceGrpc;
+import org.apache.skywalking.banyandb.model.v1.BanyandbModel;
import org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
+import org.apache.skywalking.banyandb.v1.client.util.StatusUtil;
import javax.annotation.concurrent.ThreadSafe;
@@ -69,7 +71,10 @@ public class MeasureBulkWriteProcessor extends AbstractBulkWriteProcessor<Banyan
@Override
public void onNext(BanyandbMeasure.WriteResponse writeResponse) {
- switch (writeResponse.getStatus()) {
+ BanyandbModel.Status status = StatusUtil.convertStringToStatus(writeResponse.getStatus());
+ switch (status) {
+ case STATUS_SUCCEED:
+ break;
case STATUS_EXPIRED_SCHEMA:
BanyandbCommon.Metadata metadata = writeResponse.getMetadata();
String schemaKey = metadata.getGroup() + "." + metadata.getName();
@@ -84,6 +89,7 @@ public class MeasureBulkWriteProcessor extends AbstractBulkWriteProcessor<Banyan
}
break;
default:
+ log.warn("Write measure failed with status: {}", status);
}
}
diff --git a/src/main/java/org/apache/skywalking/banyandb/v1/client/StreamBulkWriteProcessor.java b/src/main/java/org/apache/skywalking/banyandb/v1/client/StreamBulkWriteProcessor.java
index 15323f7..ce2ab61 100644
--- a/src/main/java/org/apache/skywalking/banyandb/v1/client/StreamBulkWriteProcessor.java
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/StreamBulkWriteProcessor.java
@@ -23,9 +23,11 @@ import io.grpc.stub.StreamObserver;
import lombok.extern.slf4j.Slf4j;
import org.apache.skywalking.banyandb.common.v1.BanyandbCommon;
+import org.apache.skywalking.banyandb.model.v1.BanyandbModel;
import org.apache.skywalking.banyandb.stream.v1.StreamServiceGrpc;
import org.apache.skywalking.banyandb.stream.v1.BanyandbStream;
import org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
+import org.apache.skywalking.banyandb.v1.client.util.StatusUtil;
import javax.annotation.concurrent.ThreadSafe;
@@ -70,7 +72,10 @@ public class StreamBulkWriteProcessor extends AbstractBulkWriteProcessor<Banyand
@Override
public void onNext(BanyandbStream.WriteResponse writeResponse) {
- switch (writeResponse.getStatus()) {
+ BanyandbModel.Status status = StatusUtil.convertStringToStatus(writeResponse.getStatus());
+ switch (status) {
+ case STATUS_SUCCEED:
+ break;
case STATUS_EXPIRED_SCHEMA:
BanyandbCommon.Metadata metadata = writeResponse.getMetadata();
String schemaKey = metadata.getGroup() + "." + metadata.getName();
@@ -85,6 +90,7 @@ public class StreamBulkWriteProcessor extends AbstractBulkWriteProcessor<Banyand
}
break;
default:
+ log.warn("Write stream failed with status: {}", status);
}
}
diff --git a/src/main/java/org/apache/skywalking/banyandb/v1/client/util/StatusUtil.java b/src/main/java/org/apache/skywalking/banyandb/v1/client/util/StatusUtil.java
new file mode 100644
index 0000000..21aff7c
--- /dev/null
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/util/StatusUtil.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.banyandb.v1.client.util;
+
+import org.apache.skywalking.banyandb.model.v1.BanyandbModel;
+
+/**
+ * Status is a utility class for converting between strings and Status enums.
+ */
+public class StatusUtil {
+
+ /**
+ * Convert a Status enum to a string.
+ *
+ * @param statusString the string to convert
+ * @return the Status enum
+ */
+ public static BanyandbModel.Status convertStringToStatus(String statusString) {
+ try {
+ return BanyandbModel.Status.valueOf(statusString);
+ } catch (IllegalArgumentException e) {
+ // Return a specific enum value for unknown strings
+ return BanyandbModel.Status.STATUS_UNSPECIFIED;
+ }
+ }
+}
diff --git a/src/main/proto/banyandb/v1/banyandb-measure.proto b/src/main/proto/banyandb/v1/banyandb-measure.proto
index 8294081..69d533c 100644
--- a/src/main/proto/banyandb/v1/banyandb-measure.proto
+++ b/src/main/proto/banyandb/v1/banyandb-measure.proto
@@ -169,7 +169,7 @@ message WriteResponse {
// the message_id from request.
uint64 message_id = 1 [(validate.rules).uint64.gt = 0];
// status indicates the request processing result
- model.v1.Status status = 2 [(validate.rules).enum.defined_only = true];
+ string status = 2;
// the metadata from request when request fails
common.v1.Metadata metadata = 3;
}
diff --git a/src/main/proto/banyandb/v1/banyandb-model.proto b/src/main/proto/banyandb/v1/banyandb-model.proto
index 4aa8fbf..149fcbe 100644
--- a/src/main/proto/banyandb/v1/banyandb-model.proto
+++ b/src/main/proto/banyandb/v1/banyandb-model.proto
@@ -216,4 +216,5 @@ enum Status {
STATUS_NOT_FOUND = 3;
STATUS_EXPIRED_SCHEMA = 4;
STATUS_INTERNAL_ERROR = 5;
+ STATUS_DISK_FULL = 6;
}
diff --git a/src/main/proto/banyandb/v1/banyandb-stream.proto b/src/main/proto/banyandb/v1/banyandb-stream.proto
index 0f29944..611cae3 100644
--- a/src/main/proto/banyandb/v1/banyandb-stream.proto
+++ b/src/main/proto/banyandb/v1/banyandb-stream.proto
@@ -102,7 +102,7 @@ message WriteResponse {
// the message_id from request.
uint64 message_id = 1 [(validate.rules).uint64.gt = 0];
// status indicates the request processing result
- model.v1.Status status = 2 [(validate.rules).enum.defined_only = true];
+ string status = 2;
// the metadata from request when request fails
common.v1.Metadata metadata = 3;
}
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java
index 5ccaacc..79b6ff1 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java
@@ -29,9 +29,9 @@ import java.io.IOException;
@Slf4j
public class BanyanDBClientTestCI {
- private static final String REGISTRY = "ghcr.io";
- private static final String IMAGE_NAME = "apache/skywalking-banyandb";
- private static final String TAG = "1d4ddc3d42103dc3364ad729403c4154690be195";
+ private static final String REGISTRY = "docker.io";
+ private static final String IMAGE_NAME = "hanahmily/skywalking-banyandb";
+ private static final String TAG = "v0.7.0-42-ga96ffb3-max-disk";
private static final String IMAGE = REGISTRY + "/" + IMAGE_NAME + ":" + TAG;