You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Bowen Li (Jira)" <ji...@apache.org> on 2026/06/23 20:36:00 UTC
[jira] [Created] (FLINK-39979) DynamicKafkaSource does not mark reader idle when metadata removal leaves a subtask with no active subreaders
Bowen Li created FLINK-39979:
--------------------------------
Summary: DynamicKafkaSource does not mark reader idle when metadata removal leaves a subtask with no active subreaders
Key: FLINK-39979
URL: https://issues.apache.org/jira/browse/FLINK-39979
Project: Flink
Issue Type: Bug
Components: Connectors / Kafka
Affects Versions: 2.2.0
Reporter: Bowen Li
When DynamicKafkaSource consumes a metadata update that removes all assigned splits for a source subtask, the subtask can end up with an empty {{{}clusterReaderMap{}}}. The reader releases removed split outputs, but because there is no child {{KafkaSourceReader}} left, no child can call {{{}markIdle(){}}}.
The aggregate idleness logic currently only treats the reader as idle when {{clusterReaderMap}} is non-empty and every child reader is idle. That misses the “all children removed after metadata update” case, so the source subtask can remain non-idle and hold back watermarks. In production this manifested as frozen watermarks and delayed partition release after a large analytics topic migration removed old clusters.
*Expected Behavior*
After metadata removal leaves a DynamicKafkaSourceReader with no active subreaders, the reader should mark its aggregate output idle so it does not block downstream watermarks.
*Actual Behavior*
The reader returns {{{}NOTHING_AVAILABLE{}}}, but does not mark idle because {{clusterReaderMap.isEmpty()}} makes the aggregate idleness check false.
*Impact*
Large cluster/topic removals can freeze watermarks for affected subtasks even when Kafka lag is low, delaying StreamFlink partition release and triggering false/high-severity data freshness alerts.
*Proposed Fix*
Treat an empty {{clusterReaderMap}} as idle once the reader has already received metadata / started active consumption. Keep startup behavior unchanged so a fresh reader with no metadata yet does not incorrectly become idle.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)