This is an automated email from the ASF dual-hosted git repository.
github-actions[bot] pushed a commit to branch gh-pages
in repository https://gitbox.apache.org/repos/asf/iceberg-go.git
The following commit(s) were added to refs/heads/gh-pages by this push:
new f2fc040ce deploy: cc260be95386c91ab55b7cfc322265034d168bea
f2fc040ce is described below
commit f2fc040ce4c89b2015d5f53fc76fb06bcb647260
Author: zeroshade <[email protected]>
AuthorDate: Mon Oct 26 17:18:35 2026 +0000
deploy: cc260be95386c91ab55b7cfc322265034d168bea
---
concurrent-writes.html | 12 ++++++++----
print.html | 15 +++++++++++----
releases.html | 3 +++
searchindex.js | 2 +-
searchindex.json | 2 +-
5 files changed, 24 insertions(+), 10 deletions(-)
diff --git a/concurrent-writes.html b/concurrent-writes.html
index 4be21e7e5..1252a5dd3 100644
--- a/concurrent-writes.html
+++ b/concurrent-writes.html
@@ -278,7 +278,11 @@ rejects when concurrent deletes touch the same files.</p>
<p>iceberg-go can refresh the table and replay the operation against the latest
snapshot between attempts. On each retry the table metadata is reloaded, the
producer's validators re-run against the fresh snapshot, and the commit is
-re-submitted only if it is still valid.</p>
+re-submitted only if it is still valid. <code>RollbackToSnapshot</code>,
<code>ExpireSnapshots</code>
+and <code>AssertRefSnapshotID</code> pin the refs they guard, so a retry does
not rebase
+those assertions. If a guarded ref has moved, the commit fails with
+<code>ErrCommitFailed</code> instead of retrying. An
<code>ExpireSnapshots</code> that removes nothing
+adds no guards.</p>
<p>Retry is <strong>off by default</strong>
(<code>commit.retry.num-retries</code> is <code>0</code>). Opt in by
setting the retry properties — see <a
href="./configuration.html#manifest-and-commit">Manifest and commit</a>
in the configuration reference for the full list:</p>
@@ -290,9 +294,9 @@ _, err := cat.CreateTable(ctx, ident, schema,
)
</code></pre>
<blockquote>
-<p><strong>Catalog support:</strong> retry currently engages on the REST
catalog, which wraps
-commit conflicts as <code>ErrCommitFailed</code>. The Glue, SQL, and Hive
catalogs do
-not yet wrap their conflict errors, so the retry loop will not fire on
them.</p>
+<p><strong>Catalog support:</strong> the REST, SQL, Glue, Hive, and Hadoop
catalogs report
+commit conflicts, including requirements that fail because of a concurrent
+change, as <code>ErrCommitFailed</code>, so the retry loop engages on all of
them.</p>
</blockquote>
</main>
diff --git a/print.html b/print.html
index 4e95ad382..a32bc0fa6 100644
--- a/print.html
+++ b/print.html
@@ -2010,7 +2010,11 @@ rejects when concurrent deletes touch the same files.</p>
<p>iceberg-go can refresh the table and replay the operation against the latest
snapshot between attempts. On each retry the table metadata is reloaded, the
producer's validators re-run against the fresh snapshot, and the commit is
-re-submitted only if it is still valid.</p>
+re-submitted only if it is still valid. <code>RollbackToSnapshot</code>,
<code>ExpireSnapshots</code>
+and <code>AssertRefSnapshotID</code> pin the refs they guard, so a retry does
not rebase
+those assertions. If a guarded ref has moved, the commit fails with
+<code>ErrCommitFailed</code> instead of retrying. An
<code>ExpireSnapshots</code> that removes nothing
+adds no guards.</p>
<p>Retry is <strong>off by default</strong>
(<code>commit.retry.num-retries</code> is <code>0</code>). Opt in by
setting the retry properties — see <a
href="./configuration.html#manifest-and-commit">Manifest and commit</a>
in the configuration reference for the full list:</p>
@@ -2022,9 +2026,9 @@ _, err := cat.CreateTable(ctx, ident, schema,
)
</code></pre>
<blockquote>
-<p><strong>Catalog support:</strong> retry currently engages on the REST
catalog, which wraps
-commit conflicts as <code>ErrCommitFailed</code>. The Glue, SQL, and Hive
catalogs do
-not yet wrap their conflict errors, so the retry loop will not fire on
them.</p>
+<p><strong>Catalog support:</strong> the REST, SQL, Glue, Hive, and Hadoop
catalogs report
+commit conflicts, including requirements that fail because of a concurrent
+change, as <code>ErrCommitFailed</code>, so the retry loop engages on all of
them.</p>
</blockquote>
<div style="break-before: page; page-break-before: always;"></div><!--
~ Licensed to the Apache Software Foundation (ASF) under one
@@ -2595,6 +2599,9 @@ make integration-external-rest
<h3 id="unreleased-compatibility-notes"><a class="header"
href="#unreleased-compatibility-notes">Unreleased compatibility notes</a></h3>
<ul>
<li>
+<p><strong>Filesystem adapter construction consolidated.</strong> Replace
<code>io.FSPreProcName(fsys, fn)</code> with <code>io.FS(fsys,
io.WithNamePreprocessor(fn))</code>. Plain <code>io.FS(fsys)</code> remains
supported.</p>
+</li>
+<li>
<p><strong>Table purge is required on catalogs.</strong> The
<code>catalog.Catalog</code> interface now embeds
<code>catalog.PurgeableCatalog</code>; every custom catalog implementation must
provide <code>PurgeTable(ctx, identifier) error</code>. The narrow
<code>catalog.PurgeableTable</code> interface is renamed to
<code>catalog.PurgeableCatalog</code>. Built-in purge behavior is unchanged.</p>
</li>
<li>
diff --git a/releases.html b/releases.html
index a3514579a..cd0c6dc22 100644
--- a/releases.html
+++ b/releases.html
@@ -249,6 +249,9 @@
<h3 id="unreleased-compatibility-notes"><a class="header"
href="#unreleased-compatibility-notes">Unreleased compatibility notes</a></h3>
<ul>
<li>
+<p><strong>Filesystem adapter construction consolidated.</strong> Replace
<code>io.FSPreProcName(fsys, fn)</code> with <code>io.FS(fsys,
io.WithNamePreprocessor(fn))</code>. Plain <code>io.FS(fsys)</code> remains
supported.</p>
+</li>
+<li>
<p><strong>Table purge is required on catalogs.</strong> The
<code>catalog.Catalog</code> interface now embeds
<code>catalog.PurgeableCatalog</code>; every custom catalog implementation must
provide <code>PurgeTable(ctx, identifier) error</code>. The narrow
<code>catalog.PurgeableTable</code> interface is renamed to
<code>catalog.PurgeableCatalog</code>. Built-in purge behavior is unchanged.</p>
</li>
<li>
diff --git a/searchindex.js b/searchindex.js
index 64cc6fcfb..8598ea6ed 100644
--- a/searchindex.js
+++ b/searchindex.js
@@ -1 +1 @@
-Object.assign(window.search,
{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#
[...]
\ No newline at end of file
+Object.assign(window.search,
{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#
[...]
\ No newline at end of file
diff --git a/searchindex.json b/searchindex.json
index 4e087e70f..9e270642d 100644
--- a/searchindex.json
+++ b/searchindex.json
@@ -1 +1 @@
-{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#4-write-some-arrow-data","get
[...]
\ No newline at end of file
+{"doc_urls":["introduction.html#iceberg-go","introduction.html#where-to-start","introduction.html#what-works-today","introduction.html#beyond-go","introduction.html#help-and-contribution","install.html#install","install.html#requirements","install.html#installation","getting-started.html#getting-started","getting-started.html#1-install","getting-started.html#2-open-a-local-catalog","getting-started.html#3-create-a-namespace-and-a-table","getting-started.html#4-write-some-arrow-data","get
[...]
\ No newline at end of file