Browse Source

Create collection support set consistency level (#490) (#494)

Signed-off-by: yhmo <yihua.mo@zilliz.com>
Co-authored-by: kl <632104866@QQ.com>
groot 2 years ago
parent
commit
b725440309

+ 1 - 0
src/main/java/io/milvus/client/AbstractMilvusGrpcClient.java

@@ -414,6 +414,7 @@ public abstract class AbstractMilvusGrpcClient implements MilvusClient {
             CreateCollectionRequest createCollectionRequest = createCollectionBuilder
                     .setCollectionName(requestParam.getCollectionName())
                     .setShardsNum(requestParam.getShardsNum())
+                    .setConsistencyLevelValue(requestParam.getConsistencyLevel().getCode())
                     .setSchema(collectionSchemaBuilder.build().toByteString())
                     .build();
 

+ 1 - 0
src/main/java/io/milvus/common/clientenum/ConsistencyLevelEnum.java

@@ -5,6 +5,7 @@ import lombok.Getter;
 public enum ConsistencyLevelEnum {
 
     STRONG("Strong", 0),
+    // Session level is not allowed here because no ORM is implemented
 //    SESSION("Session", 1),
     BOUNDED("Bounded", 2),
     EVENTUALLY("Eventually",3),

+ 18 - 1
src/main/java/io/milvus/param/collection/CreateCollectionParam.java

@@ -19,6 +19,7 @@
 
 package io.milvus.param.collection;
 
+import io.milvus.common.clientenum.ConsistencyLevelEnum;
 import io.milvus.exception.ParamException;
 import io.milvus.param.ParamUtils;
 import lombok.Getter;
@@ -37,6 +38,7 @@ public class CreateCollectionParam {
     private final String description;
     private final List<FieldType> fieldTypes;
     private final int partitionsNum;
+    private final ConsistencyLevelEnum consistencyLevel;
 
     private CreateCollectionParam(@NonNull Builder builder) {
         this.collectionName = builder.collectionName;
@@ -44,6 +46,7 @@ public class CreateCollectionParam {
         this.description = builder.description;
         this.fieldTypes = builder.fieldTypes;
         this.partitionsNum = builder.partitionsNum;
+        this.consistencyLevel = builder.consistencyLevel;
     }
 
     public static Builder newBuilder() {
@@ -59,6 +62,7 @@ public class CreateCollectionParam {
         private String description = "";
         private final List<FieldType> fieldTypes = new ArrayList<>();
         private int partitionsNum = 0;
+        private ConsistencyLevelEnum consistencyLevel = ConsistencyLevelEnum.BOUNDED;
 
         private Builder() {
         }
@@ -120,6 +124,18 @@ public class CreateCollectionParam {
             return this;
         }
 
+        /**
+         * Sets the consistency level. The default value is {@link ConsistencyLevelEnum#BOUNDED}.
+         * @see ConsistencyLevelEnum
+         *
+         * @param consistencyLevel consistency level
+         * @return <code>Builder</code>
+         */
+        public Builder withConsistencyLevel(@NonNull ConsistencyLevelEnum consistencyLevel) {
+            this.consistencyLevel = consistencyLevel;
+            return this;
+        }
+
         /**
          * Sets the partitions number if there is partition key field. The number must be greater than zero.
          * The default value is 64(defined in server side). The upper limit is 4096(defined in server side).
@@ -185,7 +201,8 @@ public class CreateCollectionParam {
                 "collectionName='" + collectionName + '\'' +
                 ", shardsNum=" + shardsNum +
                 ", description='" + description + '\'' +
-                ", fields=" + fieldTypes.toString() +
+                ", fields=" + fieldTypes.toString() + '\'' +
+                ", consistencyLevel=" + consistencyLevel +
                 '}';
     }
 }