Skip to content

[core] Do not classify index-manifest read failures as conflicts - #10215

Closed
LuciferYang wants to merge 1 commit into
apache:masterfrom
LuciferYang:m/core-033-conflict-error-swallow
Closed

LuciferYang wants to merge 1 commit into
apache:masterfrom
LuciferYang:m/core-033-conflict-error-swallow

Conversation

@LuciferYang

Copy link
Copy Markdown
Contributor

Purpose

The deletion-vector conflict check in ConflictDetection.checkConflicts wrapped the index-manifest read inside the catch-all around the DV enrichment builders. An IO or filesystem failure while reading the index manifest was therefore reported as "File deletion conflicts detected! Give up committing.", hiding the real cause and pushing the committer toward a needless rollback of a valid snapshot.

This reads the index manifest with the IOException-throwing variant outside the conflict catch and rethrows IO failures wrapped with the manifest name and snapshot id. Only the genuine invariant failures of the DV builders stay classified as conflicts.

Tests

Added ConflictDetectionTest.testIndexManifestReadFailureIsNotClassifiedAsConflict: it forces the index-manifest read to fail with an IOException and asserts checkConflicts surfaces a RuntimeException naming the manifest read failure with the IOException as its root cause, instead of returning a conflict result.

API and Format

No.

Documentation

No.

The deletion-vector conflict check wrapped the index-manifest read into
its catch-all around the DV-enrichment builders, so an IO or filesystem
failure while reading the index manifest surfaced as "File deletion
conflicts detected! Give up committing." — mislabeling the root cause
and pushing the committer toward a pointless rollback of a valid
snapshot.

Read the manifest with the IOException-throwing variant outside the
conflict catch and let IO failures propagate wrapped with the manifest
name and snapshot id; only the pure invariant failures of the DV
builders remain classified as conflicts.

Assisted-by: GLM-5.3
@LuciferYang
LuciferYang marked this pull request as draft October 2, 2026 03:18
@LuciferYang LuciferYang closed this Oct 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant