Skip to content

Binding Behavior Updates #1276

@williamhbaker

Description

@williamhbaker

Discussed in #1219

These changes enable bindings for captures, derivations, and materializations to work in a consistent way with respect to "resetting" the state of a binding and re-starting its backfill when a binding is removed from a spec, as well as adding capabilities for a binding to be "reset" without removing it from the spec via a new backfillVersion property. Additionally, they will allow materializations to drop & re-create the respective materialized table (or equivalent) when a materialization binding is reset.

  • New backfillVersion and bindingKey concepts:
    • Add backfillVersion to capture/derivation/materialization spec and bindingKey to protocol
    • Implement automatic pruning of driver & runtime checkpoints for bindingKey's that are removed from task specs
  • Captures: Use bindingKey for keying binding state (depends on spec updates, above)
  • Graceful shutdown of connectors:
  • Materializations drop & re-create tables (depends on graceful shutdown of connectors, above):
    • Update "activate" logic to disable materialization shards before applying changes (when needed), and re-enable them after changes have been applied
    • Make materializations drop tables that were previously being materialized when the target tables have a different bindingKey
  • Add temporary migration shim which populates state_key on behalf of connectors even for captures / materializations built without it.
  • Enforce that backfill counters are always monotonically increasing in the control plane
  • Use "asynchronous", runtime-driven strategy for Apply operations

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions