[ 
https://issues.apache.org/jira/browse/KAFKA-20696?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

TengYao Chi reassigned KAFKA-20696:
-----------------------------------

    Assignee: TengYao Chi

> Periodic plugin.deleteTopology cleanup for naturally-expired streams groups
> ---------------------------------------------------------------------------
>
>                 Key: KAFKA-20696
>                 URL: https://issues.apache.org/jira/browse/KAFKA-20696
>             Project: Kafka
>          Issue Type: Sub-task
>            Reporter: TengYao Chi
>            Assignee: TengYao Chi
>            Priority: Major
>
> Periodic topology description cleanup task: when a plugin is configured, the 
> broker runs a cleanup cycle every offsets.retention.check.interval.ms to 
> release plugin-side state for naturally-expired streams groups before the 
> offset-expiration sweep tombstones them.
> Cycle: fan out a read-only eligibility query across the broker's hosted 
> __consumer_offsets partitions (isEmpty && allOffsetsExpired && 
> StoredDescriptionTopologyEpoch != -1), then for each eligible group call 
> plugin.deleteTopology and, on success, clear StoredDescriptionTopologyEpoch 
> via a metadata record conditional on the epoch the cycle observed (no-op if a 
> concurrent setTopology has advanced it). Plugin failures leave the field set; 
> the same group is retried on the next cycle. Single-flight: cycles don't 
> overlap.
> Gate the existing offset-expiration sweep: when a plugin is configured, 
> streams groups must satisfy StoredDescriptionTopologyEpoch == -1 before the 
> sweep is allowed to tombstone them, so plugin-side state is always released 
> ahead of the in-memory record. Without a plugin the sweep behaves as today; 
> operators disabling a previously-configured plugin are responsible for 
> plugin-side cleanup out of band.
> Lifecycle: timer starts when a plugin is configured at startup, stops on 
> shutdown. Cleanup interval is offsets.retention.check.interval.ms.
> Metrics under kafka.server:type=group-coordinator-metrics: 
> streams-group-topology-description-cleanup-cycle-\{rate,count} and 
> streams-group-topology-description-cleanup-eligible-\{rate,count}. The 
> per-group plugin.deleteTopology outcome reuses the delete-\{success,error} 
> sensors introduced by KAFKA-20623.
> Tests: cycle behaviour (single-flight, no-op without plugin, per-group 
> plugin.deleteTopology + conditional clear), the offset-expiration-sweep gate, 
> and a broker integration test where a streams group expires naturally and the 
> plugin sees deleteTopology before the group is tombstoned.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to