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;