Summary
vectordb-bench==1.0.21 appears incompatible with milvusdb/milvus:v2.6.15 during the Milvus HNSW benchmark build/load stage.
The benchmark successfully creates the collection and inserts 1M rows, but fails during the optimize/compaction step with:
Value out of range: 9223372036854775808
The final VectorDBBench result is marked failed (label: "x") with zero load timings.
Downgrading to vectordb-bench==1.0.20 avoids the issue in the same environment.
Environment
- Milvus image:
milvusdb/milvus:v2.6.15
- vectordb-bench:
1.0.21
- pymilvus:
3.0.0
- Benchmark command:
vectordbbench milvushnsw \
--uri http://localhost:19530 \
--case-type Performance768D1M \
--k 100 \
--num-concurrency 128,160,192,224,256,320,384 \
--concurrency-duration 30 \
--concurrency-timeout 3600 \
--num-shards 4 \
--replica-number 1 \
--m 16 \
--ef-construction 128 \
--ef-search 128 \
--skip-search-serial \
--skip-search-concurrent
Actual Behavior
The build/load phase fails after insertion during Milvus optimize/compaction:
Milvus optimizing before search
Milvus all persistent segments are sorted.
Milvus compact or list segments error: <MilvusException: (code=1, message=Unexpected error, message=<Value out of range: 9223372036854775808>)>
Milvus optimize error: 'ErrorCode' object is not callable
VectorDB optimize error: 'ErrorCode' object is not callable
Failed to run performance case, reason = 'ErrorCode' object is not callable
Result JSON:
{
"metrics": {
"insert_duration": 0.0,
"optimize_duration": 0.0,
"load_duration": 0.0
},
"label": "x"
}
Expected Behavior
The build/load stage should complete successfully and produce non-zero insert/optimize/load timings, as it does with vectordb-bench==1.0.20.
Suspected Cause
In vectordb-bench==1.0.21, the Milvus backend appears to call:
self.client.compact(self.collection_name, target_size=(2**63 - 1))
With pymilvus==3.0.0, MilvusClient.compact() treats integer target_size using the default unit "mb" and converts it via parse_target_size().
A quick repro:
from pymilvus.milvus_client.optimize_task import parse_target_size
parse_target_size("9223372036854775807mb")
# returns 9223372036854775808
That value is larger than signed int64 max and is rejected by Milvus:
Value out of range: 9223372036854775808
There also seems to be a secondary error handling issue:
raises:
'ErrorCode' object is not callable
which masks the original Milvus exception.
This issue is assisted with codex.
Summary
vectordb-bench==1.0.21appears incompatible withmilvusdb/milvus:v2.6.15during the Milvus HNSW benchmark build/load stage.The benchmark successfully creates the collection and inserts 1M rows, but fails during the optimize/compaction step with:
The final VectorDBBench result is marked failed (
label: "x") with zero load timings.Downgrading to
vectordb-bench==1.0.20avoids the issue in the same environment.Environment
milvusdb/milvus:v2.6.151.0.213.0.0Actual Behavior
The build/load phase fails after insertion during Milvus optimize/compaction:
Result JSON:
{ "metrics": { "insert_duration": 0.0, "optimize_duration": 0.0, "load_duration": 0.0 }, "label": "x" }Expected Behavior
The build/load stage should complete successfully and produce non-zero insert/optimize/load timings, as it does with
vectordb-bench==1.0.20.Suspected Cause
In
vectordb-bench==1.0.21, the Milvus backend appears to call:With
pymilvus==3.0.0,MilvusClient.compact()treats integertarget_sizeusing the default unit"mb"and converts it viaparse_target_size().A quick repro:
That value is larger than signed int64 max and is rejected by Milvus:
There also seems to be a secondary error handling issue:
raises:
which masks the original Milvus exception.
This issue is assisted with codex.