You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
aws_dynamodb_cdc: add checkpoint_namespace for checkpoint table sharing (#4602)
Add an optional checkpoint_namespace field to the aws_dynamodb_cdc input
so multiple independent pipelines can share a single checkpoint table
without overwriting each other's checkpoints. When set, the namespace is
prefixed to the checkpoint hash key value (StreamArn in default mode,
TableId in global_table mode); shard checkpoints, snapshot progress rows,
and the global-mode resume query are all scoped by it. The default (empty)
leaves checkpoint keys byte-identical to previous behavior, so existing
deployments and checkpoint tables are unaffected. Namespaces containing
'#' are rejected at config validation time.
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,6 +24,10 @@ All notable changes to this project will be documented in this file.
24
24
25
25
## Unreleased
26
26
27
+
### Added
28
+
29
+
- aws_dynamodb_cdc: DynamoDB CDC now supports an optional checkpoint_namespace field, allowing multiple independent pipelines to share a single checkpoint table without overwriting each other's checkpoints. ([@squiidz](https://github.com/squiidz), [#4602](https://github.com/redpanda-data/connect/pull/4602))
30
+
27
31
### Fixed
28
32
29
33
- general: The CGO-enabled distribution binary now embeds the IANA time zone database via the `timetzdata` build tag, matching the other distributions, so `time.LoadLocation` works in minimal runtimes without system tzdata instead of silently falling back to UTC (which shifts JQL date predicates in the `jira` input). ([@squiidz](https://github.com/squiidz), [#4583](https://github.com/redpanda-data/connect/pull/4583))
Copy file name to clipboardExpand all lines: docs/modules/components/pages/inputs/aws_dynamodb_cdc.adoc
+13Lines changed: 13 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -41,6 +41,7 @@ input:
41
41
aws_dynamodb_cdc:
42
42
tables: []
43
43
checkpoint_table: redpanda_dynamodb_checkpoints
44
+
checkpoint_namespace: ""
44
45
start_from: trim_horizon
45
46
snapshot_mode: none
46
47
```
@@ -60,6 +61,7 @@ input:
60
61
table_tag_filter: ""
61
62
table_discovery_interval: 5m
62
63
checkpoint_table: redpanda_dynamodb_checkpoints
64
+
checkpoint_namespace: ""
63
65
global_table: false
64
66
global_table_replicas: []
65
67
batch_size: 1000
@@ -141,6 +143,8 @@ NOTE: Snapshots use eventually consistent reads and do not provide point-in-time
141
143
142
144
Checkpoints are stored in a separate DynamoDB table (configured via `checkpoint_table`). This table is created automatically if it does not exist. On restart, the input resumes from the last checkpointed position for each shard. Snapshot progress is also checkpointed, allowing resumption mid-snapshot after failures.
143
145
146
+
Multiple independent pipelines can share a single checkpoint table by giving each one a distinct `checkpoint_namespace` (for example one namespace per developer or environment). Namespaces isolate checkpoints from each other: a pipeline only sees checkpoints written under its own namespace, so changing (or removing) the namespace causes the pipeline to restart from `start_from`. Note that namespaces do not coordinate consumers — two pipelines sharing the *same* namespace will still overwrite each other's checkpoints.
147
+
144
148
### Alternative
145
149
146
150
For better performance and longer retention (up to 1 year vs 24 hours), consider using Kinesis Data Streams for DynamoDB with the `aws_kinesis` input instead.
@@ -331,6 +335,15 @@ DynamoDB table name for storing checkpoints. Will be created if it doesn't exist
331
335
332
336
*Default*: `"redpanda_dynamodb_checkpoints"`
333
337
338
+
=== `checkpoint_namespace`
339
+
340
+
An optional namespace for checkpoints, allowing multiple independent pipelines (for example one per developer or environment) to share a single checkpoint table without overwriting each other's positions. Checkpoints written under one namespace are invisible to pipelines using a different namespace (or none), so changing this value causes the pipeline to restart from `start_from`. Must not contain `#`.
341
+
342
+
343
+
*Type*: `string`
344
+
345
+
*Default*: `""`
346
+
334
347
=== `global_table`
335
348
336
349
Provision the checkpoint table as a DynamoDB Global Table (v2) so checkpoints replicate across regions. Requires `global_table_replicas`. When the table is auto-created it is created as a global table; when it already exists, its replicas are reconciled (missing regions are added via `UpdateTable`). The existing table must have been created in global mode (`TableId` hash key) — enabling this against a pre-existing non-global checkpoint table fails fast with a clear error.
0 commit comments