Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

PlantUML Render Macro
border1
formatPNG
exportNamepartition-reconciliation-step-2.png
titlePartition Reconciliation Step 2
@startuml
hide footbox
skinparam maxMessageSize 70

actor User as U
participant ProtoAsyncConsumer as PAC
participant "Revoke\nPartitions\nEvent" as RPE
participant "Partitions\nRevoked\nEvent" as PRE
participant "Consumer\nRebalance\nListener" as CRL
queue "Application\nEvent\nQueue" as AEQ
queue "Backend\nEvent\nQueue" as BEQ

U -> PAC: poll()
activate PAC
PAC -> BEQ: poll()
activate BEQ
return

PAC -> PAC: process background events
...

PAC -> RPE: partitions()
activate RPE
return

PAC -> CRL: partitionsRevoked()
activate CRL
return

create PRE
PAC -> PRE : new
PAC -> AEQ : add()
activate AEQ
return

return
@enduml

...


Rebalance State Machine


PlantUML Render Macro
formatPNG

@startuml
hide empty description

[*] --> NOT_IN_GROUP
NOT_IN_GROUP ---> UNJOINED : Consumer.subscribe()

UNJOINED ---> UNJOINED : Heartbeat on retries
UNJOINED ---> STABLE : Heartbeat, epoch = 0
UNJOINED ---> FATAL

STABLE ---> RECONCILING : new assignment received\ntrigger callbacks
STABLE ---> RECONCILING : Consumer.unsubscribe()
STABLE ---> RELEASING_ASSIGNMENT : on HB fencing error, reset epoch,\ntrigger callbacks
STABLE ---> FATAL
STABLE ---> STABLE : Heartbeat

RECONCILING ---> RECONCILING : Heartbeat
RECONCILING ---> RECONCILIATION_COMPLETE : callback completed
RECONCILIATION_COMPLETE ---> STABLE : Send heartbeat w/ full assignment,\nreset interval timer to\nheartbeat.interval.ms
RECONCILIATION_COMPLETE ---> STABLE : Send heartbeat w/ full assignment,\nreset interval timer to\nheartbeat.interval.ms
RECONCILIATION_COMPLETE ---> UNJOINED : unsubscribe()

RELEASING_ASSIGNMENT ---> RELEASING_ASSIGNMENT_COMPLETE : 'onLost' callback completed
RELEASING_ASSIGNMENT_COMPLETE ---> UNJOINED : Send out-of-interval HB
RELEASING_ASSIGNMENT ---> FATAL

FATAL ---> [*]

@enduml

...