...
- Group (epoch=2)
- A
- B
- Target Assignment (epoch=2)
- A - partitions=[foo-0, foo-1]
- B - partitions=[foo-2]
- Member Assignment
- A - epoch=1, partitions=[foo-0, foo-1, foo-2]
- B - epoch=10, partitions=[foo-2]
At this point B can transitions to epoch 1 2 but cannot get foo-2 until A revokes it. Note that the persisted target assignment of B already includes foo-2 here but B does not get it yet.
- Group (epoch=2)
- A
- B
- Target Assignment (epoch=2)
- A - partitions=[foo-0, foo-1]
- B - partitions=[foo-2]
- Member Assignment
- A - epoch=1, partitions=[foo-0, foo-1, foo-2]
- B - epoch=2, partitions=[foo-2]
When A heartbeats, the group coordinator instructs him to revoke foo-2.
...
- Group (epoch=2)
- A
- B
- Target Assignment (epoch=2)
- A - partitions=[foo-0, foo-1]
- B - partitions=[foo-2]
- Member Assignment
- A - epoch=2, partitions=[foo-0, foo-1]
- B - epoch=12, partitions=[foo-2]
When B heartbeats, he can now gets foo-2.
...
When B heartbeats, the group coordinator transitions him to epoch 3 because B has no partitions to revoke. It persists the change and reply.
- Group (epoch=3)
- A
- B
- C
- Target Assignment (epoch=3)
- A - partitions=[foo-0]
- B - partitions=[foo-2]
- C - partitions=[foo-1]
- Member Assignment
- A - epoch=2, partitions=[foo-0, foo-1]
- B - epoch=3, partitions=[foo-2]
- C - epoch=30, partitions=[foo-1]
When C heartbeats, it transitions to epoch 3 but cannot get foo-1 yet.
- Group (epoch=3)
- A
- B
- C
- Target Assignment (epoch=3)
- A - partitions=[foo-0]
- B - partitions=[foo-2]
- C - partitions=[foo-1]
- Member Assignment
- A - epoch=2, partitions=[foo-0, foo-1]
- B - epoch=3, partitions=[foo-2]
- C - epoch=3, partitions=[foo-1]
When A heartbeats, the group coordinator instructs him to revoke foo-1.
When A heartbeats again and acknowledges the revocation, the group coordinator transitions him to epoch 2.When C heartbeats, the group coordinator transitions him to epoch 3, persists the change, and reply.
- Group (epoch=3)
- A
- B
- C
- Target Assignment (epoch=3)
- A - partitions=[foo-0]
- B - partitions=[foo-2]
- C - partitions=[foo-1]
- Member Assignment
- A - epoch=23, partitions=[foo-0]
- B - epoch=3, partitions=[foo-2]
- C - epoch=3, partitions=[foo-1]
...