fix: self-heal compaction segment positions and add L0 force-select bypass#48907
Conversation
|
[ci-v2-notice] To rerun ci-v2 checks, comment with:
If you have any questions or requests, please contact @zhikunyao. |
…lect bypass Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
…lect bypass Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
…lect bypass Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Please upload reports for the commit ff981c0 to get more accurate results. Additional details and impacted files@@ Coverage Diff @@
## master #48907 +/- ##
=======================================
Coverage 78.18% 78.18%
=======================================
Files 2174 2174
Lines 361086 361086
=======================================
Hits 282324 282324
Misses 70089 70089
Partials 8673 8673
🚀 New features to boost your workflow:
|
|
/ci-rerun-e2e-default |
|
/ci-rerun-gosdk |
6f2d754 to
933b321
Compare
|
/ci-rerun-ut-go |
1 similar comment
|
/ci-rerun-ut-go |
…ypass Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
85a2d21 to
6d2a5a9
Compare
|
/ci-rerun-e2e-defaul |
|
/ci-rerun-e2e-default |
…lect bypass Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
…lect bypass Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
|
This PR introduced a force mode on selecting L0 in compactions. While it fixes the leftover L0 issue, regression of performance is expected. Per offline discussion, the leftover L0 should be no use and we should remove them in the future PRs. This PR should be considered a temporary workaround. |
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: tedxu, XuanYang-cn The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
…lect bypass (#48910) Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR #47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: #46435 pr: #48907 --------- Signed-off-by: yangxuan <xuan.yang@zilliz.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…lect bypass (#48909) Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR #47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: #46435 pr: #48907 --------- Signed-off-by: yangxuan <xuan.yang@zilliz.com>
…lect bypass (milvus-io#48910) Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435 pr: milvus-io#48907 --------- Signed-off-by: yangxuan <xuan.yang@zilliz.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: yangxuan <xuan.yang@zilliz.com> fix: Fast finish compaction when L0Comp hit zero L1/L2 (milvus-io#47154) (milvus-io#47187) See also: milvus-io#46435, milvus-io#48907 pr: milvus-io#47154 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
…ect bypass (milvus-io#48910) fix: Fast finish compaction when L0Comp hit zero L1/L2 (milvus-io#47154) (milvus-io#47187) Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435, milvus-io#48907 pr: milvus-io#47154 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
…ect bypass (milvus-io#48910) - fix: Fast finish compaction when L0Comp hit zero L1/L2 (milvus-io#47154) (milvus-io#47187) Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435, milvus-io#48907 pr: milvus-io#47154 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
…ect bypass (milvus-io#48910) fix: Fast finish compaction when L0Comp hit zero L1/L2 (milvus-io#47154) (milvus-io#47187) Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR milvus-io#47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss. There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max. See also: milvus-io#46435, milvus-io#48907 pr: milvus-io#47154 pr: milvus-io#48907 Signed-off-by: yangxuan <xuan.yang@zilliz.com>
Compaction inherits StartPosition/DmlPosition from source segments via getMinPosition without recalculating from actual data. The import position bug (PR #47276) wrote wrong timestamps on imported segments, and these wrong positions persist and propagate through compaction. L0 compaction then misses L1/L2 segments due to StartPosition mismatches, causing zombie L0 segments and silent delete loss.
There is also a latent bug: DmlPosition in mix/clustering compaction uses getMinPosition, but DmlPosition represents the latest entity timestamp and should use max.
See also: #46435