cockroachdb / cockroachdb/cockroach

logical,txn: add schema_conflict_policy to LDR

Open
#173,602 2 comments 0 reactions 0 assignees View on GitHub
A-cdc A-logical-data-replication C-enhancement T-cdc
Dominant language
Go
Stars
32.5k
Forks
4.1k
PR merge metrics
PR metrics pending

Description

Add a per-job `schema_conflict_policy` and carry it through the transactional LDR planning and source-stream paths. Initially, `pause` is the only supported policy.

The source and destination must agree on the requested policy, and mixed-version clusters that cannot preserve or honor it should fail safely.

Keep `schemaChangeAllowed` hardcoded to `false`; this ticket does not enable nullable-column skew or change the DDL allowlist.

**Out of scope:** Allowing schema changes, detecting schema boundaries, and implementing schema-conflict DLQ.

**Done when:** The policy is stored and available everywhere schema-change handling will need it, unsupported values are rejected, and a node or source cluster that does not understand the policy cannot silently ignore it.

**Notes / risk:** The policy should remain per job so adding or removing one LDR stream does not leave a table in the wrong aggregate state.

Jira issue: CRDB-66913

Epic CRDB-66920

Contributor guide

Open the contributing guide

Research direction

Start in the logical and txn LDR planning and source-stream paths, tracing how per-job settings move between source and destination. Verify the existing schemaChangeAllowed=false behavior and identify validation and mixed-version compatibility checks. Done means pause is accepted and preserved per job, unsupported policies are rejected, and unaware nodes or source clusters fail safely without enabling schema changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
databases, distributed-systems
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.