-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Open
Open
Copy link
Labels
kind/bugIssues or changes related a bugIssues or changes related a bugtriage/acceptedIndicates an issue or PR is ready to be actively worked on.Indicates an issue or PR is ready to be actively worked on.
Milestone
Description
Is there an existing issue for this?
- I have searched the existing issues
Environment
- Milvus version: master-20251119-87f9a79a
- Deployment mode(standalone or cluster): standalone
- MQ type(rocksmq, pulsar or kafka):
- SDK version(e.g. pymilvus v2.0.0rc2): 2.7.0rc64
- OS(Ubuntu or CentOS):
- CPU/Memory:
- GPU:
- Others:Current Behavior
pod will panic after initial upsert(partial_update=True)
the first upsert in step 2
Expected Behavior
No response
Steps To Reproduce
import pymilvus as pym
import numpy as np
import random
import json
import pytz
import datetime
from collections import deque
from pymilvus import MilvusClient, db, Collection, connections
from common import common_func as cf
from common import common_type as ct
from pymilvus import DataType
from utils.util_pymilvus import *
from pymilvus import __version__
print(__version__)
default_nb = 2000
default_dim = 128
default_int32_value = np.int32(100)
default_primary_key_field_name = "int64"
default_vector_field_name = "vector"
default_int32_field_name = "int32"
default_json_field_name = "json"
default_timestamp_field_name = "timestamp"
client = MilvusClient(
uri="http://10.102.9.84:19530",
token="root:Milvus"
)
collection_name = "test_partial_update_timestamp"
schema = cf.gen_all_datatype_collection_schema(dim=default_dim)
index_params = client.prepare_index_params()
text_sparse_emb_field_name = "text_sparse_emb"
for i in range(len(schema.fields)):
field_name = schema.fields[i].name
if field_name == "json_field":
index_params.add_index(field_name, index_type="AUTOINDEX",
params={"json_cast_type": "json"})
elif field_name == text_sparse_emb_field_name:
index_params.add_index(field_name, index_type="AUTOINDEX", metric_type="BM25")
else:
index_params.add_index(field_name, index_type="AUTOINDEX")
client.create_collection(collection_name, default_dim, schema=schema,
consistency_level="Strong", index_params=index_params)
# step 2: insert data
rows = cf.gen_row_data_by_schema(nb=default_nb, schema=schema)
client.upsert(collection_name, rows, partial_update=True)
# step 3: partial update data
for field in schema.fields:
if field.is_primary:
primary_key_field_name = field.name
break
vector_field_type = [DataType.FLOAT16_VECTOR,
DataType.BFLOAT16_VECTOR,
DataType.INT8_VECTOR,
DataType.FLOAT_VECTOR]
# fields to be updated
update_fields_name = []
scalar_update_name = []
vector_update = [] # this stores field object
for field in schema.fields:
field_name = field.name
if field_name != text_sparse_emb_field_name:
update_fields_name.append(field_name)
if field.dtype not in vector_field_type:
scalar_update_name.append(field_name)
else:
vector_update.append(field)
# PU scalar fields and vector fields together
new_rows = cf.gen_row_data_by_schema(nb=default_nb, schema=schema,
desired_field_names=update_fields_name)
try:
client.upsert(collection_name, new_rows, partial_update=True)
print(f"partial update all fields but text_sparse_emb field complete!✅")
except Exception as e:
print(f"partial update all fields but text_sparse_emb field failed!❌")
print(f"error: {e}")
client.drop_collection(collection_name)Milvus Log
Anything else?
No response
Metadata
Metadata
Assignees
Labels
kind/bugIssues or changes related a bugIssues or changes related a bugtriage/acceptedIndicates an issue or PR is ready to be actively worked on.Indicates an issue or PR is ready to be actively worked on.