milvus/pkg/util/merr
yihao.dai 89bd75fab7
fix: apply denylist retry to pack_writer writeLog and binlog import (#48402)
### Summary
Follow-up to #48152 which applied denylist retry to parquet/json/csv
imports but missed two other paths.

- **fix(High)**: `pack_writer.go` `writeLog` now skips retry only for
non-retryable errors (permission denied, bucket not found, invalid
credentials, etc.), matching the denylist strategy in
`retryable_reader.go`.
- **fix(Medium)**: Binlog import's `WithDownloader` callbacks now use
`multiReadWithRetry`, skipping retry only for non-retryable errors.
Previously all transient failures were not retried.
- **fix(Low)**: `IsMilvusError` in `merr/utils.go` switched from
`errors.Cause` (root only) to `errors.As` (full chain traversal).

### Out of Scope
- `pack_writer_v2.go` / `pack_writer_v3.go` — same retry pattern but
different code path (multi-part upload); separate fix.
- `writeDelta` — no retry wrapper; separate concern.

issue: #48153

---------

Signed-off-by: Yihao Dai <yihao.dai@zilliz.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-21 18:25:27 +08:00
..
errors.go enhance: switch import retry from allowlist to denylist strategy (#48152) 2026-03-18 12:03:26 +08:00
errors_test.go enhance: switch import retry from allowlist to denylist strategy (#48152) 2026-03-18 12:03:26 +08:00
utils.go fix: apply denylist retry to pack_writer writeLog and binlog import (#48402) 2026-03-21 18:25:27 +08:00
utils_test.go fix: apply denylist retry to pack_writer writeLog and binlog import (#48402) 2026-03-21 18:25:27 +08:00