Browse Source

Split to 2 packages (#1224)

Signed-off-by: yhmo <yihua.mo@zilliz.com>
groot 4 months ago
parent
commit
a14f8e93cd
100 changed files with 791 additions and 323 deletions
  1. 7 7
      .github/workflows/java_sdk_ci_test.yaml
  2. 1 0
      .gitignore
  3. 2 2
      .gitmodules
  4. 4 0
      CHANGELOG.md
  5. 3 3
      DEVELOPMENT.md
  6. 30 5
      README.md
  7. 23 6
      examples/main/java/io/milvus/v1/ClientPoolExample.java
  8. 23 7
      examples/main/java/io/milvus/v2/ClientPoolExample.java
  9. 7 2
      examples/pom.xml
  10. 49 274
      pom.xml
  11. 192 0
      sdk-bulkwriter/pom.xml
  12. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/BaseBulkImport.java
  13. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/Buffer.java
  14. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/BulkImport.java
  15. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/BulkWriter.java
  16. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/LocalBulkWriter.java
  17. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/LocalBulkWriterParam.java
  18. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/RemoteBulkWriter.java
  19. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/RemoteBulkWriterParam.java
  20. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/clientenum/BulkFileType.java
  21. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/clientenum/CloudStorage.java
  22. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/clientenum/TypeSize.java
  23. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/GeneratorUtils.java
  24. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/ImportUtils.java
  25. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/ParquetReaderUtils.java
  26. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/ParquetUtils.java
  27. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/V2AdapterUtils.java
  28. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/connect/AzureConnectParam.java
  29. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/connect/S3ConnectParam.java
  30. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/connect/StorageConnectParam.java
  31. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/describe/BaseDescribeImportRequest.java
  32. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/describe/CloudDescribeImportRequest.java
  33. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/describe/MilvusDescribeImportRequest.java
  34. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/import_/BaseImportRequest.java
  35. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/import_/CloudImportRequest.java
  36. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/import_/MilvusImportRequest.java
  37. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/list/BaseListImportJobsRequest.java
  38. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/list/CloudListImportJobsRequest.java
  39. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/list/MilvusListImportJobsRequest.java
  40. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/BulkImportResponse.java
  41. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/GetImportProgressResponse.java
  42. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/ListImportJobsResponse.java
  43. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/Record.java
  44. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/RestfulResponse.java
  45. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/storage/StorageClient.java
  46. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/storage/client/AzureStorageClient.java
  47. 0 0
      sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/storage/client/MinioStorageClient.java
  48. 106 11
      sdk-bulkwriter/src/test/java/io/milvus/bulkwriter/BulkWriterTest.java
  49. 161 0
      sdk-bulkwriter/src/test/java/io/milvus/bulkwriter/TestUtils.java
  50. 176 0
      sdk-core/pom.xml
  51. 0 0
      sdk-core/src/main/java/io/milvus/client/AbstractMilvusGrpcClient.java
  52. 0 0
      sdk-core/src/main/java/io/milvus/client/MilvusClient.java
  53. 0 0
      sdk-core/src/main/java/io/milvus/client/MilvusMultiServiceClient.java
  54. 0 0
      sdk-core/src/main/java/io/milvus/client/MilvusServiceClient.java
  55. 0 0
      sdk-core/src/main/java/io/milvus/common/clientenum/ConsistencyLevelEnum.java
  56. 0 0
      sdk-core/src/main/java/io/milvus/common/clientenum/FunctionType.java
  57. 0 0
      sdk-core/src/main/java/io/milvus/common/constant/MilvusClientConstant.java
  58. 0 0
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupConfig.java
  59. 0 0
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupLimit.java
  60. 0 0
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupNodeFilter.java
  61. 0 0
      sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupTransfer.java
  62. 0 0
      sdk-core/src/main/java/io/milvus/common/utils/ExceptionUtils.java
  63. 0 0
      sdk-core/src/main/java/io/milvus/common/utils/Float16Utils.java
  64. 0 0
      sdk-core/src/main/java/io/milvus/common/utils/GTsDict.java
  65. 0 0
      sdk-core/src/main/java/io/milvus/common/utils/JsonUtils.java
  66. 0 0
      sdk-core/src/main/java/io/milvus/common/utils/URLParser.java
  67. 0 0
      sdk-core/src/main/java/io/milvus/common/utils/VectorUtils.java
  68. 0 0
      sdk-core/src/main/java/io/milvus/connection/ClusterFactory.java
  69. 0 0
      sdk-core/src/main/java/io/milvus/connection/ClusterListener.java
  70. 0 0
      sdk-core/src/main/java/io/milvus/connection/Listener.java
  71. 0 0
      sdk-core/src/main/java/io/milvus/connection/QueryNodeListener.java
  72. 0 0
      sdk-core/src/main/java/io/milvus/connection/ServerMonitor.java
  73. 0 0
      sdk-core/src/main/java/io/milvus/connection/ServerSetting.java
  74. 0 0
      sdk-core/src/main/java/io/milvus/exception/ClientNotConnectedException.java
  75. 0 0
      sdk-core/src/main/java/io/milvus/exception/IllegalResponseException.java
  76. 0 0
      sdk-core/src/main/java/io/milvus/exception/MilvusException.java
  77. 0 0
      sdk-core/src/main/java/io/milvus/exception/ParamException.java
  78. 0 0
      sdk-core/src/main/java/io/milvus/exception/ServerException.java
  79. 0 0
      sdk-core/src/main/java/io/milvus/exception/UnExpectedException.java
  80. 0 0
      sdk-core/src/main/java/io/milvus/orm/iterator/IteratorAdapterV2.java
  81. 0 0
      sdk-core/src/main/java/io/milvus/orm/iterator/IteratorCache.java
  82. 0 0
      sdk-core/src/main/java/io/milvus/orm/iterator/QueryIterator.java
  83. 7 6
      sdk-core/src/main/java/io/milvus/orm/iterator/SearchIterator.java
  84. 0 0
      sdk-core/src/main/java/io/milvus/param/ConnectParam.java
  85. 0 0
      sdk-core/src/main/java/io/milvus/param/Constant.java
  86. 0 0
      sdk-core/src/main/java/io/milvus/param/IndexBuildState.java
  87. 0 0
      sdk-core/src/main/java/io/milvus/param/IndexType.java
  88. 0 0
      sdk-core/src/main/java/io/milvus/param/LogLevel.java
  89. 0 0
      sdk-core/src/main/java/io/milvus/param/MetricType.java
  90. 0 0
      sdk-core/src/main/java/io/milvus/param/MultiConnectParam.java
  91. 0 0
      sdk-core/src/main/java/io/milvus/param/ParamUtils.java
  92. 0 0
      sdk-core/src/main/java/io/milvus/param/QueryNodeSingleSearch.java
  93. 0 0
      sdk-core/src/main/java/io/milvus/param/R.java
  94. 0 0
      sdk-core/src/main/java/io/milvus/param/RetryParam.java
  95. 0 0
      sdk-core/src/main/java/io/milvus/param/RpcStatus.java
  96. 0 0
      sdk-core/src/main/java/io/milvus/param/ServerAddress.java
  97. 0 0
      sdk-core/src/main/java/io/milvus/param/alias/AlterAliasParam.java
  98. 0 0
      sdk-core/src/main/java/io/milvus/param/alias/CreateAliasParam.java
  99. 0 0
      sdk-core/src/main/java/io/milvus/param/alias/DropAliasParam.java
  100. 0 0
      sdk-core/src/main/java/io/milvus/param/alias/ListAliasesParam.java

+ 7 - 7
.github/workflows/java_sdk_ci_test.yaml

@@ -31,13 +31,13 @@ jobs:
           mvn clean versions:set -DnewVersion=2.4.0
           mvn clean install -Dmaven.test.skip=true
 
-      - name: Test
-        timeout-minutes: 60
-        shell: bash
-        working-directory: tests/milvustestv2
-        run: |
-          echo "run testcases"
-          mvn clean test -Dsurefire.suiteXmlFiles=testng.xml
+#      - name: Test
+#        timeout-minutes: 60
+#        shell: bash
+#        working-directory: tests/milvustestv2
+#        run: |
+#          echo "run testcases"
+#          mvn clean test -Dsurefire.suiteXmlFiles=testng.xml
 
 #      - name: Upload logs
 #        if: ${{ always() }}

+ 1 - 0
.gitignore

@@ -30,6 +30,7 @@ hs_err_pid*
 target/
 volumes/
 *.iml
+.flattened-pom.xml
 
 # Example files
 examples/bulk_writer

+ 2 - 2
.gitmodules

@@ -1,3 +1,3 @@
-[submodule "src/main/milvus-proto"]
-	path = src/main/milvus-proto
+[submodule "sdk-core/src/main/milvus-proto"]
+	path = sdk-core/src/main/milvus-proto
 	url = https://github.com/milvus-io/milvus-proto.git

+ 4 - 0
CHANGELOG.md

@@ -1,5 +1,9 @@
 # Changelog
 
+## milvus-sdk-java 2.5.2 (TBD)
+### Improvement
+- Split milvus Java SDK to two packages to reduce dependency complexity
+
 ## milvus-sdk-java 2.5.1 (2024-12-04)
 ### Improvement
 - Support upsert items with auto-id primary key

+ 3 - 3
DEVELOPMENT.md

@@ -13,7 +13,7 @@ This document will help to setup your development environment and running tests
 $ git clone --recursive git@github.com:milvus-io/milvus-sdk-java.git
 ```
 
-Milvus proto files are managed by a submodule project under the directory: src/milvus-proto
+Milvus proto files are managed by a submodule project under the directory: sdk-core/src/main/milvus-proto
 Fetch Milvus proto files by the following command(If the previous clone is not with submodules)
 ```shell
 $ git submodule update --init
@@ -31,10 +31,10 @@ $  mvn install
 ```
 
 ## Update Milvus proto files
-Milvus proto files are managed by a submodule project under the directory: src/milvus-proto
+Milvus proto files are managed by a submodule project under the directory: sdk-core/src/main/milvus-proto
 Before developing new interfaces, you need to get the latest proto files by the following command:
 ```shell
-$  git submodule update --remote
+$ git submodule update --remote
 ```
 
 ## Building Milvus

+ 30 - 5
README.md

@@ -21,7 +21,7 @@ The following table shows compatibilities between Milvus and Java SDK.
 |    >= 2.2.9    |  2.2.7 ~ 2.2.15  |
 |     2.3.x      |      2.3.11      |
 |     2.4.x      |      2.4.8       |
-|     2.5.x      |      2.5.1       |
+|     2.5.x      |      2.5.2       |
 
 ### Install Java SDK
 
@@ -33,22 +33,47 @@ You can use **Apache Maven** or **Gradle** add Milvus SDK to your project.
         <dependency>
             <groupId>io.milvus</groupId>
             <artifactId>milvus-sdk-java</artifactId>
-            <version>2.5.1</version>
+            <version>2.5.2</version>
         </dependency>
        ```
 
    - Gradle/Groovy
 
         ```groovy
-        implementation 'io.milvus:milvus-sdk-java:2.5.1'
+        implementation 'io.milvus:milvus-sdk-java:2.5.2'
         ```
 
    - Gradle/Kotlin
 
         ```kotlin
-        implementation("io.milvus:milvus-sdk-java:2.5.1")
+        implementation("io.milvus:milvus-sdk-java:2.5.2")
         ```
-        
+  
+From v2.5.2, milvus Java SDK is split into two packages: milvus-sdk-java and milvus-sdk-java-bulkwriter, because BulkWriter requires quite a lot of dependencies. If you don't need BulkWriter tool, you can ignore the milvus-sdk-java-bulkwriter package.
+To use BulkWriter, import milvus-sdk-java-bulkwriter to your project.
+
+   - Apache Maven
+
+       ```xml
+        <dependency>
+            <groupId>io.milvus</groupId>
+            <artifactId>milvus-sdk-java-bulkwriter</artifactId>
+            <version>2.5.2</version>
+        </dependency>
+       ```
+
+   - Gradle/Groovy
+
+        ```groovy
+        implementation 'io.milvus:milvus-sdk-java-bulkwriter:2.5.2'
+        ```
+
+   - Gradle/Kotlin
+
+        ```kotlin
+        implementation("io.milvus:milvus-sdk-java-bulkwriter:2.5.2")
+        ```
+      
 ### Examples
 
 Please refer to [examples](https://github.com/milvus-io/milvus-sdk-java/tree/master/examples) folder for Java SDK examples.

+ 23 - 6
examples/main/java/io/milvus/v1/ClientPoolExample.java

@@ -106,11 +106,19 @@ public class ClientPoolExample {
     public static Thread runInsertThread(MilvusClientV1Pool pool, String clientName, int repeatRequests) {
         Thread t = new Thread(() -> {
             Gson gson = new Gson();
-            Random rand = new Random();
             for (int i = 0; i < repeatRequests; i++) {
-                MilvusClient client = pool.getClient(clientName);
+                MilvusClient client = null;
+                while(client == null) {
+                    try {
+                        // getClient() might exceeds the borrowMaxWaitMillis and throw exception
+                        // retry to call until it return a client
+                        client = pool.getClient(clientName);
+                    } catch (Exception e) {
+                        System.out.printf("Failed to get client, will retry, error: %s%n", e.getMessage());
+                    }
+                }
                 try {
-                    int rowCount = rand.nextInt(10) + 10;
+                    int rowCount = 1;
                     List<JsonObject> rows = new ArrayList<>();
                     for (int j = 0; j < rowCount; j++) {
                         JsonObject row = new JsonObject();
@@ -141,7 +149,16 @@ public class ClientPoolExample {
     public static Thread runSearchThread(MilvusClientV1Pool pool, String clientName, int repeatRequests) {
         Thread t = new Thread(() -> {
             for (int i = 0; i < repeatRequests; i++) {
-                MilvusClient client = pool.getClient(clientName);
+                MilvusClient client = null;
+                while(client == null) {
+                    try {
+                        // getClient() might exceeds the borrowMaxWaitMillis and throw exception
+                        // retry to call until it return a client
+                        client = pool.getClient(clientName);
+                    } catch (Exception e) {
+                        System.out.printf("Failed to get client, will retry, error: %s%n", e.getMessage());
+                    }
+                }
                 try {
                     R<SearchResults> searchRet = client.search(SearchParam.newBuilder()
                             .withCollectionName(CollectionName)
@@ -191,7 +208,7 @@ public class ClientPoolExample {
         createCollection(pool);
 
         List<Thread> threadList = new ArrayList<>();
-        int threadCount = 10;
+        int threadCount = 100;
         int repeatRequests = 100;
         long start = System.currentTimeMillis();
         for (int k = 0; k < threadCount; k++) {
@@ -212,7 +229,7 @@ public class ClientPoolExample {
         }
         long end = System.currentTimeMillis();
         System.out.printf("%d insert requests and %d search requests finished in %.3f seconds%n",
-                threadCount*repeatRequests, threadCount*repeatRequests, (end-start)*0.001);
+                threadCount*repeatRequests*3, threadCount*repeatRequests*3, (end-start)*0.001);
         System.out.printf("Total %d idle clients and %d active clients%n",
                 pool.getTotalIdleClientNumber(), pool.getTotalActiveClientNumber());
         pool.clear(); // clear idle clients

+ 23 - 7
examples/main/java/io/milvus/v2/ClientPoolExample.java

@@ -40,7 +40,6 @@ import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.Random;
 
 public class ClientPoolExample {
     public static String CollectionName = "java_sdk_example_pool_v2";
@@ -79,11 +78,19 @@ public class ClientPoolExample {
     public static Thread runInsertThread(MilvusClientV2Pool pool, String clientName, int repeatRequests) {
         Thread t = new Thread(() -> {
             Gson gson = new Gson();
-            Random rand = new Random();
             for (int i = 0; i < repeatRequests; i++) {
-                MilvusClientV2 client = pool.getClient(clientName);
+                MilvusClientV2 client = null;
+                while(client == null) {
+                    try {
+                        // getClient() might exceeds the borrowMaxWaitMillis and throw exception
+                        // retry to call until it return a client
+                        client = pool.getClient(clientName);
+                    } catch (Exception e) {
+                        System.out.printf("Failed to get client, will retry, error: %s%n", e.getMessage());
+                    }
+                }
                 try {
-                    int rowCount = rand.nextInt(10) + 10;
+                    int rowCount = 1;
                     List<JsonObject> rows = new ArrayList<>();
                     for (int j = 0; j < rowCount; j++) {
                         JsonObject row = new JsonObject();
@@ -110,7 +117,16 @@ public class ClientPoolExample {
     public static Thread runSearchThread(MilvusClientV2Pool pool, String clientName, int repeatRequests) {
         Thread t = new Thread(() -> {
             for (int i = 0; i < repeatRequests; i++) {
-                MilvusClientV2 client = pool.getClient(clientName);
+                MilvusClientV2 client = null;
+                while(client == null) {
+                    try {
+                        // getClient() might exceeds the borrowMaxWaitMillis and throw exception
+                        // retry to call until it return a client
+                        client = pool.getClient(clientName);
+                    } catch (Exception e) {
+                        System.out.printf("Failed to get client, will retry, error: %s%n", e.getMessage());
+                    }
+                }
                 try {
                     SearchResp result = client.search(SearchReq.builder()
                             .collectionName(CollectionName)
@@ -154,7 +170,7 @@ public class ClientPoolExample {
         createCollection(pool);
 
         List<Thread> threadList = new ArrayList<>();
-        int threadCount = 10;
+        int threadCount = 100;
         int repeatRequests = 100;
         long start = System.currentTimeMillis();
         for (int k = 0; k < threadCount; k++) {
@@ -175,7 +191,7 @@ public class ClientPoolExample {
         }
         long end = System.currentTimeMillis();
         System.out.printf("%d insert requests and %d search requests finished in %.3f seconds%n",
-                threadCount*repeatRequests, threadCount*repeatRequests, (end-start)*0.001);
+                threadCount*repeatRequests*3, threadCount*repeatRequests*3, (end-start)*0.001);
         System.out.printf("Total %d idle clients and %d active clients%n",
                 pool.getTotalIdleClientNumber(), pool.getTotalActiveClientNumber());
 

+ 7 - 2
examples/pom.xml

@@ -25,7 +25,7 @@
 
     <groupId>io.milvus</groupId>
     <artifactId>milvus-sdk-java-examples</artifactId>
-    <version>2.5.1</version>
+    <version>2.5.2</version>
 
     <build>
         <plugins>
@@ -64,7 +64,12 @@
         <dependency>
             <groupId>io.milvus</groupId>
             <artifactId>milvus-sdk-java</artifactId>
-            <version>2.5.1</version>
+            <version>2.5.2</version>
+        </dependency>
+        <dependency>
+            <groupId>io.milvus</groupId>
+            <artifactId>milvus-sdk-java-bulkwriter</artifactId>
+            <version>2.5.2</version>
         </dependency>
         <dependency>
             <groupId>org.tensorflow</groupId>

+ 49 - 274
pom.xml

@@ -24,11 +24,11 @@
     <modelVersion>4.0.0</modelVersion>
 
     <groupId>io.milvus</groupId>
-    <artifactId>milvus-sdk-java</artifactId>
-    <version>2.5.1</version>
-    <packaging>jar</packaging>
+    <artifactId>milvus-sdk-java-parent</artifactId>
+    <version>${revision}</version>
+    <packaging>pom</packaging>
 
-    <name>io.milvus:milvus-sdk-java</name>
+    <name>${project.artifactId}</name>
     <description>Java SDK for Milvus, a distributed high-performance vector database.</description>
     <url>https://github.com/milvus-io/milvus-sdk-java</url>
 
@@ -48,6 +48,10 @@
             <organizationUrl>http://www.milvus.io</organizationUrl>
         </developer>
     </developers>
+    <modules>
+        <module>sdk-core</module>
+        <module>sdk-bulkwriter</module>
+    </modules>
 
     <scm>
         <connection>scm:git:https://github.com/milvus-io/milvus-sdk-java.git</connection>
@@ -63,13 +67,16 @@
     </distributionManagement>
 
     <properties>
+        <revision>2.5.2</revision>
+        <maven.compiler.source>8</maven.compiler.source>
+        <maven.compiler.target>8</maven.compiler.target>
         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+        <!--for Core-->
         <grpc.version>1.59.1</grpc.version>
         <protobuf.version>3.24.0</protobuf.version>
         <protoc.version>3.24.0</protoc.version>
         <commons-collections4.version>4.3</commons-collections4.version>
-        <maven.compiler.source>1.8</maven.compiler.source>
-        <maven.compiler.target>1.8</maven.compiler.target>
         <versio.maven.deploy.plugin>2.8.2</versio.maven.deploy.plugin>
         <versio.maven.source.plugin>3.2.1</versio.maven.source.plugin>
         <javax.annotation.version>1.2</javax.annotation.version>
@@ -79,7 +86,6 @@
         <junit.jupiter.version>5.10.1</junit.jupiter.version>
         <lombok.version>1.18.22</lombok.version>
         <okhttp.version>4.12.0</okhttp.version>
-        <plexus.version>3.0.24</plexus.version>
         <maven.source.plugin.version>3.1.0</maven.source.plugin.version>
         <maven.javadoc.plugin.version>3.7.0</maven.javadoc.plugin.version>
         <os.maven.plugin.version>1.6.2</os.maven.plugin.version>
@@ -94,283 +100,22 @@
         <mockito.version>4.11.0</mockito.version>
         <testcontainers.version>1.19.8</testcontainers.version>
         <apache.commons.pool2.version>2.12.0</apache.commons.pool2.version>
+        <guava.version>32.1.3-jre</guava.version>
+        <errorprone.version>2.21.1</errorprone.version>
 
+        <!--for BulkWriter-->
+        <plexus.version>3.0.24</plexus.version>
         <hadoop.version>3.3.6</hadoop.version>
         <hbase.version>1.2.0</hbase.version>
         <parquet.version>1.13.1</parquet.version>
         <unirest.version>3.13.10</unirest.version>
-        <guava.version>32.1.3-jre</guava.version>
-        <errorprone.version>2.21.1</errorprone.version>
         <snappy.version>1.1.10.5</snappy.version>
-
-        <!--storage sdk-->
         <aws-java-sdk-s3.version>1.12.687</aws-java-sdk-s3.version>
         <minio-java-sdk.veresion>8.5.7</minio-java-sdk.veresion>
         <azure-java-blob-sdk.version>12.25.3</azure-java-blob-sdk.version>
         <azure-java-identity-sdk.version>1.10.1</azure-java-identity-sdk.version>
-
     </properties>
 
-    <dependencyManagement>
-        <dependencies>
-            <dependency>
-                <groupId>io.grpc</groupId>
-                <artifactId>grpc-bom</artifactId>
-                <version>${grpc.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-            <dependency>
-                <groupId>org.slf4j</groupId>
-                <artifactId>slf4j-api</artifactId>
-                <version>${slf4j.api.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.google.guava</groupId>
-                <artifactId>guava</artifactId>
-                <version>${guava.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>com.google.errorprone</groupId>
-                <artifactId>error_prone_annotations</artifactId>
-                <version>${errorprone.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jetbrains.kotlin</groupId>
-                <artifactId>kotlin-stdlib-jdk8</artifactId>
-                <version>${kotlin.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jetbrains.kotlin</groupId>
-                <artifactId>kotlin-stdlib-common</artifactId>
-                <version>${kotlin.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.jetbrains.kotlin</groupId>
-                <artifactId>kotlin-stdlib</artifactId>
-                <version>${kotlin.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.xerial.snappy</groupId>
-                <artifactId>snappy-java</artifactId>
-                <version>${snappy.version}</version>
-            </dependency>
-            <dependency>
-                <groupId>org.testcontainers</groupId>
-                <artifactId>testcontainers-bom</artifactId>
-                <version>${testcontainers.version}</version>
-                <type>pom</type>
-                <scope>import</scope>
-            </dependency>
-        </dependencies>
-    </dependencyManagement>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <version>${mockito.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-junit-jupiter</artifactId>
-            <version>${mockito.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-inline</artifactId>
-            <version>${mockito.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-netty-shaded</artifactId>
-            <version>${grpc.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-protobuf</artifactId>
-            <version>${grpc.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-stub</artifactId>
-            <version>${grpc.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.annotation</groupId>
-            <artifactId>javax.annotation-api</artifactId>
-            <version>${javax.annotation.version}</version>
-            <scope>provided</scope> <!-- not needed at runtime -->
-        </dependency>
-        <dependency>
-            <groupId>io.grpc</groupId>
-            <artifactId>grpc-testing</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.google.protobuf</groupId>
-            <artifactId>protobuf-java</artifactId>
-            <version>${protobuf.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-text</artifactId>
-            <version>${commons.text.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-collections4</artifactId>
-            <version>${commons-collections4.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${junit.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.junit.jupiter</groupId>
-            <artifactId>junit-jupiter-api</artifactId>
-            <version>${junit.jupiter.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>milvus</artifactId>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-api</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>org.jetbrains</groupId>
-                    <artifactId>annotations</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.testcontainers</groupId>
-            <artifactId>junit-jupiter</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.projectlombok</groupId>
-            <artifactId>lombok</artifactId>
-            <version>${lombok.version}</version>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
-            <groupId>com.squareup.okhttp3</groupId>
-            <artifactId>okhttp</artifactId>
-            <version>${okhttp.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.plexus</groupId>
-            <artifactId>plexus-utils</artifactId>
-            <version>${plexus.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.code.gson</groupId>
-            <artifactId>gson</artifactId>
-            <version>${gson.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.parquet</groupId>
-            <artifactId>parquet-avro</artifactId>
-            <version>${parquet.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.parquet</groupId>
-            <artifactId>parquet-hadoop</artifactId>
-            <version>${parquet.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.konghq</groupId>
-            <artifactId>unirest-java</artifactId>
-            <version>${unirest.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.hadoop</groupId>
-            <artifactId>hadoop-client</artifactId>
-            <version>${hadoop.version}</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>netty</artifactId>
-                    <groupId>io.netty</groupId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>netty-all</artifactId>
-                    <groupId>io.netty</groupId>
-                </exclusion>
-                <exclusion>
-                    <groupId>ch.qos.reload4j</groupId>
-                    <artifactId>reload4j</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.nimbusds</groupId>
-                    <artifactId>nimbus-jose-jwt</artifactId>
-                </exclusion>
-                <exclusion>
-                    <groupId>com.fasterxml.woodstox</groupId>
-                    <artifactId>woodstox-core</artifactId>
-                </exclusion>
-                <exclusion>
-                    <artifactId>slf4j-reload4j</artifactId>
-                    <groupId>org.slf4j</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <!-- storage sdk-->
-        <dependency>
-            <groupId>com.amazonaws</groupId>
-            <artifactId>aws-java-sdk-s3</artifactId>
-            <version>${aws-java-sdk-s3.version}</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>commons-logging</artifactId>
-                    <groupId>commons-logging</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>com.amazonaws</groupId>
-            <artifactId>aws-java-sdk-sts</artifactId>
-            <version>${aws-java-sdk-s3.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>io.minio</groupId>
-            <artifactId>minio</artifactId>
-            <version>${minio-java-sdk.veresion}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.azure</groupId>
-            <artifactId>azure-storage-blob</artifactId>
-            <version>${azure-java-blob-sdk.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.azure</groupId>
-            <artifactId>azure-identity</artifactId>
-            <version>${azure-java-identity-sdk.version}</version>
-            <exclusions>
-                <exclusion>
-                    <artifactId>jna-platform</artifactId>
-                    <groupId>net.java.dev.jna</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-pool2</artifactId>
-            <version>${apache.commons.pool2.version}</version>
-        </dependency>
-    </dependencies>
-
     <profiles>
         <profile>
             <id>release</id>
@@ -395,7 +140,7 @@
                         <version>${maven.javadoc.plugin.version}</version>
                         <configuration>
                             <javadocExecutable>/usr/bin/javadoc</javadocExecutable>
-<!--                            <additionalOptions>-Xdoclint:none</additionalOptions>-->
+                            <!--                            <additionalOptions>-Xdoclint:none</additionalOptions>-->
                             <additionalJOption>-Xdoclint:none</additionalJOption>
                         </configuration>
                         <executions>
@@ -523,7 +268,37 @@
                     </dependency>
                 </dependencies>
             </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
+                <artifactId>flatten-maven-plugin</artifactId>
+                <version>1.3.0</version>
+                <inherited>true</inherited>
+                <executions>
+                    <execution>
+                        <id>flatten</id>
+                        <phase>process-resources</phase>
+                        <goals>
+                            <goal>flatten</goal>
+                        </goals>
+                        <configuration>
+                            <updatePomFile>true</updatePomFile>
+                            <flattenMode>resolveCiFriendliesOnly</flattenMode>
+                            <pomElements>
+                                <parent>expand</parent>
+                                <distributionManagement>remove</distributionManagement>
+                                <repositories>remove</repositories>
+                            </pomElements>
+                        </configuration>
+                    </execution>
+                    <execution>
+                        <id>flatten.clean</id>
+                        <phase>clean</phase>
+                        <goals>
+                            <goal>clean</goal>
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
         </plugins>
     </build>
-
 </project>

+ 192 - 0
sdk-bulkwriter/pom.xml

@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>io.milvus</groupId>
+        <artifactId>milvus-sdk-java-parent</artifactId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>milvus-sdk-java-bulkwriter</artifactId>
+    <packaging>jar</packaging>
+    <name>${project.artifactId}</name>
+    <description>BulkWriter tool for Java</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>io.grpc</groupId>
+                <artifactId>grpc-bom</artifactId>
+                <version>${grpc.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>${slf4j.api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${guava.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.errorprone</groupId>
+                <artifactId>error_prone_annotations</artifactId>
+                <version>${errorprone.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains.kotlin</groupId>
+                <artifactId>kotlin-stdlib-jdk8</artifactId>
+                <version>${kotlin.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains.kotlin</groupId>
+                <artifactId>kotlin-stdlib-common</artifactId>
+                <version>${kotlin.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains.kotlin</groupId>
+                <artifactId>kotlin-stdlib</artifactId>
+                <version>${kotlin.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.xerial.snappy</groupId>
+                <artifactId>snappy-java</artifactId>
+                <version>${snappy.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.testcontainers</groupId>
+                <artifactId>testcontainers-bom</artifactId>
+                <version>${testcontainers.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>io.milvus</groupId>
+            <artifactId>milvus-sdk-java</artifactId>
+            <version>${revision}</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${junit.jupiter.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>milvus</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.parquet</groupId>
+            <artifactId>parquet-avro</artifactId>
+            <version>${parquet.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.parquet</groupId>
+            <artifactId>parquet-hadoop</artifactId>
+            <version>${parquet.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.konghq</groupId>
+            <artifactId>unirest-java</artifactId>
+            <version>${unirest.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.hadoop</groupId>
+            <artifactId>hadoop-client</artifactId>
+            <version>${hadoop.version}</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>netty</artifactId>
+                    <groupId>io.netty</groupId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>netty-all</artifactId>
+                    <groupId>io.netty</groupId>
+                </exclusion>
+                <exclusion>
+                    <groupId>ch.qos.reload4j</groupId>
+                    <artifactId>reload4j</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.nimbusds</groupId>
+                    <artifactId>nimbus-jose-jwt</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>com.fasterxml.woodstox</groupId>
+                    <artifactId>woodstox-core</artifactId>
+                </exclusion>
+                <exclusion>
+                    <artifactId>slf4j-reload4j</artifactId>
+                    <groupId>org.slf4j</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+
+        <!-- storage sdk-->
+        <dependency>
+            <groupId>com.amazonaws</groupId>
+            <artifactId>aws-java-sdk-s3</artifactId>
+            <version>${aws-java-sdk-s3.version}</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>commons-logging</artifactId>
+                    <groupId>commons-logging</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>com.amazonaws</groupId>
+            <artifactId>aws-java-sdk-sts</artifactId>
+            <version>${aws-java-sdk-s3.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.minio</groupId>
+            <artifactId>minio</artifactId>
+            <version>${minio-java-sdk.veresion}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.azure</groupId>
+            <artifactId>azure-storage-blob</artifactId>
+            <version>${azure-java-blob-sdk.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.azure</groupId>
+            <artifactId>azure-identity</artifactId>
+            <version>${azure-java-identity-sdk.version}</version>
+            <exclusions>
+                <exclusion>
+                    <artifactId>jna-platform</artifactId>
+                    <groupId>net.java.dev.jna</groupId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+    </dependencies>
+</project>

+ 0 - 0
src/main/java/io/milvus/bulkwriter/BaseBulkImport.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/BaseBulkImport.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/Buffer.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/Buffer.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/BulkImport.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/BulkImport.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/BulkWriter.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/BulkWriter.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/LocalBulkWriter.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/LocalBulkWriter.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/LocalBulkWriterParam.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/LocalBulkWriterParam.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/RemoteBulkWriter.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/RemoteBulkWriter.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/RemoteBulkWriterParam.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/RemoteBulkWriterParam.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/clientenum/BulkFileType.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/clientenum/BulkFileType.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/clientenum/CloudStorage.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/clientenum/CloudStorage.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/clientenum/TypeSize.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/clientenum/TypeSize.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/utils/GeneratorUtils.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/GeneratorUtils.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/utils/ImportUtils.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/ImportUtils.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/utils/ParquetReaderUtils.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/ParquetReaderUtils.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/utils/ParquetUtils.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/ParquetUtils.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/common/utils/V2AdapterUtils.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/common/utils/V2AdapterUtils.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/connect/AzureConnectParam.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/connect/AzureConnectParam.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/connect/S3ConnectParam.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/connect/S3ConnectParam.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/connect/StorageConnectParam.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/connect/StorageConnectParam.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/describe/BaseDescribeImportRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/describe/BaseDescribeImportRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/describe/CloudDescribeImportRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/describe/CloudDescribeImportRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/describe/MilvusDescribeImportRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/describe/MilvusDescribeImportRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/import_/BaseImportRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/import_/BaseImportRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/import_/CloudImportRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/import_/CloudImportRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/import_/MilvusImportRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/import_/MilvusImportRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/list/BaseListImportJobsRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/list/BaseListImportJobsRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/list/CloudListImportJobsRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/list/CloudListImportJobsRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/request/list/MilvusListImportJobsRequest.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/request/list/MilvusListImportJobsRequest.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/response/BulkImportResponse.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/BulkImportResponse.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/response/GetImportProgressResponse.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/GetImportProgressResponse.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/response/ListImportJobsResponse.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/ListImportJobsResponse.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/response/Record.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/Record.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/response/RestfulResponse.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/response/RestfulResponse.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/storage/StorageClient.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/storage/StorageClient.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/storage/client/AzureStorageClient.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/storage/client/AzureStorageClient.java


+ 0 - 0
src/main/java/io/milvus/bulkwriter/storage/client/MinioStorageClient.java → sdk-bulkwriter/src/main/java/io/milvus/bulkwriter/storage/client/MinioStorageClient.java


+ 106 - 11
src/test/java/io/milvus/bulkwriter/BulkWriterTest.java → sdk-bulkwriter/src/test/java/io/milvus/bulkwriter/BulkWriterTest.java

@@ -19,33 +19,62 @@
 
 package io.milvus.bulkwriter;
 
+import com.google.common.collect.Lists;
 import com.google.gson.JsonObject;
-import io.milvus.TestUtils;
 import io.milvus.bulkwriter.common.clientenum.BulkFileType;
 import io.milvus.bulkwriter.common.utils.GeneratorUtils;
+import io.milvus.bulkwriter.common.utils.ParquetReaderUtils;
 import io.milvus.bulkwriter.common.utils.V2AdapterUtils;
 import io.milvus.common.utils.JsonUtils;
 import io.milvus.param.collection.CollectionSchemaParam;
 import io.milvus.param.collection.FieldType;
+import io.milvus.v2.client.ConnectConfig;
+import io.milvus.v2.client.MilvusClientV2;
 import io.milvus.v2.common.DataType;
 import io.milvus.v2.service.collection.request.AddFieldReq;
 import io.milvus.v2.service.collection.request.CreateCollectionReq;
+import org.apache.avro.generic.GenericData;
+import org.apache.commons.text.RandomStringGenerator;
+import org.junit.jupiter.api.AfterAll;
 import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
+import org.testcontainers.junit.jupiter.Container;
+import org.testcontainers.junit.jupiter.Testcontainers;
+import org.testcontainers.milvus.MilvusContainer;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
 
+@Testcontainers(disabledWithoutDocker = true)
 public class BulkWriterTest {
+    private static MilvusClientV2 client;
+    private static RandomStringGenerator generator;
     private static final int DIMENSION = 128;
     private static final TestUtils utils = new TestUtils(DIMENSION);
 
-    CreateCollectionReq.CollectionSchema buildSchema() {
+    @Container
+    private static final MilvusContainer milvus = new MilvusContainer("milvusdb/milvus:v2.5.0-beta");
+
+    @BeforeAll
+    public static void setUp() {
+        ConnectConfig config = ConnectConfig.builder()
+                .uri(milvus.getEndpoint())
+                .build();
+        client = new MilvusClientV2(config);
+        generator = new RandomStringGenerator.Builder().withinRange('a', 'z').build();
+    }
+
+    @AfterAll
+    public static void tearDown() throws InterruptedException {
+        if (client != null) {
+            client.close(5L);
+        }
+    }
+
+    CreateCollectionReq.CollectionSchema buildSchema(boolean enableDynamicField) {
         CreateCollectionReq.CollectionSchema schemaV2 = CreateCollectionReq.CollectionSchema.builder()
-                .enableDynamicField(true)
+                .enableDynamicField(enableDynamicField)
                 .build();
         schemaV2.addField(AddFieldReq.builder()
                 .fieldName("id")
@@ -124,7 +153,7 @@ public class BulkWriterTest {
 
     @Test
     void testV2AdapterUtils() {
-        CreateCollectionReq.CollectionSchema schemaV2 = buildSchema();
+        CreateCollectionReq.CollectionSchema schemaV2 = buildSchema(true);
         CollectionSchemaParam schemaV1 = V2AdapterUtils.convertV2Schema(schemaV2);
         Assertions.assertEquals(schemaV2.isEnableDynamicField(), schemaV1.isEnableDynamicField());
 
@@ -199,7 +228,7 @@ public class BulkWriterTest {
     @Test
     void testWriteParquet() {
         try {
-            CreateCollectionReq.CollectionSchema schemaV2 = buildSchema();
+            CreateCollectionReq.CollectionSchema schemaV2 = buildSchema(true);
             LocalBulkWriterParam bulkWriterParam = LocalBulkWriterParam.newBuilder()
                     .withCollectionSchema(schemaV2)
                     .withLocalPath("/tmp/bulk_writer")
@@ -223,7 +252,7 @@ public class BulkWriterTest {
     @Test
     void testWriteJson() {
         try {
-            CreateCollectionReq.CollectionSchema schemaV2 = buildSchema();
+            CreateCollectionReq.CollectionSchema schemaV2 = buildSchema(true);
             LocalBulkWriterParam bulkWriterParam = LocalBulkWriterParam.newBuilder()
                     .withCollectionSchema(schemaV2)
                     .withLocalPath("/tmp/bulk_writer")
@@ -247,7 +276,7 @@ public class BulkWriterTest {
     @Test
     void testWriteCSV() {
         try {
-            CreateCollectionReq.CollectionSchema schemaV2 = buildSchema();
+            CreateCollectionReq.CollectionSchema schemaV2 = buildSchema(true);
             LocalBulkWriterParam bulkWriterParam = LocalBulkWriterParam.newBuilder()
                     .withCollectionSchema(schemaV2)
                     .withLocalPath("/tmp/bulk_writer")
@@ -268,4 +297,70 @@ public class BulkWriterTest {
             Assertions.fail(e.getMessage());
         }
     }
+
+    @Test
+    public void testLocalBulkWriter() {
+        // collection schema
+        CreateCollectionReq.CollectionSchema schemaV2 = buildSchema(false);
+
+        // local bulkwriter
+        LocalBulkWriterParam writerParam = LocalBulkWriterParam.newBuilder()
+                .withCollectionSchema(schemaV2)
+                .withLocalPath("/tmp/bulk_writer")
+                .withFileType(BulkFileType.PARQUET)
+                .withChunkSize(100 * 1024)
+                .build();
+
+        int rowCount = 100;
+        List<List<String>> batchFiles = new ArrayList<>();
+        try (LocalBulkWriter bulkWriter = new LocalBulkWriter(writerParam)) {
+            for (int i = 0; i < rowCount; i++) {
+                JsonObject row = new JsonObject();
+                row.addProperty("bool_field", i % 3 == 0);
+                row.addProperty("int8_field", i%128);
+                row.addProperty("int16_field", i%32768);
+                row.addProperty("int32_field", i);
+                row.addProperty("int64_field", i);
+                row.addProperty("float_field", i/3);
+                row.addProperty("double_field", i/7);
+                row.addProperty("varchar_field", String.format("varchar_%d", i));
+                JsonObject obj = new JsonObject();
+                obj.addProperty("dummy", i);
+                row.add("json_field", obj);
+                row.add("arr_varchar_field", JsonUtils.toJsonTree(Lists.newArrayList("aaa", "bbb", "ccc")));
+                row.add("arr_int32_field", JsonUtils.toJsonTree(Lists.newArrayList(5, 6, 3, 2, 1)));
+                row.add("arr_float_field", JsonUtils.toJsonTree(Lists.newArrayList(0.5, 1.8)));
+                row.add("float_vector_field", JsonUtils.toJsonTree(utils.generateFloatVector()));
+                row.add("binary_vector_field", JsonUtils.toJsonTree(utils.generateBinaryVector().array()));
+
+                bulkWriter.appendRow(row);
+            }
+
+            bulkWriter.commit(false);
+            List<List<String>> files = bulkWriter.getBatchFiles();
+            System.out.printf("LocalBulkWriter done! output local files: %s%n", files);
+            Assertions.assertEquals(1, files.size());
+            Assertions.assertEquals(files.get(0).size(), 1);
+            batchFiles.addAll(files);
+        } catch (Exception e) {
+            System.out.println("LocalBulkWriter catch exception: " + e);
+            Assertions.fail();
+        }
+
+        try {
+            final int[] counter = {0};
+            for (List<String> files : batchFiles) {
+                new ParquetReaderUtils() {
+                    @Override
+                    public void readRecord(GenericData.Record record) {
+                        counter[0]++;
+                    }
+                }.readParquet(files.get(0));
+            }
+            Assertions.assertEquals(rowCount, counter[0]);
+        } catch (Exception e) {
+            System.out.println("Verify parquet file catch exception: " + e);
+            Assertions.fail();
+        }
+    }
 }

+ 161 - 0
sdk-bulkwriter/src/test/java/io/milvus/bulkwriter/TestUtils.java

@@ -0,0 +1,161 @@
+package io.milvus.bulkwriter;
+
+import io.milvus.common.utils.Float16Utils;
+import io.milvus.grpc.DataType;
+import org.junit.jupiter.api.Assertions;
+
+import java.nio.ByteBuffer;
+import java.util.*;
+
+public class TestUtils {
+    private int dimension = 256;
+    private static final Random RANDOM = new Random();
+
+    public TestUtils(int dimension) {
+        this.dimension = dimension;
+    }
+
+    public List<Float> generateFloatVector(int dim) {
+        List<Float> vector = new ArrayList<>();
+        for (int i = 0; i < dim; ++i) {
+            vector.add(RANDOM.nextFloat());
+        }
+        return vector;
+    }
+
+    public List<Float> generateFloatVector() {
+        return generateFloatVector(dimension);
+    }
+
+    public List<List<Float>> generateFloatVectors(int count) {
+        List<List<Float>> vectors = new ArrayList<>();
+        for (int n = 0; n < count; ++n) {
+            vectors.add(generateFloatVector());
+        }
+
+        return vectors;
+    }
+
+    public ByteBuffer generateBinaryVector(int dim) {
+        int byteCount = dim / 8;
+        ByteBuffer vector = ByteBuffer.allocate(byteCount);
+        for (int i = 0; i < byteCount; ++i) {
+            vector.put((byte) RANDOM.nextInt(Byte.MAX_VALUE));
+        }
+        return vector;
+    }
+
+    public ByteBuffer generateBinaryVector() {
+        return generateBinaryVector(dimension);
+    }
+
+    public List<ByteBuffer> generateBinaryVectors(int count) {
+        List<ByteBuffer> vectors = new ArrayList<>();
+        for (int n = 0; n < count; ++n) {
+            vectors.add(generateBinaryVector());
+        }
+        return vectors;
+
+    }
+
+    public ByteBuffer generateFloat16Vector() {
+        List<Float> vector = generateFloatVector();
+        return Float16Utils.f32VectorToFp16Buffer(vector);
+    }
+
+    public List<ByteBuffer> generateFloat16Vectors(int count) {
+        List<ByteBuffer> vectors = new ArrayList<>();
+        for (int n = 0; n < count; ++n) {
+            vectors.add(generateFloat16Vector());
+        }
+        return vectors;
+    }
+
+    public ByteBuffer generateBFloat16Vector() {
+        List<Float> vector = generateFloatVector();
+        return Float16Utils.f32VectorToBf16Buffer(vector);
+    }
+
+    public List<ByteBuffer> generateBFloat16Vectors(int count) {
+        List<ByteBuffer> vectors = new ArrayList<>();
+        for (int n = 0; n < count; ++n) {
+            vectors.add(generateBFloat16Vector());
+        }
+        return vectors;
+    }
+
+    public SortedMap<Long, Float> generateSparseVector() {
+        SortedMap<Long, Float> sparse = new TreeMap<>();
+        int dim = RANDOM.nextInt(10) + 10;
+        for (int i = 0; i < dim; ++i) {
+            sparse.put((long) RANDOM.nextInt(1000000), RANDOM.nextFloat());
+        }
+        return sparse;
+    }
+
+    public List<SortedMap<Long, Float>> generateSparseVectors(int count) {
+        List<SortedMap<Long, Float>> vectors = new ArrayList<>();
+        for (int n = 0; n < count; ++n) {
+            vectors.add(generateSparseVector());
+        }
+        return vectors;
+    }
+
+    public List<?> generateRandomArray(DataType eleType, int maxCapacity) {
+        switch (eleType) {
+            case Bool: {
+                List<Boolean> values = new ArrayList<>();
+                for (int i = 0; i < maxCapacity; i++) {
+                    values.add(i%10 == 0);
+                }
+                return values;
+            }
+            case Int8:
+            case Int16: {
+                List<Short> values = new ArrayList<>();
+                for (int i = 0; i < maxCapacity; i++) {
+                    values.add((short)RANDOM.nextInt(256));
+                }
+                return values;
+            }
+            case Int32: {
+                List<Integer> values = new ArrayList<>();
+                for (int i = 0; i < maxCapacity; i++) {
+                    values.add(RANDOM.nextInt());
+                }
+                return values;
+            }
+            case Int64: {
+                List<Long> values = new ArrayList<>();
+                for (int i = 0; i < maxCapacity; i++) {
+                    values.add(RANDOM.nextLong());
+                }
+                return values;
+            }
+            case Float: {
+                List<Float> values = new ArrayList<>();
+                for (int i = 0; i < maxCapacity; i++) {
+                    values.add(RANDOM.nextFloat());
+                }
+                return values;
+            }
+            case Double: {
+                List<Double> values = new ArrayList<>();
+                for (int i = 0; i < maxCapacity; i++) {
+                    values.add(RANDOM.nextDouble());
+                }
+                return values;
+            }
+            case VarChar: {
+                List<String> values = new ArrayList<>();
+                for (int i = 0; i < maxCapacity; i++) {
+                    values.add(String.format("varchar_arr_%d", i));
+                }
+                return values;
+            }
+            default:
+                Assertions.fail();
+        }
+        return null;
+    }
+}

+ 176 - 0
sdk-core/pom.xml

@@ -0,0 +1,176 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>io.milvus</groupId>
+        <artifactId>milvus-sdk-java-parent</artifactId>
+        <version>${revision}</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>milvus-sdk-java</artifactId>
+    <packaging>jar</packaging>
+    <name>${project.artifactId}</name>
+    <description>Milvus Java SDK core functions</description>
+
+    <dependencyManagement>
+        <dependencies>
+            <dependency>
+                <groupId>io.grpc</groupId>
+                <artifactId>grpc-bom</artifactId>
+                <version>${grpc.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+            <dependency>
+                <groupId>org.slf4j</groupId>
+                <artifactId>slf4j-api</artifactId>
+                <version>${slf4j.api.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.guava</groupId>
+                <artifactId>guava</artifactId>
+                <version>${guava.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>com.google.errorprone</groupId>
+                <artifactId>error_prone_annotations</artifactId>
+                <version>${errorprone.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains.kotlin</groupId>
+                <artifactId>kotlin-stdlib-jdk8</artifactId>
+                <version>${kotlin.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains.kotlin</groupId>
+                <artifactId>kotlin-stdlib-common</artifactId>
+                <version>${kotlin.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.jetbrains.kotlin</groupId>
+                <artifactId>kotlin-stdlib</artifactId>
+                <version>${kotlin.version}</version>
+            </dependency>
+            <dependency>
+                <groupId>org.testcontainers</groupId>
+                <artifactId>testcontainers-bom</artifactId>
+                <version>${testcontainers.version}</version>
+                <type>pom</type>
+                <scope>import</scope>
+            </dependency>
+        </dependencies>
+    </dependencyManagement>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>${mockito.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-junit-jupiter</artifactId>
+            <version>${mockito.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-inline</artifactId>
+            <version>${mockito.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>io.grpc</groupId>
+            <artifactId>grpc-netty-shaded</artifactId>
+            <version>${grpc.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.grpc</groupId>
+            <artifactId>grpc-protobuf</artifactId>
+            <version>${grpc.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>io.grpc</groupId>
+            <artifactId>grpc-stub</artifactId>
+            <version>${grpc.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.annotation</groupId>
+            <artifactId>javax.annotation-api</artifactId>
+            <version>${javax.annotation.version}</version>
+            <scope>provided</scope> <!-- not needed at runtime -->
+        </dependency>
+        <dependency>
+            <groupId>io.grpc</groupId>
+            <artifactId>grpc-testing</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.google.protobuf</groupId>
+            <artifactId>protobuf-java</artifactId>
+            <version>${protobuf.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-text</artifactId>
+            <version>${commons.text.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-collections4</artifactId>
+            <version>${commons-collections4.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${junit.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${junit.jupiter.version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>milvus</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.testcontainers</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.projectlombok</groupId>
+            <artifactId>lombok</artifactId>
+            <version>${lombok.version}</version>
+            <scope>provided</scope>
+        </dependency>
+        <dependency>
+            <groupId>com.squareup.okhttp3</groupId>
+            <artifactId>okhttp</artifactId>
+            <version>${okhttp.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>com.google.code.gson</groupId>
+            <artifactId>gson</artifactId>
+            <version>${gson.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.commons</groupId>
+            <artifactId>commons-pool2</artifactId>
+            <version>${apache.commons.pool2.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <scope>provided</scope>
+        </dependency>
+    </dependencies>
+</project>

+ 0 - 0
src/main/java/io/milvus/client/AbstractMilvusGrpcClient.java → sdk-core/src/main/java/io/milvus/client/AbstractMilvusGrpcClient.java


+ 0 - 0
src/main/java/io/milvus/client/MilvusClient.java → sdk-core/src/main/java/io/milvus/client/MilvusClient.java


+ 0 - 0
src/main/java/io/milvus/client/MilvusMultiServiceClient.java → sdk-core/src/main/java/io/milvus/client/MilvusMultiServiceClient.java


+ 0 - 0
src/main/java/io/milvus/client/MilvusServiceClient.java → sdk-core/src/main/java/io/milvus/client/MilvusServiceClient.java


+ 0 - 0
src/main/java/io/milvus/common/clientenum/ConsistencyLevelEnum.java → sdk-core/src/main/java/io/milvus/common/clientenum/ConsistencyLevelEnum.java


+ 0 - 0
src/main/java/io/milvus/common/clientenum/FunctionType.java → sdk-core/src/main/java/io/milvus/common/clientenum/FunctionType.java


+ 0 - 0
src/main/java/io/milvus/common/constant/MilvusClientConstant.java → sdk-core/src/main/java/io/milvus/common/constant/MilvusClientConstant.java


+ 0 - 0
src/main/java/io/milvus/common/resourcegroup/ResourceGroupConfig.java → sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupConfig.java


+ 0 - 0
src/main/java/io/milvus/common/resourcegroup/ResourceGroupLimit.java → sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupLimit.java


+ 0 - 0
src/main/java/io/milvus/common/resourcegroup/ResourceGroupNodeFilter.java → sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupNodeFilter.java


+ 0 - 0
src/main/java/io/milvus/common/resourcegroup/ResourceGroupTransfer.java → sdk-core/src/main/java/io/milvus/common/resourcegroup/ResourceGroupTransfer.java


+ 0 - 0
src/main/java/io/milvus/common/utils/ExceptionUtils.java → sdk-core/src/main/java/io/milvus/common/utils/ExceptionUtils.java


+ 0 - 0
src/main/java/io/milvus/common/utils/Float16Utils.java → sdk-core/src/main/java/io/milvus/common/utils/Float16Utils.java


+ 0 - 0
src/main/java/io/milvus/common/utils/GTsDict.java → sdk-core/src/main/java/io/milvus/common/utils/GTsDict.java


+ 0 - 0
src/main/java/io/milvus/common/utils/JsonUtils.java → sdk-core/src/main/java/io/milvus/common/utils/JsonUtils.java


+ 0 - 0
src/main/java/io/milvus/common/utils/URLParser.java → sdk-core/src/main/java/io/milvus/common/utils/URLParser.java


+ 0 - 0
src/main/java/io/milvus/common/utils/VectorUtils.java → sdk-core/src/main/java/io/milvus/common/utils/VectorUtils.java


+ 0 - 0
src/main/java/io/milvus/connection/ClusterFactory.java → sdk-core/src/main/java/io/milvus/connection/ClusterFactory.java


+ 0 - 0
src/main/java/io/milvus/connection/ClusterListener.java → sdk-core/src/main/java/io/milvus/connection/ClusterListener.java


+ 0 - 0
src/main/java/io/milvus/connection/Listener.java → sdk-core/src/main/java/io/milvus/connection/Listener.java


+ 0 - 0
src/main/java/io/milvus/connection/QueryNodeListener.java → sdk-core/src/main/java/io/milvus/connection/QueryNodeListener.java


+ 0 - 0
src/main/java/io/milvus/connection/ServerMonitor.java → sdk-core/src/main/java/io/milvus/connection/ServerMonitor.java


+ 0 - 0
src/main/java/io/milvus/connection/ServerSetting.java → sdk-core/src/main/java/io/milvus/connection/ServerSetting.java


+ 0 - 0
src/main/java/io/milvus/exception/ClientNotConnectedException.java → sdk-core/src/main/java/io/milvus/exception/ClientNotConnectedException.java


+ 0 - 0
src/main/java/io/milvus/exception/IllegalResponseException.java → sdk-core/src/main/java/io/milvus/exception/IllegalResponseException.java


+ 0 - 0
src/main/java/io/milvus/exception/MilvusException.java → sdk-core/src/main/java/io/milvus/exception/MilvusException.java


+ 0 - 0
src/main/java/io/milvus/exception/ParamException.java → sdk-core/src/main/java/io/milvus/exception/ParamException.java


+ 0 - 0
src/main/java/io/milvus/exception/ServerException.java → sdk-core/src/main/java/io/milvus/exception/ServerException.java


+ 0 - 0
src/main/java/io/milvus/exception/UnExpectedException.java → sdk-core/src/main/java/io/milvus/exception/UnExpectedException.java


+ 0 - 0
src/main/java/io/milvus/orm/iterator/IteratorAdapterV2.java → sdk-core/src/main/java/io/milvus/orm/iterator/IteratorAdapterV2.java


+ 0 - 0
src/main/java/io/milvus/orm/iterator/IteratorCache.java → sdk-core/src/main/java/io/milvus/orm/iterator/IteratorCache.java


+ 0 - 0
src/main/java/io/milvus/orm/iterator/QueryIterator.java → sdk-core/src/main/java/io/milvus/orm/iterator/QueryIterator.java


+ 7 - 6
src/main/java/io/milvus/orm/iterator/SearchIterator.java → sdk-core/src/main/java/io/milvus/orm/iterator/SearchIterator.java

@@ -1,7 +1,6 @@
 package io.milvus.orm.iterator;
 
-import com.amazonaws.util.CollectionUtils;
-import com.amazonaws.util.StringUtils;
+
 import com.google.common.collect.Lists;
 import com.google.gson.reflect.TypeToken;
 import io.milvus.common.utils.ExceptionUtils;
@@ -19,6 +18,8 @@ import io.milvus.response.SearchResultsWrapper;
 import io.milvus.v2.service.collection.request.CreateCollectionReq;
 import io.milvus.v2.service.vector.request.SearchIteratorReq;
 import io.milvus.v2.utils.RpcUtils;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -185,7 +186,7 @@ public class SearchIterator {
 
         SearchResultsWrapper searchResultsWrapper = new SearchResultsWrapper(response.getResults());
         List<QueryResultsWrapper.RowRecord> result = searchResultsWrapper.getRowRecords(0);
-        if (CollectionUtils.isNullOrEmpty(result)) {
+        if (CollectionUtils.isEmpty(result)) {
             String msg = "Cannot init search iterator because init page contains no matched rows, " +
                     "please check the radius and range_filter set up by searchParams";
             logger.error(msg);
@@ -212,7 +213,7 @@ public class SearchIterator {
 
     private void updateFilteredIds(SearchResultsWrapper searchResultsWrapper) {
         List<SearchResultsWrapper.IDScore> idScores = searchResultsWrapper.getIDScore(0);
-        if (CollectionUtils.isNullOrEmpty(idScores)) {
+        if (CollectionUtils.isEmpty(idScores)) {
             return;
         }
 
@@ -261,7 +262,7 @@ public class SearchIterator {
                 .withMetricType(MetricType.valueOf(searchIteratorParam.getMetricType()))
                 .withIgnoreGrowing(searchIteratorParam.isIgnoreGrowing());
 
-        if (!StringUtils.isNullOrEmpty(searchIteratorParam.getGroupByFieldName())) {
+        if (StringUtils.isNotEmpty(searchIteratorParam.getGroupByFieldName())) {
             searchParamBuilder.withGroupByFieldName(searchIteratorParam.getGroupByFieldName());
         }
         fillVectorsByPlType(searchParamBuilder);
@@ -455,7 +456,7 @@ public class SearchIterator {
     }
 
     private String filteredDuplicatedResultExpr(String expr) {
-        if (CollectionUtils.isNullOrEmpty(filteredIds)) {
+        if (CollectionUtils.isEmpty(filteredIds)) {
             return expr;
         }
 

+ 0 - 0
src/main/java/io/milvus/param/ConnectParam.java → sdk-core/src/main/java/io/milvus/param/ConnectParam.java


+ 0 - 0
src/main/java/io/milvus/param/Constant.java → sdk-core/src/main/java/io/milvus/param/Constant.java


+ 0 - 0
src/main/java/io/milvus/param/IndexBuildState.java → sdk-core/src/main/java/io/milvus/param/IndexBuildState.java


+ 0 - 0
src/main/java/io/milvus/param/IndexType.java → sdk-core/src/main/java/io/milvus/param/IndexType.java


+ 0 - 0
src/main/java/io/milvus/param/LogLevel.java → sdk-core/src/main/java/io/milvus/param/LogLevel.java


+ 0 - 0
src/main/java/io/milvus/param/MetricType.java → sdk-core/src/main/java/io/milvus/param/MetricType.java


+ 0 - 0
src/main/java/io/milvus/param/MultiConnectParam.java → sdk-core/src/main/java/io/milvus/param/MultiConnectParam.java


+ 0 - 0
src/main/java/io/milvus/param/ParamUtils.java → sdk-core/src/main/java/io/milvus/param/ParamUtils.java


+ 0 - 0
src/main/java/io/milvus/param/QueryNodeSingleSearch.java → sdk-core/src/main/java/io/milvus/param/QueryNodeSingleSearch.java


+ 0 - 0
src/main/java/io/milvus/param/R.java → sdk-core/src/main/java/io/milvus/param/R.java


+ 0 - 0
src/main/java/io/milvus/param/RetryParam.java → sdk-core/src/main/java/io/milvus/param/RetryParam.java


+ 0 - 0
src/main/java/io/milvus/param/RpcStatus.java → sdk-core/src/main/java/io/milvus/param/RpcStatus.java


+ 0 - 0
src/main/java/io/milvus/param/ServerAddress.java → sdk-core/src/main/java/io/milvus/param/ServerAddress.java


+ 0 - 0
src/main/java/io/milvus/param/alias/AlterAliasParam.java → sdk-core/src/main/java/io/milvus/param/alias/AlterAliasParam.java


+ 0 - 0
src/main/java/io/milvus/param/alias/CreateAliasParam.java → sdk-core/src/main/java/io/milvus/param/alias/CreateAliasParam.java


+ 0 - 0
src/main/java/io/milvus/param/alias/DropAliasParam.java → sdk-core/src/main/java/io/milvus/param/alias/DropAliasParam.java


+ 0 - 0
src/main/java/io/milvus/param/alias/ListAliasesParam.java → sdk-core/src/main/java/io/milvus/param/alias/ListAliasesParam.java


Some files were not shown because too many files changed in this diff