jeffkbkim commented on code in PR #14467:
URL: https://github.com/apache/kafka/pull/14467#discussion_r1349382254


##########
group-coordinator/src/main/java/org/apache/kafka/coordinator/group/OffsetMetadataManager.java:
##########
@@ -544,6 +579,100 @@ public OffsetFetchResponseData.OffsetFetchResponseGroup 
fetchAllOffsets(
             .setTopics(topicResponses);
     }
 
+    /**
+     * Remove expired offsets for group.
+     *
+     * @param groupId The group id.
+     * @param records The list of records to populate with offset commit 
tombstone records.
+     *
+     * @return True if no offsets exist or if all offsets expired, false 
otherwise.
+     */
+    public boolean cleanupExpiredOffsets(String groupId, List<Record> records) 
{
+        TimelineHashMap<String, TimelineHashMap<Integer, OffsetAndMetadata>> 
offsetsByTopic = offsetsByGroup.get(groupId);
+        if (offsetsByTopic == null) {
+            return true;
+        }
+
+        // We expect the group to exist.
+        Group group = groupMetadataManager.group(groupId);
+        Set<TopicPartition> expiredPartitions = new HashSet<>();
+        long currentTimestamp = time.milliseconds();
+        Optional<OffsetExpirationCondition> offsetExpirationCondition = 
group.offsetExpirationCondition();
+
+        if (!offsetExpirationCondition.isPresent()) {
+            return false;
+        }
+
+        AtomicBoolean hasAllOffsetsExpired = new AtomicBoolean(true);
+        OffsetExpirationCondition condition = offsetExpirationCondition.get();
+
+        offsetsByTopic.forEach((topic, partitions) -> {
+            if (!group.isSubscribedToTopic(topic, false)) {
+                partitions.forEach((partition, offsetAndMetadata) -> {
+                    if (condition.isOffsetExpired(offsetAndMetadata, 
currentTimestamp, config.offsetsRetentionMs)) {
+                        
expiredPartitions.add(appendOffsetCommitTombstone(groupId, topic, partition, 
records));
+                    } else {
+                        hasAllOffsetsExpired.set(false);
+                    }
+                });
+            } else {
+                hasAllOffsetsExpired.set(false);
+            }
+        });
+
+        log.debug("[GroupId {}] Expiring offsets: {}", groupId, 
expiredPartitions);

Review Comment:
   changed to info and to only log when there are expired partitions.
   
   What do you mean by format, as in just log the size?



-- 
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