CDC Guarantees
Install
See the Install guide for the full setup, including Windows PowerShell.
curl -fsSL https://install.skippr.io/install.sh | shClick to copyInstalling Skippr means accepting the Skippr EULA.
This page describes Skippr's CDC contract. Use it together with CDC Overview, CDC Sources, and CDC Destinations.
Two CDC outcomes
| Contract | What you get | When it applies |
|---|---|---|
| Exactly-once final state | Replays, retries, and restarts converge on the correct final row state in the destination | Source and destination both support final-state reconciliation |
| CDC-encoded | Mutation events land with CDC metadata so downstream consumers can reconcile them | Destination can land CDC faithfully but cannot maintain final-state reconciliation itself |
Core terms
| Term | Meaning |
|---|---|
| Business key | The columns that uniquely identify a logical row for reconciliation. It is resolved per namespace/table from cdc.default plus overrides. |
| Event identity | The token that says two source events are the same event |
| Order token | The token used to decide which mutation is newer |
| Tombstone | A delete record stored alongside the table so older inserts cannot resurrect deleted rows |
What exactly-once final state means
- A committed change batch can be replayed safely.
- An older mutation cannot overwrite a newer row because order tokens are compared during apply.
- A replayed or out-of-order insert cannot resurrect a deleted row if the tombstone is newer.
- Restart resumes from committed ownership of source events, not from an advisory hint alone.
- A resolved business key contract is required because reconciliation is defined per logical row, not per file or batch.
Defaults and table overrides
Skippr can discover namespaces/tables while a pipeline runs. cdc.default supplies the business key contract for newly discovered tables, and cdc.namespaces.<name> overrides that default when one table has different keys or null-key policy.
This means you do not need to know every table ahead of time, but every table that reaches an exactly-once final-state sink must resolve to a concrete business key contract before its CDC batch is applied.
Where the guarantee stops
- It does not mean the pipeline never retries internally.
- It does not mean every destination supports final-state reconciliation.
- It does not choose business keys for you.
- It does not guarantee correctness if source retention expires before the runner resumes.
Ordering model
For final-state reconciliation to work, the source must provide order tokens that are meaningfully comparable:
- globally across the source, or
- consistently within each business key
If a destination cannot use that ordering model, Skippr uses CDC-encoded instead of the final-state contract.
Where to go next
Install
See the Install guide for the full setup, including Windows PowerShell.
curl -fsSL https://install.skippr.io/install.sh | shClick to copyInstalling Skippr means accepting the Skippr EULA.
