You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2021/08/15 02:27:38 UTC
[skywalking] branch banyandb-integration updated: Update protocol
according to latest banyandb protocol (#7459)
This is an automated email from the ASF dual-hosted git repository.
wusheng pushed a commit to branch banyandb-integration
in repository https://gitbox.apache.org/repos/asf/skywalking.git
The following commit(s) were added to refs/heads/banyandb-integration by this push:
new 0f8383d Update protocol according to latest banyandb protocol (#7459)
0f8383d is described below
commit 0f8383dd44002afb5e3ef4f32422c1d7f6f2933a
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Sun Aug 15 10:27:21 2021 +0800
Update protocol according to latest banyandb protocol (#7459)
* Use general types to replace paired types
* Update package names according to proto lint rules.
---
.../banyandb/v1/client/FieldAndValue.java | 41 ++++++++------------
.../banyandb/v1/client/PairQueryCondition.java | 5 +--
.../main/proto/banyandb/v1/banyandb-trace.proto | 22 +++++------
.../src/main/proto/banyandb/v1/banyandb.proto | 45 ++++++++--------------
4 files changed, 45 insertions(+), 68 deletions(-)
diff --git a/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/FieldAndValue.java b/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/FieldAndValue.java
index 0c1e13e..6e3822a 100644
--- a/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/FieldAndValue.java
+++ b/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/FieldAndValue.java
@@ -33,34 +33,27 @@ public interface FieldAndValue extends Field {
boolean isNull();
static FieldAndValue build(Banyandb.TypedPair typedPair) {
- if (typedPair.hasIntPair()) {
- final Banyandb.IntPair intPair = typedPair.getIntPair();
- if (intPair.getIsNull()) {
- return new LongFieldPair(intPair.getKey(), null);
- } else {
- return new LongFieldPair(intPair.getKey(), intPair.getValue());
+ if (typedPair.hasNullPair()) {
+ switch (typedPair.getNullPair().getType()) {
+ case FIELD_TYPE_INT:
+ return new LongFieldPair(typedPair.getKey(), null);
+ case FIELD_TYPE_INT_ARRAY:
+ return new LongArrayFieldPair(typedPair.getKey(), null);
+ case FIELD_TYPE_STRING:
+ return new StringFieldPair(typedPair.getKey(), null);
+ case FIELD_TYPE_STRING_ARRAY:
+ return new StringArrayFieldPair(typedPair.getKey(), null);
+ default:
+ throw new IllegalArgumentException("Unrecognized NullType, " + typedPair.getNullPair().getType());
}
+ } else if (typedPair.hasIntPair()) {
+ return new LongFieldPair(typedPair.getKey(), typedPair.getIntPair().getValue());
} else if (typedPair.hasStrPair()) {
- final Banyandb.StrPair strPair = typedPair.getStrPair();
- if (strPair.getIsNull()) {
- return new StringFieldPair(strPair.getKey(), null);
- } else {
- return new StringFieldPair(strPair.getKey(), strPair.getValue());
- }
+ return new StringFieldPair(typedPair.getKey(), typedPair.getStrPair().getValue());
} else if (typedPair.hasIntArrayPair()) {
- final Banyandb.IntArrayPair intArrayPair = typedPair.getIntArrayPair();
- if (intArrayPair.getIsNull()) {
- return new LongArrayFieldPair(intArrayPair.getKey(), null);
- } else {
- return new LongArrayFieldPair(intArrayPair.getKey(), intArrayPair.getValueList());
- }
+ return new LongArrayFieldPair(typedPair.getKey(), typedPair.getIntArrayPair().getValueList());
} else if (typedPair.hasStrArrayPair()) {
- final Banyandb.StrArrayPair strArrayPair = typedPair.getStrArrayPair();
- if (strArrayPair.getIsNull()) {
- return new StringArrayFieldPair(strArrayPair.getKey(), null);
- } else {
- return new StringArrayFieldPair(strArrayPair.getKey(), strArrayPair.getValueList());
- }
+ return new StringArrayFieldPair(typedPair.getKey(), typedPair.getStrArrayPair().getValueList());
}
throw new IllegalArgumentException("Unrecognized TypedPair, " + typedPair);
}
diff --git a/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/PairQueryCondition.java b/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/PairQueryCondition.java
index 9276e0e..e9f47f0 100644
--- a/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/PairQueryCondition.java
+++ b/oap-server/banyandb-java-client/src/main/java/org/apache/skywalking/banyandb/v1/client/PairQueryCondition.java
@@ -47,9 +47,8 @@ public abstract class PairQueryCondition {
.setOp(BINARY_OP_EQ)
.setCondition(
Banyandb.TypedPair.newBuilder()
- .setIntPair(
- Banyandb.IntPair.newBuilder()
- .setKey(fieldName)
+ .setKey(fieldName).setIntPair(
+ Banyandb.Int.newBuilder()
.setValue(value)))
.build();
}
diff --git a/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb-trace.proto b/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb-trace.proto
index d59798e..44d98c1 100644
--- a/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb-trace.proto
+++ b/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb-trace.proto
@@ -19,38 +19,38 @@ syntax = "proto3";
option java_package = "org.apache.skywalking.banyandb.v1.trace";
-package banyandb.v1.trace;
+package banyandb.trace.v1;
import "google/protobuf/timestamp.proto";
import "google/protobuf/struct.proto";
import "banyandb/v1/banyandb.proto";
service TraceService {
- rpc Query(banyandb.v1.trace.QueryRequest) returns (banyandb.v1.trace.QueryResponse);
- rpc Write(stream banyandb.v1.trace.WriteRequest) returns (stream banyandb.v1.trace.WriteResponse);
+ rpc Query(banyandb.trace.v1.QueryRequest) returns (banyandb.trace.v1.QueryResponse);
+ rpc Write(stream banyandb.trace.v1.WriteRequest) returns (stream banyandb.trace.v1.WriteResponse);
}
// QueryRequest is the request contract for query.
message QueryRequest {
// metadata is required
- Metadata metadata = 1;
+ banyandb.v1.Metadata metadata = 1;
// time_range is a range query with begin/end time of entities in the timeunit of nanoseconds.
// In the context of Trace, it represents the range of the `startTime` for spans/segments,
// while in the context of Log, it means the range of the timestamp(s) for logs.
// it is always recommended to specify time range for performance reason
- TimeRange time_range = 2;
+ banyandb.v1.TimeRange time_range = 2;
// offset is used to support pagination, together with the following limit
uint32 offset = 3;
// limit is used to impose a boundary on the number of records being returned
uint32 limit = 4;
// order_by is given to specify the sort for a field. So far, only fields in the type of Integer are supported
- QueryOrder order_by = 5;
+ banyandb.v1.QueryOrder order_by = 5;
// fields are indexed. Some typical fields are listed below,
// - trace_id: if given, it takes precedence over other fields and will be used to retrieve entities before other conditions are imposed
// - duration: typical for trace context
- repeated PairQuery fields = 6;
+ repeated banyandb.v1.PairQuery fields = 6;
// projection can be used to select the key names of the entities in the response
- Projection projection = 7;
+ banyandb.v1.Projection projection = 7;
}
// QueryResponse is the response for a query to the Query module.
@@ -77,13 +77,13 @@ message Entity {
// - service_name
// - service_instance_id
// - end_time_nanoseconds
- repeated TypedPair fields = 4;
+ repeated banyandb.v1.TypedPair fields = 4;
}
message WriteRequest {
// the metadata is only required in the first write.
- Metadata metadata = 1;
+ banyandb.v1.Metadata metadata = 1;
// the entity is required.
EntityValue entity = 2;
}
@@ -103,5 +103,5 @@ message EntityValue {
// Pair only has value, as the value of PairValue match with the key
// by the index rules and index rule bindings of Metadata group.
// indexed fields of multiple entities are compression in the fields.
- repeated Field fields = 4;
+ repeated banyandb.v1.Field fields = 4;
}
\ No newline at end of file
diff --git a/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb.proto b/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb.proto
index 636aa3c..0a0c97e 100644
--- a/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb.proto
+++ b/oap-server/banyandb-java-client/src/main/proto/banyandb/v1/banyandb.proto
@@ -32,32 +32,11 @@ message Metadata {
string name = 2;
}
-// IntPair in a typed pair with an int64 as values
-message IntPair {
- string key = 1;
- int64 value = 2;
- bool isNull = 3;
-}
-
-// StrPair in a typed pair with a string as values
-message StrPair {
- string key = 1;
- string value = 2;
- bool isNull = 3;
-}
-
-// IntPair in a typed pair with an array of int64 as values
-message IntArrayPair {
- string key = 1;
- repeated int64 value = 2;
- bool isNull = 3;
-}
-
-// StrPair in a typed pair with an array of string as values
-message StrArrayPair {
- string key = 1;
- repeated string value = 2;
- bool isNull = 3;
+enum FieldType {
+ FIELD_TYPE_STRING = 0;
+ FIELD_TYPE_INT = 1;
+ FIELD_TYPE_STRING_ARRAY = 2;
+ FIELD_TYPE_INT_ARRAY = 3;
}
// Pair is the building block of a record which is equivalent to a key-value pair.
@@ -65,11 +44,17 @@ message StrArrayPair {
// Besides, other fields/tags are organized in key-value pair in the underlying storage layer.
// One should notice that the values can be a multi-value.
message TypedPair {
+ string key = 1;
oneof typed {
- IntPair int_pair = 1;
- StrPair str_pair = 2;
- IntArrayPair int_array_pair = 3;
- StrArrayPair str_array_pair = 4;
+ NullWithType null_pair = 2;
+ Int int_pair = 3;
+ Str str_pair = 4;
+ IntArray int_array_pair = 5;
+ StrArray str_array_pair = 6;
+ }
+
+ message NullWithType {
+ FieldType type = 1;
}
}