...
Connectors like this will be said to be "implicitly configured" to use a separate offsets topic.
The name of this topic will be the same as the name of the global offsets topic, which is controlled by the offsets.storage.topic
property in the worker config.
Creation
If a connector is explicitly or implicitly configured to use a separate offsets topic but that topic does not exist yet, task and connector instances will automatically try to create the topic before startup.
...
- Bumps up the epoch of the PID, so that the any previous zombie instance of the producer is fenced off and cannot move forward with its transaction.
- Recovers (rolls forward or rolls back) any transaction left incomplete by the previous instance of the producer.
ACLs
The ACLs required for this new API will be the same as the ones required to use a transactional producer for each of the specified transactional IDs. Specifically, this amounts to grants for the Write
and Describe
operations on the TransactionalId
resource, and a grant for the IdempotentWrite
operation on the Cluster
resource.
Limitations
- Distributed mode is required; standalone mode will not be supported (yet) for exactly-once source connectors
- Exactly-once source support can only be enabled for all source connectors or none; it cannot be toggled on a per-connector basis
- In order to be viable for exactly-once delivery, connectors must assign source partitions to at most one task at a time (otherwise duplicate writes may occur)
- In order to be viable for exactly-once delivery, connectors must use the Connect source offset API for tracking progress (otherwise duplicate writes or dropped records may occur)
...