THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
New Consumer Group
- subscribe() invoked on the client thread. A subscription event was sent to the background thread
- Background The background thread drains the queue , and updates the GroupState to PREPARE.
- HeartbeatRequestManager .
- The background thread poll the RequestManager, HeartbeatRequestManager sends a heartbeat
- (maybe after a few loops)
- is polled. It checks the GroupState and determine it is time to send the heartbeat
- ConsumerGroupHeartbeatResponse received. Updated the PartitionAssignmentManagerGroupState to ASSIGN.
- PartitionAssignmentManager is poll, assignment updatedpolled, and realize the GroupState is in ASSIGN. Trigger assignment computation:
- Serverside assignment: no API will be invoke and assignment will be made
- Client side assignment:
- ConsumerGroupPrepareAssignment API will be invoked
- Leader receives the response and invoke ConsumerGroupInstallAssignment API after computing the assignment
- Old protocol: [ommitted here]
- JoinGroup ...
- SyncGroup ...
- Once the assignment is computed, send an event to the client thread to invoke the rebalance callback.
- Callback triggered; notify the background thread.
- PartitionAssignmentManager is polled and receives the acknowledgment from the client thread. Transition to Complete.
- [something needs to happen here]
- Transition the GroupState to Stable.
GroupState
[UNJOINED, PREPARE, ASSIGN, COMPLETE, STABLE]
...