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;
   }
 }