apache / apache/iceberg-go

discussion: align CommitNumRetriesDefault with Java/PyIceberg (0 → 4)?

Open
#1,015 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
463
Forks
232
Avg merge
2d 11h
Merged PRs (30d)
121

Description

Parent: #830

Open question, not a blocker. iceberg-go's `CommitNumRetriesDefault` was set to `0` in PR #912 because the retry loop without refresh-and-replay was harmful (re-issued the same stale conflict). PR #945 added refresh-and-replay, so the original reason for the `0` default is gone — but the constant has not been flipped.

Java and PyIceberg both default to `4` retries. A user porting from either of those clients sees fail-fast on the first conflict today and has to dig into properties to figure out why. The fix is a one-line constant change plus a sweep of tests that assume the no-retry path.

Reasons to flip:
- Java parity / out-of-box experience.
- The retry mechanism is fully wired and exercised in CI.
- Existing users who *want* fail-fast can set `commit.retry.num-retries=0` explicitly.

Reasons to hold off:
- Existing users (since #912 in April) have been running with default `0`. Flipping silently changes their commit-latency profile under contention — a 4-attempt exponential-backoff loop can add seconds before a terminal error surfaces.
- Some retry tests calibrated for `0` would need adjustment.

Filing as a question, not a feature, because the answer is a defaults-tuning judgment call rather than a missing capability. Looking for input from maintainers on whether the parity argument outweighs the silent-behavior-change concern, and ideally a release note if we do flip.

Contributor guide

Open the contributing guide

Research direction

Start by reviewing PR #945 and the retry tests that assume CommitNumRetriesDefault is 0. The issue is done only after maintainers decide whether to change the default; if it changes, update the constant, adjust affected tests, and add the requested release note.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
distributed-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.