This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch main
in repository
https://gitbox.apache.org/repos/asf/skywalking-banyandb-java-client.git
The following commit(s) were added to refs/heads/main by this push:
new 2673415 Bump up proto and fix the failure of parsing status code (#96)
2673415 is described below
commit 2673415b329c3562a7e138e93855856135a2415c
Author: Gao Hongtao <[email protected]>
AuthorDate: Tue Sep 9 21:20:07 2025 +0800
Bump up proto and fix the failure of parsing status code (#96)
---
.../v1/client/TraceBulkWriteProcessor.java | 36 +++++++++++----------
.../banyandb/v1/client/TraceQueryResponse.java | 16 +++++-----
src/main/proto/banyandb/v1/banyandb-trace.proto | 14 ++++----
.../banyandb/v1/client/BanyanDBClientTestCI.java | 2 +-
.../skywalking/banyandb/v1/client/ITTraceTest.java | 37 ++++++++++++++--------
5 files changed, 59 insertions(+), 46 deletions(-)
diff --git
a/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceBulkWriteProcessor.java
b/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceBulkWriteProcessor.java
index 3d46e08..96fdc4d 100644
---
a/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceBulkWriteProcessor.java
+++
b/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceBulkWriteProcessor.java
@@ -25,9 +25,11 @@ import java.util.List;
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.trace.v1.TraceServiceGrpc;
import org.apache.skywalking.banyandb.trace.v1.BanyandbTrace;
import
org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
+import org.apache.skywalking.banyandb.v1.client.util.StatusUtil;
import javax.annotation.concurrent.ThreadSafe;
@@ -78,23 +80,25 @@ public class TraceBulkWriteProcessor extends
AbstractBulkWriteProcessor<Banyandb
@Override
public void onNext(BanyandbTrace.WriteResponse
writeResponse) {
- String status = writeResponse.getStatus();
- if ("succeed".equals(status)) {
- // Success case - do nothing
- } else if ("expired_schema".equals(status)) {
- BanyandbCommon.Metadata metadata =
writeResponse.getMetadata();
- String schemaKey = metadata.getGroup() + "." +
metadata.getName();
- if (!schemaExpired.contains(schemaKey)) {
- log.warn("The trace schema {} is expired,
trying update the schema...", schemaKey);
- try {
-
client.updateTraceMetadataCacheFromServer(metadata.getGroup(),
metadata.getName());
- schemaExpired.add(schemaKey);
- } catch (BanyanDBException e) {
- log.error(e.getMessage(), e);
+ 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();
+ if (!schemaExpired.contains(schemaKey)) {
+ log.warn("The trace schema {} is expired,
trying update the schema...", schemaKey);
+ try {
+
client.updateTraceMetadataCacheFromServer(metadata.getGroup(),
metadata.getName());
+ schemaExpired.add(schemaKey);
+ } catch (BanyanDBException e) {
+ log.error(e.getMessage(), e);
+ }
}
- }
- } else {
- log.warn("Write trace failed with status: {}",
status);
+ break;
+ default:
+ log.warn("Write trace failed with status: {}",
status);
}
}
diff --git
a/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceQueryResponse.java
b/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceQueryResponse.java
index a1dc368..4fdd714 100644
---
a/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceQueryResponse.java
+++
b/src/main/java/org/apache/skywalking/banyandb/v1/client/TraceQueryResponse.java
@@ -33,12 +33,12 @@ public class TraceQueryResponse {
}
/**
- * Get the list of spans returned by the query.
+ * Get the list of traces returned by the query.
*
- * @return list of spans
+ * @return list of traces, each containing spans grouped by trace ID
*/
- public List<BanyandbTrace.Span> getSpans() {
- return response.getSpansList();
+ public List<BanyandbTrace.Trace> getTraces() {
+ return response.getTracesList();
}
/**
@@ -54,18 +54,18 @@ public class TraceQueryResponse {
}
/**
- * Get the total number of spans returned.
+ * Get the total number of traces returned.
*
- * @return span count
+ * @return trace count
*/
public int size() {
- return response.getSpansCount();
+ return response.getTracesCount();
}
/**
* Check if the response is empty.
*
- * @return true if no spans were returned
+ * @return true if no traces were returned
*/
public boolean isEmpty() {
return size() == 0;
diff --git a/src/main/proto/banyandb/v1/banyandb-trace.proto
b/src/main/proto/banyandb/v1/banyandb-trace.proto
index 5fa8401..d58c969 100644
--- a/src/main/proto/banyandb/v1/banyandb-trace.proto
+++ b/src/main/proto/banyandb/v1/banyandb-trace.proto
@@ -21,7 +21,6 @@ package banyandb.trace.v1;
import "banyandb/v1/banyandb-common.proto";
import "banyandb/v1/banyandb-model.proto";
-import "google/api/annotations.proto";
option go_package =
"github.com/apache/skywalking-banyandb/api/proto/banyandb/trace/v1";
option java_package = "org.apache.skywalking.banyandb.trace.v1";
@@ -51,8 +50,12 @@ message Span {
bytes span = 2;
}
-message QueryResponse {
+message Trace {
repeated Span spans = 1;
+}
+
+message QueryResponse {
+ repeated Trace traces = 1;
common.v1.Trace trace_query_result = 2;
}
@@ -71,12 +74,7 @@ message QueryRequest {
// RPC service
service TraceService {
- rpc Query(QueryRequest) returns (QueryResponse) {
- option (google.api.http) = {
- post: "/v1/trace/data"
- body: "*"
- };
- }
+ rpc Query(QueryRequest) returns (QueryResponse);
rpc Write(stream WriteRequest) returns (stream WriteResponse);
}
\ No newline at end of file
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 eec6b3b..9e3b64b 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
@@ -31,7 +31,7 @@ import java.io.IOException;
public class BanyanDBClientTestCI {
private static final String REGISTRY = "ghcr.io";
private static final String IMAGE_NAME = "apache/skywalking-banyandb";
- private static final String TAG =
"65504b5d925a15cc0ab1004f6e7cbceb65b20f83";
+ private static final String TAG =
"a287c38c758b11ea2d83014875af2e72acfaa017";
private static final String IMAGE = REGISTRY + "/" + IMAGE_NAME + ":" +
TAG;
diff --git
a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITTraceTest.java
b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITTraceTest.java
index 76eb168..15a16df 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITTraceTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITTraceTest.java
@@ -158,14 +158,19 @@ public class ITTraceTest extends BanyanDBClientTestCI {
TraceQueryResponse response = client.query(query);
Assert.assertNotNull("Query response should not be null",
response);
Assert.assertFalse("Should have at least one result",
response.isEmpty());
- Assert.assertEquals("Should have exactly one span", 1,
response.size());
+ Assert.assertEquals("Should have exactly one trace", 1,
response.size());
- // Verify we can access span data
- Assert.assertNotNull("Spans list should not be null",
response.getSpans());
- Assert.assertEquals("Should have one span in list", 1,
response.getSpans().size());
+ // Verify we can access trace data
+ Assert.assertNotNull("Traces list should not be null",
response.getTraces());
+ Assert.assertEquals("Should have one trace in list", 1,
response.getTraces().size());
- // Get the first span and verify its contents
- org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Span span =
response.getSpans().get(0);
+ // Get the first trace and verify its contents
+ org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Trace trace
= response.getTraces().get(0);
+ Assert.assertNotNull("Trace should not be null", trace);
+ Assert.assertEquals("Trace should have exactly one span", 1,
trace.getSpansCount());
+
+ // Get the span from the trace and verify its contents
+ org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Span span =
trace.getSpans(0);
Assert.assertNotNull("Span should not be null", span);
// Verify span data (binary content) - this is the main content
returned
@@ -228,15 +233,21 @@ public class ITTraceTest extends BanyanDBClientTestCI {
TraceQueryResponse response = client.query(query);
Assert.assertNotNull("Query response should not be null",
response);
Assert.assertFalse("Should have at least one result",
response.isEmpty());
- Assert.assertTrue("Should have exactly 2 spans", response.size()
== 2);
+ Assert.assertTrue("Should have exactly 2 traces", response.size()
== 2);
+
+ // Verify we can access trace data
+ Assert.assertNotNull("Traces list should not be null",
response.getTraces());
+ Assert.assertTrue("Should have exactly 2 traces in list",
response.getTraces().size() == 2);
+
+ // Get spans from each trace and verify that span content matches
expected data
+ org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Trace
firstTrace = response.getTraces().get(0);
+ org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Trace
secondTrace = response.getTraces().get(1);
- // Verify we can access span data
- Assert.assertNotNull("Spans list should not be null",
response.getSpans());
- Assert.assertTrue("Should have exactly 2 spans in list",
response.getSpans().size() == 2);
+ Assert.assertEquals("First trace should have exactly one span", 1,
firstTrace.getSpansCount());
+ Assert.assertEquals("Second trace should have exactly one span",
1, secondTrace.getSpansCount());
- // Verify that span content matches expected data
- String firstSpanContent = new
String(response.getSpans().get(0).getSpan().toByteArray());
- String secondSpanContent = new
String(response.getSpans().get(1).getSpan().toByteArray());
+ String firstSpanContent = new
String(firstTrace.getSpans(0).getSpan().toByteArray());
+ String secondSpanContent = new
String(secondTrace.getSpans(0).getSpan().toByteArray());
// Since we're ordering by start_time DESC, span-data-2 should
come before span-data-1
// (baseTime+60 > baseTime)