23290 Commits

Author SHA1 Message Date
sre-ci-robot
9a614a11b0
[automated] Bump milvus version to v2.6.5 (#45431)
Bump milvus version to v2.6.5
Signed-off-by: sre-ci-robot sre-ci-robot@users.noreply.github.com

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-11-09 20:33:37 +08:00
Chun Han
b0e490b879
fix: Group value is nil(#45418) (#45421)
related: #45418
pr: https://github.com/milvus-io/milvus/pull/45422

Signed-off-by: MrPresent-Han <chun.han@gmail.com>
Co-authored-by: MrPresent-Han <chun.han@gmail.com>
v2.6.5 pkg/v2.6.5
2025-11-08 10:27:34 +08:00
congqixia
8a23cdb081
fix: [hotfix] Initialize timestamp range in composite binlog writer (#45283) (#45402)
Cherry pick from 2.6
pr: 45283
Related to #45282

Initialize `tsFrom` and `tsTo` fields in the composite binlog record
writer constructor to prevent timestamp range information loss in stats
tasks.

The composite binlog writer now properly initializes the timestamp range
fields, ensuring that:
1. The first timestamp update will correctly set the minimum (`tsFrom`)
2. The first timestamp update will correctly set the maximum (`tsTo`)
3. All subsequent data writes will maintain accurate timestamp range
tracking

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-11-07 21:11:35 +08:00
congqixia
7671e4881b
enhance: Bump milvus & proto version to v2.6.5 (#45399)
Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-11-07 18:23:34 +08:00
congqixia
ef1e7a6bc3
enhance: [hotfix] Update builder image tag upgrading go1.24.9 (#45394) (#45398)
Cherry-pick from master
pr: #45394
Related to #45359
Fixing CVE-2025-58187

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-11-07 16:25:35 +08:00
aoiasd
e938bacf20
enhance: [2.6] skip check source id (#45379)
pr: https://github.com/milvus-io/milvus/pull/45377
relate:https://github.com/milvus-io/milvus/issues/45381

Signed-off-by: aoiasd <zhicheng.yue@zilliz.com>
2025-11-07 15:47:34 +08:00
congqixia
81c2fd46a5
fix: [hotfix]Handle empty FieldsData in reduce/rerank for requery scenario (#45137) (#45389)
issue: #44909
pr: #44917

When requery optimization is enabled, search results contain IDs but
empty FieldsData. During reduce/rerank operations, if the first shard
has empty FieldsData while others have data, PrepareResultFieldData
initializes an empty array, causing AppendFieldData to panic when
accessing array indices.

Changes:
- Find first non-empty FieldsData as template in 3 functions:
reduceAdvanceGroupBy, reduceSearchResultDataWithGroupBy,
reduceSearchResultDataNoGroupBy
- Add length check before 2 AppendFieldData calls in reduce functions to
prevent panic
- Improve newRerankOutputs to find first non-empty fieldData using
len(FieldsData) check instead of GetSizeOfIDs
- Add length check in appendResult before AppendFieldData
- Add comprehensive unit tests for empty and partial empty FieldsData
scenarios in both reduce and rerank functions

This fix handles both pure requery (all empty) and mixed scenarios (some
empty, some with data) without breaking normal search flow. The key
improvement is checking FieldsData length directly rather than IDs, as
requery may have IDs but empty FieldsData.

Signed-off-by: Wei Liu <wei.liu@zilliz.com>
Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
Co-authored-by: wei liu <wei.liu@zilliz.com>
2025-11-07 14:41:34 +08:00
zhagnlu
1654b4cdc3
fix: [2.6] add null check for packed_writer_ in JsonStatsParquetWrite… (#45376)
fix: [2.6] add null check for packed_writer_ in
JsonStatsParquetWriter::Close() (#45158) (#45176)
Cherry-pick from master
Related to #45157
Fix a bug where DataNode panics when building json stats index throws an
exception before the writer is initialized. The destructor would call
Close() on an uninitialized packed_writer_ pointer, causing a null
pointer dereference.

fix: fix bug for shredding json when empty but not null json (#45214)

pr: #45221

fix: not use json_shredding for json path is null (#45311)

pr: #45310

Signed-off-by: luzhang <luzhang@zilliz.com>
Co-authored-by: congqixia <congqi.xia@zilliz.com>
Co-authored-by: luzhang <luzhang@zilliz.com>
2025-11-07 14:13:35 +08:00
congqixia
0dc26d9c99
enhance: [hotfix] Bump go version to 1.24.9 (#45359) (#45378)
Cherry-pick from master
pr: #45359
Fixing CVE-2025-58187

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-11-07 11:39:34 +08:00
cai.zhang
923f9dfdc2
fix: [2.6hf]Skip building text index for newly added columns (#45358)
issue: #45315

master pr #45316

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2025-11-06 20:36:50 +08:00
XuanYang-cn
1c39169def
fix: [2.6hf]Accidentally ignored sealed segments in L0 Compaction (#45351)
When there're no growing segments in the collection, L0 Compaction will
try to choose all L0 segments that hits all L1/L2 segments.

However, if there's Sealed Segment still under flushing in DataNode at
the same time L0 Compaction selects satisfied L1/L2 segments, L0
Compaction will ignore this Segment because it's not in "FlushState",
which is wrong, causing missing deletes on the Sealed Segment.

This quick solution here is to fail this L0 compaction task once
selected a Sealed segment.

See also: #45339
pr: #45340

Signed-off-by: yangxuan <xuan.yang@zilliz.com>
2025-11-06 19:05:34 +08:00
congqixia
11302f8215
fix: [hotfix] Move FinishLoad before text index creation to ensure raw data availability (#45336)
Cherry-pick from master
pr: #45334
Related to #45333

Fix segment loading failure when adding fields with text match enabled.
The issue occurred because text indexes were being loaded before
FinishLoad() was called, meaning raw data was not properly available
when text index creation attempted to access it, resulting in "failed to
create text index, neither raw data nor index are found" errors.

Solution is to move the FinishLoad() call to execute after raw data
loading but before text index loading. This ensures that:
1. Raw data is properly loaded and available in memory
2. Text indexes can access the raw data they need during creation
3. The segment is in the correct state before any index operations

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-11-06 14:53:33 +08:00
congqixia
43c16ae6f1
fix: [hotfix] Support JSON default value in compaction (#45332)
Cherry-pick from master
pr: #45330
Related to #45329

Fix compaction failure when handling newly added dynamic fields with
storage v1 binlogs. The issue occurred because the
`GenerateEmptyArrayFromSchema` function did not support JSON data type
default values, causing "Unexpected default value" errors during
compaction.

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-11-06 10:27:33 +08:00
Buqian Zheng
ddc0656d43
enhance: disable default json stats (#45133)
issue: https://github.com/milvus-io/milvus/issues/44132

Signed-off-by: Buqian Zheng <zhengbuqian@gmail.com>
2025-10-28 20:50:28 +08:00
congqixia
659c93836c
fix: [hotfix]Update milvus-storage to fix duplicate AWS SDK initialization (#45062) (#45075)
Cherry-pick from master
pr: #45062

Update milvus-storage version from aa189ad to e5f5b4c to include the fix
for duplicate AWS SDK initialization that was causing init conflicts.

This update removes the redundant arrow::fs::InitializeS3() call that
was resulting in duplicate Aws::InitAPI() initialization. The duplicate
initialization was causing AWS SDK to ignore custom configurations,
particularly affecting GCP Workload Identity authentication.

Changes in milvus-storage e5f5b4c:
- Remove redundant arrow::fs::InitializeS3() call
- Keep only the extended S3 initialization with custom AWS SDK options
- Ensure GCP IAM authentication via custom HTTP client factory works
correctly

Relates to #44745
Reference: milvus-io/milvus-storage#285

---------

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-10-24 14:10:05 +08:00
zhagnlu
9b9a303a09
fix:fix valid ut test of TestUnaryRangeJsonNullable (#44990)
#44959

Signed-off-by: luzhang <luzhang@zilliz.com>
Co-authored-by: luzhang <luzhang@zilliz.com>
v2.6.4
2025-10-21 10:38:59 +08:00
Spade A
9cb6c0be2f
fix: fix "at most one distinct index is allowed per field" in STRUCT index [2.6] (#44970)
master: https://github.com/milvus-io/milvus/pull/44969
issue: https://github.com/milvus-io/milvus/issues/42148

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2025-10-21 10:38:29 +08:00
cai.zhang
09880e8e6c
fix: [2.6]Ensure fulfill promise when CreateArrowFileSystem throw an exception (#44976)
issue: #44974 

master pr: #44975

---------

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2025-10-21 10:14:03 +08:00
Buqian Zheng
6476b1dbcf
enhance: [2.6]enable default json stats (#44811)
issue: https://github.com/milvus-io/milvus/issues/44132
pr: #44810

Signed-off-by: Buqian Zheng <zhengbuqian@gmail.com>
pkg/v2.6.4
2025-10-20 18:58:09 +08:00
congqixia
4312bfd030
enhance: Bump milvus & proto version to v2.6.4 (#44977)
Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-10-20 18:56:03 +08:00
XuanYang-cn
41dfbba33a
fix: Disk encryption config missing (#44820) (#44839)
pr: #44820
See also: #44823

Signed-off-by: yangxuan <xuan.yang@zilliz.com>
2025-10-20 18:52:03 +08:00
wei liu
613b6a716e
fix: [2.6] Fix deactivate balance checker also stops stopping balance (#44836)
issue: #43858
pr: #44834
Fix the issue introduced in PR #43992 where deactivating the balance
checker incorrectly stops stopping balance operations.

Changes:
- Move IsActive() check after stopping balance logic
- Only skip normal balance when checker is inactive
- Allow stopping balance to proceed regardless of checker state

This ensures stopping balance can execute even when the balance checker
is deactivated.

---------

Signed-off-by: Wei Liu <wei.liu@zilliz.com>
2025-10-20 18:48:03 +08:00
zhagnlu
26c3983d93
fix: fix not equal not include None (#44960)
#44959

Signed-off-by: luzhang <luzhang@zilliz.com>
Co-authored-by: luzhang <luzhang@zilliz.com>
2025-10-20 18:25:52 +08:00
aoiasd
fd22dc281a
enhance: [2.6] update some annotations (#44953)
relate: https://github.com/milvus-io/milvus/issues/43114
pr: https://github.com/milvus-io/milvus/pull/44769

---------

Signed-off-by: aoiasd <zhicheng.yue@zilliz.com>
2025-10-20 15:42:08 +08:00
Zhen Ye
c835f4b0dc
fix: rerank before requery if reranker didn't use field data (#44943)
issue: #44918
pr: #44942

---------

Signed-off-by: chyezh <chyezh@outlook.com>
2025-10-20 15:38:03 +08:00
nico
d6de935b88
test: update cases for binary vectors support HNSW and timezone[2.6] (#44931)
pr: #44928

Signed-off-by: nico <cheng.yuan@zilliz.com>
2025-10-20 14:52:03 +08:00
congqixia
b737011048
fix: [2.6] support JSON default value in CreateArrowScalarFromDefaultValue(#44912) (#44952)
Cherry-pick from master
pr: #44912
Related to #44897

Add missing JSON data type handling in CreateArrowScalarFromDefaultValue
to fix query failures when dynamic fields are enabled. JSON default
values are now properly converted to arrow::BinaryScalar using
bytes_data().

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-10-20 10:46:03 +08:00
zhikunyao
dc2c4d0f7f
enhance: remove gcc from build dockerfile to fix cve 2.6 (#44882)
pr: #44881

Signed-off-by: Zhikun Yao <zhikun.yao@zilliz.com>
2025-10-20 10:42:03 +08:00
Spade A
94c3f114eb
fix: reject GEOMETRY and TIMESTAMPTZ in STRUCT [2.6] (#44938)
issue: https://github.com/milvus-io/milvus/issues/44930
pr: https://github.com/milvus-io/milvus/pull/44937

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2025-10-20 10:34:03 +08:00
Zhen Ye
1ff0d5d47d
fix: use short debug string to avoid newline in debug logs (#44929)
issue: #44924
pr: #44925

Signed-off-by: chyezh <chyezh@outlook.com>
2025-10-20 10:32:03 +08:00
Bingyi Sun
82c019181e
fix: Fix exists expr for json flat index (#44951)
issue: https://github.com/milvus-io/milvus/issues/44915
pr: https://github.com/milvus-io/milvus/pull/44910

Signed-off-by: sunby <sunbingyi1992@gmail.com>
2025-10-19 19:52:02 +08:00
sparknack
64b76b723f
enhance: [2.6] add a disk quota for the loaded binlog size to prevent load failures of querynode (#44932)
issue: #41435 
pr: #44893

---------

Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
2025-10-19 19:46:07 +08:00
zhagnlu
ce8187d28e
fix:remove duplicated '/' in jsonstats path (#44945)
pr: #44939

Signed-off-by: luzhang <luzhang@zilliz.com>
Co-authored-by: luzhang <luzhang@zilliz.com>
2025-10-19 12:10:02 +08:00
cai.zhang
642a77a497
fix: [2.6] Fix return EOF when geometry enable null (#44913)
issue: #44648
master pr: #44911 

If the value is `null` during insertion, it will be omitted instead of
being filled with nil. Therefore, when performing checks, there’s no
need to retrieve data based on the valid offset.

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2025-10-17 17:16:08 +08:00
cai.zhang
2dea67cc20
fix: [2.6]Fix the geometry return POINT(0 0) when growing mmap is enabled (#44890)
issue: #44802 
master pr: #44889 

After a Geometry object is serialized into WKB, the resulting binary may
contain '\0' bytes.
When growing mmap is enabled, the append data logic uses strcpy, which
stops copying at the first '\0' bytes.
This causes only part of the WKB---typically the portion up to the
geometry type field to be copied, leading to corrupted data.
As a result, during parsing, all POINT geometries are incorrectly
interperted as POINT(0 0).

To fix this issue, memcpy will be used instead of strcpy.

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2025-10-17 17:14:23 +08:00
cai.zhang
dd62691438
enhance: [2.6]Support import geometry data by json/csv (#44827)
issue: #44787 
master pr: #44826

---------

Signed-off-by: Cai Zhang <cai.zhang@zilliz.com>
2025-10-17 17:12:17 +08:00
zhagnlu
8e8b551b6f
fix:unified json exists path semantic (#44926)
pr: #44916

Signed-off-by: luzhang <luzhang@zilliz.com>
Co-authored-by: luzhang <luzhang@zilliz.com>
2025-10-17 15:52:02 +08:00
Spade A
c6d951adb8
feat: impl StructArray -- ban non-float-vector for now [2.6] (#44876)
ref https://github.com/milvus-io/milvus/issues/42148
pr: https://github.com/milvus-io/milvus/pull/44875

---------

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2025-10-17 15:26:02 +08:00
Spade A
cfd748f50d
fix: empty internal InsertMsg caues panic[2.6] (#44906)
issue: https://github.com/milvus-io/milvus/issues/44901
pr: https://github.com/milvus-io/milvus/pull/44903

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
2025-10-17 10:32:01 +08:00
congqixia
2b5c2f7303
fix: [2.6] ensure deterministic search result ordering when scores are equal (#44870) (#44884)
Cherry-pick from master
pr: #44870

Related to #44819
This fix addresses an issue(#44819) where the offset parameter did not
work correctly during searches when multiple results had identical
scores. The problem occurred because results with equal scores were not
consistently ordered, leading to unpredictable pagination behavior.

The solution adds a new sorting step (SortEqualScoresByPks) in the
reduce phase that sorts results with identical scores by their primary
keys in ascending order. This ensures deterministic ordering and enables
proper offset functionality.

Changes:
- Add SortEqualScoresByPks() to sort results with equal scores by PK
- Add SortEqualScoresOneNQ() to handle per-query sorting logic
- Invoke sorting step after FillPrimaryKey() in Reduce() workflow

---------

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-10-16 19:34:08 +08:00
foxspy
8cb49595e7
fix: [2.6] update aisaq params (#44862)
issue: #44860 
pr: #44861

Signed-off-by: xianliang.li <xianliang.li@zilliz.com>
2025-10-15 18:19:45 +08:00
cqy123456
b43dcdf9aa
enhance: [2.6]embedding_list support mmap in MemVectorIndex (#44832)
issue: https://github.com/milvus-io/milvus/issues/44702
related pr: https://github.com/milvus-io/milvus/pull/44764

Signed-off-by: cqy123456 <qianya.cheng@zilliz.com>
2025-10-15 16:18:00 +08:00
yanliang567
bb4446e5af
test:[cp 2.6] add test for allow insert auto id (#44837)
related issue: https://github.com/milvus-io/milvus/issues/44425
pr: #44801

split insert.py into a few files: upsert.py, insert.py,
partial_upsert.py ...
add test for allow insert auto id

---------

Signed-off-by: yanliang567 <yanliang.qiao@zilliz.com>
2025-10-15 11:38:00 +08:00
sparknack
88b731d1f0
fix: milvus-common update (#44799)
issue: #44501 
pr: #44798

Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
2025-10-15 11:26:00 +08:00
sparknack
54fe82756a
enhance: [2.6] add cachinglayer management for TextMatchIndex (#44768)
issue: #41435, #44502
pr: #44741, #44806

---------

Signed-off-by: Shawn Wang <shawn.wang@zilliz.com>
2025-10-15 11:09:59 +08:00
Bingyi Sun
cd272e8c94
enhance: optimize the performace of bitmap reverse lookup (#44804) (#44838)
pr: https://github.com/milvus-io/milvus/pull/44804

Signed-off-by: sunby <sunbingyi1992@gmail.com>
2025-10-15 10:38:00 +08:00
Spade A
661b803d12
feat: impl StructArray -- support more types of vector in STRUCT [2.6] (#44845)
ref: https://github.com/milvus-io/milvus/issues/42148
pr: https://github.com/milvus-io/milvus/pull/44736

---------

Signed-off-by: SpadeA <tangchenjie1210@gmail.com>
Signed-off-by: SpadeA-Tang <tangchenjie1210@gmail.com>
2025-10-15 10:34:00 +08:00
cqy123456
57f0d028bc
fix:[2.6]remove the limit of deduplicate case when disable autoindex (#44824)
issue: https://github.com/milvus-io/milvus/issues/44702
related pr: https://github.com/milvus-io/milvus/pull/44825

Signed-off-by: cqy123456 <qianya.cheng@zilliz.com>
2025-10-14 17:02:00 +08:00
nico
abdf993efd
enhance: [skip e2e]Enable nightly test for the 2.6 branch (#44829)
Signed-off-by: nico <cheng.yuan@zilliz.com>
2025-10-14 16:58:08 +08:00
congqixia
8ed2717c3f
fix: [2.6] avoid concurrent Reset/Add operations on DataCoord metrics (#44789) (#44815)
Cherry-pick from master
pr: #44789

This commit addresses issue #44788 where the
`datacoord_stored_binlog_size` metric could become inaccurate when
multiple concurrent `GetMetrics` calls arrived at DataCoord.

### Problem

The original implementation called `Reset()` followed by `Add()`
operations on Prometheus metrics within the `GetQuotaInfo()` method.
When multiple goroutines invoked this method concurrently, race
conditions occurred:
- Thread 1: Reset() → Add(value1)
- Thread 2: Reset() → Add(value2)
- Result: Metrics could be reset multiple times and values added in an
interleaved fashion, leading to inaccurate and inflated metric values

### Solution

Changed the approach from `Reset() + Add()` to aggregating metric values
in local maps first, then using `Set()` to update metrics atomically:

1. Collect segment size data into local maps:
   - `storedBinlogSize`: tracks size per collection per segment state
   - `binlogFileSize`: tracks total file count per collection
   - `coll2DbName`: maps collection IDs to database names

2. After aggregation is complete, use `Set()` (instead of `Add()`) to
update metrics in a single operation per label combination

This ensures that concurrent `GetMetrics` calls don't interfere with
each other, as each invocation works with its own local state and only
updates the final metric value atomically.

---------

---------

Signed-off-by: Congqi Xia <congqi.xia@zilliz.com>
2025-10-14 16:48:05 +08:00