Skip to content

CAS: drop KeyStrictness, readers skip unknown ordinary keys - #2455

Open
filimonov wants to merge 1 commit into
antalya-26.6from
fix/antalya-26.6/cas-drop-key-strictness-pr
Open

filimonov wants to merge 1 commit into
antalya-26.6from
fix/antalya-26.6/cas-drop-key-strictness-pr

Conversation

@filimonov

Copy link
Copy Markdown
Member

Remove the KeyStrictness switch: every CAS on-store reader skips an unknown ordinary key, and an unknown !-prefixed key fails with UNKNOWN_FORMAT_VERSION.

Strict readers are a leftover of the codec rewrites. Since every object is JSON with the ! rule for decision-changing fields, strictness has no job left, and it made any optional field on cas_run, fold seal, cas_ref_ckpt, cas_ref_catalog or cas_gc_maintenance_state a compatibility-version bump. The switch was also declared twice (traits table and each reader call) and the two disagreed for cas_gc_maintenance_state.

Changes

  • Enum, traits column and JsonObjectReader parameter removed; seven sites that rejected unknown keys with their own throw go through skipUnknown.
  • Per object: a test that an unknown ordinary key is skipped and one that an unknown ! key fails.
  • storage-layout.md and Formats/README.md state the rule once.

Risks / notes

  • Reader-only: nothing is written differently, no format version changes.
  • Readers of earlier releases stay strict for these five objects until every node runs this build.

Changelog category (leave one):

  • Improvement

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

CAS on-store readers skip unknown optional fields in every object type, so later releases can add fields to cas_run, fold seal, cas_ref_ckpt, cas_ref_catalog and cas_gc_maintenance_state objects without a format version bump.

Documentation entry for user-facing changes

  • Documentation is written (mandatory for new features)

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)

🤖 Generated with Claude Code

Strict readers are a leftover of the codec rewrites. Every object is
JSON with the `!` rule for decision-changing fields, so strictness has
no job left, and it made any optional field on `cas_run`, fold seal,
`cas_ref_ckpt`, `cas_ref_catalog` or `cas_gc_maintenance_state` a
compatibility-version bump.

Remove the enum, the traits column and the reader parameter; the seven
sites that rejected unknown keys with their own throw go through
`skipUnknown`. Per object, a test that an unknown ordinary key is
skipped and one that an unknown `!` key fails. Reader-only change.

Signed-off-by: Mikhail Filimonov <mfilimonov@altinity.com>
@github-actions

Copy link
Copy Markdown

Workflow [PR], commit [a61b9a1]

@filimonov filimonov added the CAS label Sep 30, 2026
@filimonov filimonov mentioned this pull request Oct 1, 2026
68 tasks
@filimonov
filimonov requested a review from k-morozov October 1, 2026 14:10

@k-morozov k-morozov left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

After this PR, we should discuss whether we need ! at all, or whether a format version bump would be a better choice.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants