Skip to content

Say whether a failed CAS ref-log commit can still take effect - #2577

Open
filimonov wants to merge 6 commits into
antalya-26.6-20261008from
fix/antalya-26.6/cas-commit-outcome-texts
Open

filimonov wants to merge 6 commits into
antalya-26.6-20261008from
fix/antalya-26.6/cas-commit-outcome-texts

Conversation

@filimonov

Copy link
Copy Markdown
Member

CAS ref-log commit errors said "could not be committed; retrying later" even when the transaction was already durable (only the _ckpt frontier publish failed) or its outcome was unknown. The messages now say which of three outcomes applies, so a client can tell whether a retry may duplicate the write.

Texts only: behaviour is unchanged, and so are error codes for DB::Exception; a non-DB exception from the store surfaces as a DB::Exception carrying its message. The original error is kept inside the new message. The original CAS write could not be committed log line from the inner throw may still appear in the server log next to the client's message.

Also, publishCkpt now reports the real give-up reason (policy deadline, lease deadline, unresolved) instead of "persistent CAS contention".

Related: #2343

Changelog category (leave one):

  • Improvement

Changelog entry (a user-readable short description of the changes that goes to CHANGELOG.md):

Content-addressed storage: a failed ref-log commit now says in its message whether the write is durable, of unknown outcome, or not durable, and so whether a client retry can duplicate it. Behaviour is unchanged.

Documentation entry for user-facing changes

  • Documentation is written (mandatory for new features)

docs/en/antalya/cas/operations/troubleshooting.md (#cas-commit-errors) and docs/en/antalya/cas/architecture/part-lifecycle.md (crash rows C6, C10, C11).

CI/CD Options

Exclude tests:

  • Fast test
  • Integration Tests
  • Stateless tests
  • Stateful tests
  • Unit tests
  • Performance tests
  • Aarch64 tests
  • All with ASAN
  • All with TSAN
  • All with MSAN
  • All with UBSAN
  • All with Coverage
  • All Regression
  • Disable CI Cache

Regression jobs to run:

  • Fast suites (mostly <1h)
  • Aggregate Functions (2h)
  • Alter (1.5h)
  • Benchmark (30m)
  • CAS (content-addressed storage; Antalya only)
  • ClickHouse Keeper (1h)
  • Iceberg (2h)
  • LDAP (1h)
  • OAuth (5m)
  • Parquet (1.5h)
  • RBAC (1.5h)
  • SSL Server (1h)
  • S3 (2h)
  • S3 Export (2h)
  • Swarms (30m)
  • Tiered Storage (2h)

filimonov and others added 5 commits October 15, 2026 13:00
publishCkpt labelled every non-fence give-up (policy deadline, lease
deadline, unresolved) as persistent CAS contention. Route them through
orThrow, which names the actual reason. Error code and class unchanged.

Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Ref-log commit errors reported "could not be committed; retrying later"
even when the transaction was already durable (only the `_ckpt` frontier
publish failed) or its outcome was unknown. Name the outcome in the
message: durable, unknown, or not durable. The original cause stays
inside the text. Error codes and behaviour are unchanged.

Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
`orThrow` rendered every `Unresolved` give-up as "sent". A failed initial
observation gives up unresolved before any request is sent.

Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Construct the outcome exception after the lane transition or
`requireRecovery`, since building it can throw. The durable text now
covers all three durable sites (frontier publish, mount fence, install
admission) and embeds the cause without extra info or version.

Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Workflow [PR], commit [c960254]

@filimonov filimonov added the CAS label Oct 15, 2026
Conflict in docs/en/antalya/cas/operations/troubleshooting.md: took the
base's updated throttling row and kept this branch's commit-error row.

Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant