Jason Gustafson created KAFKA-12363:
---------------------------------------

             Summary: Simplify static group memberId update logic
                 Key: KAFKA-12363
                 URL: https://issues.apache.org/jira/browse/KAFKA-12363
             Project: Kafka
          Issue Type: Improvement
            Reporter: Jason Gustafson


In KAFKA-10284, we amended the JoinGroup logic to ensure that the memberId of 
static members always gets persisted. The way this works is the following:

1. When the JoinGroup is received, we immediately replace the current memberId 
with the updated memberId.
2. We then send an append to the log to update group metadata
3. If the append is unsuccessful, we revert to the old memberId and we return 
UNKNOWN_MEMBER_ID in the response for the new member.
4. If the append is successful, we return the new memberId in the JoinGroup 
response.

I am not sure if there are any correctness problems with this logic, but it 
does seem strange. For example, we can end up fencing the old memberId after 
step 1 even if we end up reverting in step 3. I think it would be simpler to 
structure this as follows:

1. When the JoinGroup is received, send an append to the log to update group 
metadata
2. If the append succeeds, replace the existing memberId with the new committed 
memberId.
3. If the append fails, return UNKNOWN_MEMBER_ID to let the new member retry.

Basically we don't surface the effect of the member replacement until we know 
it has been committed to the log, which avoids the weird revert logic.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to