Skip to content

[Bug]: [partial update] partial update timestamptz field will result in pod panic #45729

@FeilongHou

Description

@FeilongHou

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

Image

Anything else?

No response

Metadata

Metadata

Assignees

Labels

kind/bugIssues or changes related a bugtriage/acceptedIndicates an issue or PR is ready to be actively worked on.

Type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions