Defers non-transactional statistics-derived split-and-scatter side effects from pre-commit execution to post-commit background backfill jobs, preventing stale split keys from persisting across aborted schema-change transactions.
Role
Category
Distributed SQL & KV Storage
Engineering discipline
SYSTEMS HARDENING

Patrick Ribbsaeter · Independent open-source contribution
Engineering objective
A declarative schema-change transaction created statistics-derived range splits before commit. When the transaction aborted, splits survived in KV. Subsequent descriptor reuse of the same index ID under a new schema caused surviving split keys to split inside column families or rows.
Constraints
Approach
Traced declarative schema changer lifecycle across pre-commit and post-commit backfill stages
Deferred statistics-derived split-and-scatter execution to runBackfill in exec_backfill.go
Removed pre-commit split emission in schemachanger opgen
Added unit test TestIndexSplitAndScatterAbortedTransactionNoSurvivingSplits verifying zero surviving splits on abort
Technical validation
Observable engineering evidence. Discipline: SYSTEMS HARDENING
Public PR
PR #173411
Issue Isolated
#173241
Internal Tracker
CRDB-66557
Files Changed
4 files
Test Suite
100% Passed
Public evidence
Outcome
Decoupled non-transactional AdminSplitRequest side-effects from uncommitted transactions
Prevented stale split keys from persisting across transaction aborts
All CockroachDB static analysis, blathers release-justification, and CLA checks green
Technologies
Next engineering system
PRODUCT ENGINEERING · LOCAL SERVICES
Have an ambitious AI system to build?
I work across AI architecture, product engineering, private inference, automation, SaaS infrastructure, and production hardening.