...
Current state: Under discussion
Discussion thread: here (formerly here)
JIRA:
Jira | ||||||
---|---|---|---|---|---|---|
|
Jira | ||||||
---|---|---|---|---|---|---|
|
...
A single worker-level configuration property will be added for distributed mode:
Name | Type | Default | Importance | Doc |
|
|
|
| Whether to enable exactly-once support for source connectors in the cluster by writing source records and their offsets in a Kafka transaction, and by proactively fencing out old task generations before bringing up new ones. Note that this must be enabled on every worker in a cluster in order for exactly-once delivery to be guaranteed. |
And a single per-connector configuration property will be added:
Name | Type | Default | Importance | Doc |
|
|
|
| The name of a separate offsets topic to use for this connector. If empty or not specified, the worker’s global offsets topic name will be used. |
Proposed Changes
Atomic offset writes
...
Before enabling exactly-once source support on a worker, its producer principal must be given the following permissions on the Kafka cluster it writes to:
Operation | Resource Type | Resource Name |
|
| The |
|
| Kafka cluster targeted by the Connect cluster |
Connector principal permissions
...
Each source connector’s producer principal must be given the following permissions on the Kafka cluster it writes to:
Operation | Resource Type | Resource Name |
|
|
|
|
|
|
|
| Kafka cluster targeted by the Connect cluster |
|
| Offsets topic used by the connector, which is either the value of the |
Consumer
Each source connector’s consumer principal must be given the following permissions on the Kafka cluster it reads offsets from:
Operation | Resource Type | Resource Name |
|
| Offsets topic used by the connector, which is either the value of the |
Admin
If the offsets topic for a connector does not exist yet, the connector’s admin principal must be given the following permissions on the Kafka cluster it reads offsets from:
Operation | Resource Type | Resource Name |
|
| Offsets topic used by the connector, which is the value of the |
Rolling upgrade
Rolling upgrades that enable exactly-once support on a cluster will be possible. Users can stop each worker, upgrade to a later version if necessary, set exactly.once.source.enabled
to true
in the config, then restart, one by one.
...