dajac commented on code in PR #13901:
URL: https://github.com/apache/kafka/pull/13901#discussion_r1245212300


##########
group-coordinator/src/main/java/org/apache/kafka/coordinator/group/consumer/ConsumerGroup.java:
##########
@@ -119,6 +131,18 @@ public String toString() {
      */
     private final TimelineHashMap<Uuid, TimelineHashMap<Integer, Integer>> 
currentPartitionEpoch;
 
+    /**
+     * The next metadata refresh time. It consists of a timestamp in 
milliseconds together with
+     * the group epoch at the time of setting it. The metadata refresh time is 
considered as a
+     * soft state (read that it is not stored in a timeline data structure). 
It is like this
+     * because it is not persisted to the log. The group epoch is here to 
ensure that the
+     * next metadata refresh time is invalidated if the group epoch does not 
correspond to
+     * the current group epoch. This can happen if the next metadata refresh 
time is updated
+     * after having refreshed the metadata but the write operation failed. In 
this case, the
+     * time is not automatically rollback.

Review Comment:
   It is actually the other way around. The refresh time is updated immediately 
but it is not rolled back if the write failed. This is the reason why I have 
included the group epoch.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: jira-unsubscr...@kafka.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to