Browse Source

Send milvus client version via GRPC header

jianghua 4 years ago
parent
commit
bc6257b2b8

+ 11 - 0
src/main/java/io/milvus/client/MilvusClient.java

@@ -20,6 +20,7 @@
 package io.milvus.client;
 
 import com.google.common.util.concurrent.ListenableFuture;
+import io.grpc.Metadata;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 
 import java.io.IOException;
@@ -52,6 +53,16 @@ public interface MilvusClient {
     }
   }.get();
 
+  Metadata commonHeaders = new Supplier<Metadata>() {
+    @Override
+    public Metadata get() {
+      Metadata metadata = new Metadata();
+      Metadata.Key<String> key = Metadata.Key.of("Milvus-Client-Version", Metadata.ASCII_STRING_MARSHALLER);
+      metadata.put(key, clientVersion);
+      return metadata;
+    }
+  }.get();
+
   /** @return current Milvus client version */
   default String getClientVersion() {
     return clientVersion;

+ 3 - 2
src/main/java/io/milvus/client/MilvusGrpcClient.java

@@ -32,6 +32,7 @@ import io.grpc.ManagedChannel;
 import io.grpc.ManagedChannelBuilder;
 import io.grpc.MethodDescriptor;
 import io.grpc.StatusRuntimeException;
+import io.grpc.stub.MetadataUtils;
 import io.milvus.client.exception.InitializationException;
 import io.milvus.client.exception.UnsupportedServerVersion;
 import io.milvus.grpc.*;
@@ -65,8 +66,8 @@ public class MilvusGrpcClient extends AbstractMilvusGrpcClient {
         .keepAliveWithoutCalls(connectParam.isKeepAliveWithoutCalls())
         .idleTimeout(connectParam.getIdleTimeout(TimeUnit.NANOSECONDS), TimeUnit.NANOSECONDS)
         .build();
-    blockingStub = MilvusServiceGrpc.newBlockingStub(channel);
-    futureStub = MilvusServiceGrpc.newFutureStub(channel);
+    blockingStub = MetadataUtils.attachHeaders(MilvusServiceGrpc.newBlockingStub(channel), commonHeaders);
+    futureStub = MetadataUtils.attachHeaders(MilvusServiceGrpc.newFutureStub(channel), commonHeaders);
 
     try {
       Response response = getServerVersion();