Skip to content

Commit 2673415

Browse files
authored
Bump up proto and fix the failure of parsing status code (#96)
1 parent c75d56f commit 2673415

File tree

5 files changed

+59
-46
lines changed

5 files changed

+59
-46
lines changed

src/main/java/org/apache/skywalking/banyandb/v1/client/TraceBulkWriteProcessor.java

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,11 @@
2525
import lombok.extern.slf4j.Slf4j;
2626

2727
import org.apache.skywalking.banyandb.common.v1.BanyandbCommon;
28+
import org.apache.skywalking.banyandb.model.v1.BanyandbModel;
2829
import org.apache.skywalking.banyandb.trace.v1.TraceServiceGrpc;
2930
import org.apache.skywalking.banyandb.trace.v1.BanyandbTrace;
3031
import org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
32+
import org.apache.skywalking.banyandb.v1.client.util.StatusUtil;
3133

3234
import javax.annotation.concurrent.ThreadSafe;
3335

@@ -78,23 +80,25 @@ protected StreamObserver<BanyandbTrace.WriteRequest> buildStreamObserver(TraceSe
7880

7981
@Override
8082
public void onNext(BanyandbTrace.WriteResponse writeResponse) {
81-
String status = writeResponse.getStatus();
82-
if ("succeed".equals(status)) {
83-
// Success case - do nothing
84-
} else if ("expired_schema".equals(status)) {
85-
BanyandbCommon.Metadata metadata = writeResponse.getMetadata();
86-
String schemaKey = metadata.getGroup() + "." + metadata.getName();
87-
if (!schemaExpired.contains(schemaKey)) {
88-
log.warn("The trace schema {} is expired, trying update the schema...", schemaKey);
89-
try {
90-
client.updateTraceMetadataCacheFromServer(metadata.getGroup(), metadata.getName());
91-
schemaExpired.add(schemaKey);
92-
} catch (BanyanDBException e) {
93-
log.error(e.getMessage(), e);
83+
BanyandbModel.Status status = StatusUtil.convertStringToStatus(writeResponse.getStatus());
84+
switch (status) {
85+
case STATUS_SUCCEED:
86+
break;
87+
case STATUS_EXPIRED_SCHEMA:
88+
BanyandbCommon.Metadata metadata = writeResponse.getMetadata();
89+
String schemaKey = metadata.getGroup() + "." + metadata.getName();
90+
if (!schemaExpired.contains(schemaKey)) {
91+
log.warn("The trace schema {} is expired, trying update the schema...", schemaKey);
92+
try {
93+
client.updateTraceMetadataCacheFromServer(metadata.getGroup(), metadata.getName());
94+
schemaExpired.add(schemaKey);
95+
} catch (BanyanDBException e) {
96+
log.error(e.getMessage(), e);
97+
}
9498
}
95-
}
96-
} else {
97-
log.warn("Write trace failed with status: {}", status);
99+
break;
100+
default:
101+
log.warn("Write trace failed with status: {}", status);
98102
}
99103
}
100104

src/main/java/org/apache/skywalking/banyandb/v1/client/TraceQueryResponse.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,12 +33,12 @@ public class TraceQueryResponse {
3333
}
3434

3535
/**
36-
* Get the list of spans returned by the query.
36+
* Get the list of traces returned by the query.
3737
*
38-
* @return list of spans
38+
* @return list of traces, each containing spans grouped by trace ID
3939
*/
40-
public List<BanyandbTrace.Span> getSpans() {
41-
return response.getSpansList();
40+
public List<BanyandbTrace.Trace> getTraces() {
41+
return response.getTracesList();
4242
}
4343

4444
/**
@@ -54,18 +54,18 @@ public String getTraceResult() {
5454
}
5555

5656
/**
57-
* Get the total number of spans returned.
57+
* Get the total number of traces returned.
5858
*
59-
* @return span count
59+
* @return trace count
6060
*/
6161
public int size() {
62-
return response.getSpansCount();
62+
return response.getTracesCount();
6363
}
6464

6565
/**
6666
* Check if the response is empty.
6767
*
68-
* @return true if no spans were returned
68+
* @return true if no traces were returned
6969
*/
7070
public boolean isEmpty() {
7171
return size() == 0;

src/main/proto/banyandb/v1/banyandb-trace.proto

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ package banyandb.trace.v1;
2121

2222
import "banyandb/v1/banyandb-common.proto";
2323
import "banyandb/v1/banyandb-model.proto";
24-
import "google/api/annotations.proto";
2524

2625
option go_package = "github.com/apache/skywalking-banyandb/api/proto/banyandb/trace/v1";
2726
option java_package = "org.apache.skywalking.banyandb.trace.v1";
@@ -51,8 +50,12 @@ message Span {
5150
bytes span = 2;
5251
}
5352

54-
message QueryResponse {
53+
message Trace {
5554
repeated Span spans = 1;
55+
}
56+
57+
message QueryResponse {
58+
repeated Trace traces = 1;
5659
common.v1.Trace trace_query_result = 2;
5760
}
5861

@@ -71,12 +74,7 @@ message QueryRequest {
7174

7275
// RPC service
7376
service TraceService {
74-
rpc Query(QueryRequest) returns (QueryResponse) {
75-
option (google.api.http) = {
76-
post: "/v1/trace/data"
77-
body: "*"
78-
};
79-
}
77+
rpc Query(QueryRequest) returns (QueryResponse);
8078

8179
rpc Write(stream WriteRequest) returns (stream WriteResponse);
8280
}

src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
public class BanyanDBClientTestCI {
3232
private static final String REGISTRY = "ghcr.io";
3333
private static final String IMAGE_NAME = "apache/skywalking-banyandb";
34-
private static final String TAG = "65504b5d925a15cc0ab1004f6e7cbceb65b20f83";
34+
private static final String TAG = "a287c38c758b11ea2d83014875af2e72acfaa017";
3535

3636
private static final String IMAGE = REGISTRY + "/" + IMAGE_NAME + ":" + TAG;
3737

src/test/java/org/apache/skywalking/banyandb/v1/client/ITTraceTest.java

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -158,14 +158,19 @@ public void testTraceQueryByTraceId() throws BanyanDBException, ExecutionExcepti
158158
TraceQueryResponse response = client.query(query);
159159
Assert.assertNotNull("Query response should not be null", response);
160160
Assert.assertFalse("Should have at least one result", response.isEmpty());
161-
Assert.assertEquals("Should have exactly one span", 1, response.size());
161+
Assert.assertEquals("Should have exactly one trace", 1, response.size());
162162

163-
// Verify we can access span data
164-
Assert.assertNotNull("Spans list should not be null", response.getSpans());
165-
Assert.assertEquals("Should have one span in list", 1, response.getSpans().size());
163+
// Verify we can access trace data
164+
Assert.assertNotNull("Traces list should not be null", response.getTraces());
165+
Assert.assertEquals("Should have one trace in list", 1, response.getTraces().size());
166166

167-
// Get the first span and verify its contents
168-
org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Span span = response.getSpans().get(0);
167+
// Get the first trace and verify its contents
168+
org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Trace trace = response.getTraces().get(0);
169+
Assert.assertNotNull("Trace should not be null", trace);
170+
Assert.assertEquals("Trace should have exactly one span", 1, trace.getSpansCount());
171+
172+
// Get the span from the trace and verify its contents
173+
org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Span span = trace.getSpans(0);
169174
Assert.assertNotNull("Span should not be null", span);
170175

171176
// Verify span data (binary content) - this is the main content returned
@@ -228,15 +233,21 @@ public void testTraceQueryOrderByStartTime() throws BanyanDBException, Execution
228233
TraceQueryResponse response = client.query(query);
229234
Assert.assertNotNull("Query response should not be null", response);
230235
Assert.assertFalse("Should have at least one result", response.isEmpty());
231-
Assert.assertTrue("Should have exactly 2 spans", response.size() == 2);
236+
Assert.assertTrue("Should have exactly 2 traces", response.size() == 2);
237+
238+
// Verify we can access trace data
239+
Assert.assertNotNull("Traces list should not be null", response.getTraces());
240+
Assert.assertTrue("Should have exactly 2 traces in list", response.getTraces().size() == 2);
241+
242+
// Get spans from each trace and verify that span content matches expected data
243+
org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Trace firstTrace = response.getTraces().get(0);
244+
org.apache.skywalking.banyandb.trace.v1.BanyandbTrace.Trace secondTrace = response.getTraces().get(1);
232245

233-
// Verify we can access span data
234-
Assert.assertNotNull("Spans list should not be null", response.getSpans());
235-
Assert.assertTrue("Should have exactly 2 spans in list", response.getSpans().size() == 2);
246+
Assert.assertEquals("First trace should have exactly one span", 1, firstTrace.getSpansCount());
247+
Assert.assertEquals("Second trace should have exactly one span", 1, secondTrace.getSpansCount());
236248

237-
// Verify that span content matches expected data
238-
String firstSpanContent = new String(response.getSpans().get(0).getSpan().toByteArray());
239-
String secondSpanContent = new String(response.getSpans().get(1).getSpan().toByteArray());
249+
String firstSpanContent = new String(firstTrace.getSpans(0).getSpan().toByteArray());
250+
String secondSpanContent = new String(secondTrace.getSpans(0).getSpan().toByteArray());
240251

241252
// Since we're ordering by start_time DESC, span-data-2 should come before span-data-1
242253
// (baseTime+60 > baseTime)

0 commit comments

Comments
 (0)