This is an automated email from the ASF dual-hosted git repository.

fmariani pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 29e02cb0ac1f133fa7691c14fe391332eea1b39d
Author: Salvatore Mongiardo <[email protected]>
AuthorDate: Tue Mar 24 15:21:44 2026 +0100

    Camel-Milvus: collection must be loaded into memory before DML operations
---
 .../camel/component/milvus/MilvusProducer.java     |   2 +
 .../component/milvus/it/MilvusComponentIT.java     | 101 ++++++++++++++++++++-
 2 files changed, 100 insertions(+), 3 deletions(-)

diff --git 
a/components/camel-ai/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusProducer.java
 
b/components/camel-ai/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusProducer.java
index d76837286629..293791ba1379 100644
--- 
a/components/camel-ai/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusProducer.java
+++ 
b/components/camel-ai/camel-milvus/src/main/java/org/apache/camel/component/milvus/MilvusProducer.java
@@ -178,6 +178,8 @@ public class MilvusProducer extends DefaultProducer {
         final Message in = exchange.getMessage();
         final DeleteParam body = in.getMandatoryBody(DeleteParam.class);
 
+        this.client.loadCollection(
+                
LoadCollectionParam.newBuilder().withCollectionName(getEndpoint().getCollection()).withSyncLoad(true).build());
         R<MutationResult> result = this.client.delete(body);
 
         handleResponseStatus(result);
diff --git 
a/components/camel-ai/camel-milvus/src/test/java/org/apache/camel/component/milvus/it/MilvusComponentIT.java
 
b/components/camel-ai/camel-milvus/src/test/java/org/apache/camel/component/milvus/it/MilvusComponentIT.java
index ba6c42e6b0eb..191fa01e2be2 100644
--- 
a/components/camel-ai/camel-milvus/src/test/java/org/apache/camel/component/milvus/it/MilvusComponentIT.java
+++ 
b/components/camel-ai/camel-milvus/src/test/java/org/apache/camel/component/milvus/it/MilvusComponentIT.java
@@ -42,7 +42,9 @@ import org.apache.camel.component.milvus.MilvusTestSupport;
 import org.apache.camel.component.milvus.helpers.MilvusHelperCreateCollection;
 import org.apache.camel.component.milvus.helpers.MilvusHelperCreateIndex;
 import org.apache.camel.component.milvus.helpers.MilvusHelperDelete;
+import org.apache.camel.component.milvus.helpers.MilvusHelperInsert;
 import org.apache.camel.component.milvus.helpers.MilvusHelperSearch;
+import org.apache.camel.component.milvus.helpers.MilvusHelperUpsert;
 import org.apache.camel.support.DefaultExchange;
 import org.assertj.core.util.Lists;
 import org.junit.jupiter.api.*;
@@ -324,9 +326,102 @@ public class MilvusComponentIT extends MilvusTestSupport {
 
     @Test
     @Order(12)
+    public void createRagCollectionWithHelper() throws Exception {
+        MilvusHelperCreateCollection helper = new 
MilvusHelperCreateCollection();
+        helper.setCollectionName("test_helper_rag");
+        helper.setCollectionDescription("helper RAG test collection");
+        helper.setIdFieldName("docID");
+        helper.setVectorFieldName("embedding");
+        helper.setTextFieldName("content");
+        helper.setTextFieldDataType("VarChar");
+        helper.setTextFieldMaxLength("2048");
+        helper.setDimension("64");
+
+        Exchange tempExchange = new DefaultExchange(context);
+        helper.process(tempExchange);
+
+        Exchange result = fluentTemplate.to("milvus:test_helper_rag")
+                .withHeader(MilvusHeaders.ACTION, 
tempExchange.getIn().getHeader(MilvusHeaders.ACTION))
+                .withBody(tempExchange.getIn().getBody())
+                .request(Exchange.class);
+
+        assertThat(result).isNotNull();
+        assertThat(result.getException()).isNull();
+    }
+
+    @Test
+    @Order(13)
+    public void createRagIndexWithHelper() throws Exception {
+        MilvusHelperCreateIndex helper = new MilvusHelperCreateIndex();
+        helper.setCollectionName("test_helper_rag");
+        helper.setVectorFieldName("embedding");
+        helper.setIndexName("embeddingIndex");
+        helper.setIndexType("IVF_FLAT");
+        helper.setMetricType("L2");
+        helper.setExtraParam("{\"nlist\":128}");
+
+        Exchange tempExchange = new DefaultExchange(context);
+        helper.process(tempExchange);
+
+        Exchange result = fluentTemplate.to("milvus:test_helper_rag")
+                .withHeader(MilvusHeaders.ACTION, 
tempExchange.getIn().getHeader(MilvusHeaders.ACTION))
+                .withBody(tempExchange.getIn().getBody())
+                .request(Exchange.class);
+
+        assertThat(result).isNotNull();
+        assertThat(result.getException()).isNull();
+    }
+
+    @Test
+    @Order(14)
+    public void insertWithHelper() throws Exception {
+        MilvusHelperInsert helper = new MilvusHelperInsert();
+        helper.setCollectionName("test_helper_rag");
+        helper.setVectorFieldName("embedding");
+        helper.setTextFieldMappings("content=contentVar");
+
+        Exchange tempExchange = new DefaultExchange(context);
+        tempExchange.setVariable("contentVar", "This is a test document for 
RAG");
+        tempExchange.getIn().setBody(generateFloatVector());
+        helper.process(tempExchange);
+
+        Exchange result = fluentTemplate.to("milvus:test_helper_rag")
+                .withHeader(MilvusHeaders.ACTION, 
tempExchange.getIn().getHeader(MilvusHeaders.ACTION))
+                .withBody(tempExchange.getIn().getBody())
+                .request(Exchange.class);
+
+        assertThat(result).isNotNull();
+        assertThat(result.getException()).isNull();
+    }
+
+    @Test
+    @Order(15)
+    public void upsertWithHelper() throws Exception {
+        MilvusHelperUpsert helper = new MilvusHelperUpsert();
+        helper.setCollectionName("test_helper_rag");
+        helper.setVectorFieldName("embedding");
+        helper.setTextFieldMappings("content=contentVar");
+
+        Exchange tempExchange = new DefaultExchange(context);
+        tempExchange.setVariable("contentVar", "Updated document content");
+        tempExchange.getIn().setBody(generateFloatVector());
+        helper.process(tempExchange);
+
+        Exchange result = fluentTemplate.to("milvus:test_helper_rag")
+                .withHeader(MilvusHeaders.ACTION, 
tempExchange.getIn().getHeader(MilvusHeaders.ACTION))
+                .withBody(tempExchange.getIn().getBody())
+                .request(Exchange.class);
+
+        assertThat(result).isNotNull();
+        // upsert without docID field will fail (autoID collection)
+        Assertions.assertTrue(result.isFailed());
+    }
+
+    @Test
+    @Order(16)
     public void searchWithHelper() throws Exception {
         MilvusHelperSearch helper = new MilvusHelperSearch();
-        helper.setCollectionName("test");
+        helper.setCollectionName("test_helper");
         helper.setOutputFields("userAge");
         helper.setFilter("userAge>0");
         helper.setLimit("100");
@@ -336,7 +431,7 @@ public class MilvusComponentIT extends MilvusTestSupport {
         tempExchange.getIn().setBody(generateFloatVector());
         helper.process(tempExchange);
 
-        Exchange result = fluentTemplate.to("milvus:test")
+        Exchange result = fluentTemplate.to("milvus:test_helper")
                 .withHeader(MilvusHeaders.ACTION, 
tempExchange.getIn().getHeader(MilvusHeaders.ACTION))
                 .withBody(tempExchange.getIn().getBody())
                 .request(Exchange.class);
@@ -346,7 +441,7 @@ public class MilvusComponentIT extends MilvusTestSupport {
     }
 
     @Test
-    @Order(13)
+    @Order(17)
     public void deleteWithHelper() throws Exception {
         MilvusHelperDelete helper = new MilvusHelperDelete();
         helper.setCollectionName("test_helper");

Reply via email to