laskoviymishka opened a new pull request, #928:
URL: https://github.com/apache/iceberg-go/pull/928
Adds the foundational types, errors, and validator functions that a producer
uses to detect conflicting concurrent commits before re-issuing its updates.
No producer is wired to use these yet, that step lands with next slice; this
change is library plumbing only and has no behavior impact on existing paths.
- IsolationLevel type with SERIALIZABLE and SNAPSHOT constants, plus
write.delete.isolation-level / write.update.isolation-level property keys
(matching Java's TableProperties names).
- Four conflict sentinels that wrap table.ErrCommitFailed so the existing
retry loop in doCommit continues to treat them as retryable conflicts.
- ConflictContext walks AncestorsBetween (from the snapshot ancestry
utility) to enumerate concurrent snapshots on the committer's branch and
returns ErrCommitDiverged if the base snapshot is no longer on the branch.
- Four validators matching Java's BaseRowDelta / BaseOverwriteFiles /
BaseRewriteFiles:
* ValidateDataFilesExist — pos-delete referenced files still reachable
from current head.
* ValidateAddedDataFilesMatchingFilter — no concurrent data-file add
in the committer's filter region (manifest-level partition-summary pruning via
the existing evaluators). * ValidateNoConflictingDataFiles —
isolation-level-gated variant of the above for RowDelta eq-delete commits. *
ValidateNoNewDeletesForRewrittenFiles — no concurrent position deletes
targeting files a rewrite is replacing.
- Per-spec filter projection cache so a walk across snapshots written
under different partition spec ids reuses its projection work.
Tests cover the framework's logic (isolation-level parsing, error wrapping,
ConflictContext edge cases, validator short-circuit paths).
End-to-end conflict detection under real concurrent-snapshot conditions
lives with the producer-wiring follow up PR.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]