The GitHub Actions job "Go" on iceberg-go.git/snapshot-refd-check has failed. Run started by GitHub user dhananjaykrutika (triggered by dhananjaykrutika).
Head commit for run: 2f8ef6ec44d8b4e245f8280e24b3098b8d7b5b53 / Krutika Dhananjay <[email protected]> fix: validate snapshot is unreferenced before expiration removal Snapshot expiration maintenance can race with concurrent client commits that reference the same snapshot being expired. Consider: 1. Maintenance identifies snap-1 as expired and eligible for removal 2. Client commits AddSnapshotRef linking snap-1 to "feature-branch" 3. Maintenance loads metadata (now contains feature-branch → snap-1) 4. Maintenance commits RemoveSnapshot for snap-1 The CAS succeeds because maintenance has the latest pointer, but the resulting metadata is corrupt: feature-branch references a deleted snapshot. CAS only guarantees the pointer hasn't changed since we read it - it does not validate that our operation is semantically correct against the current state. By checking isSnapshotReferenced() against the freshly loaded metadata, we detect that snap-1 is now in use and skip its removal. The CAS then guarantees this validated state remains current through the commit. Report URL: https://github.com/apache/iceberg-go/actions/runs/21741558887 With regards, GitHub Actions via GitBox
