Uploaded image for project: 'Kafka'
  1. Kafka
  2. KAFKA-12487

Sink connectors do not work with the cooperative consumer rebalance protocol

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Blocker
    • Resolution: Fixed
    • 2.4.2, 2.5.2, 2.8.0, 2.7.1, 2.6.2, 3.0.0
    • 3.1.0, 3.0.1
    • connect
    • None

    Description

      The ConsumerRebalanceListener used by the framework to respond to rebalance events in consumer groups for sink tasks is hard-coded with the assumption that the consumer performs rebalances eagerly. In other words, it assumes that whenever onPartitionsRevoked is called, all partitions have been revoked from that consumer, and whenever onPartitionsAssigned is called, the partitions passed in to that method comprise the complete set of topic partitions assigned to that consumer.

      See the WorkerSinkTask.HandleRebalance class for the specifics.

       

      One issue this can cause is silently ignoring to-be-committed offsets provided by sink tasks, since the framework ignores offsets provided by tasks in their preCommit method if it does not believe that the consumer for that task is currently assigned the topic partition for that offset. See these lines in the WorkerSinkTask::commitOffsets method for reference.

       

      This may not be the only issue caused by configuring a sink connector's consumer to use cooperative rebalancing. Rigorous unit and integration testing should be added before claiming that the Connect framework supports the use of cooperative consumers with sink connectors.

      Attachments

        Issue Links

          Activity

            People

              ChrisEgerton Chris Egerton
              ChrisEgerton Chris Egerton
              Votes:
              0 Vote for this issue
              Watchers:
              7 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: