Alieh Saeedi created KAFKA-21251:
------------------------------------

             Summary: kafka-streams-groups.sh --describe --topology: global 
store sub-topology label can collide with a real subtopology id
                 Key: KAFKA-21251
                 URL: https://issues.apache.org/jira/browse/KAFKA-21251
             Project: Kafka
          Issue Type: Bug
            Reporter: Alieh Saeedi


h2. Problem

{{TopologyDescriptionFormatter}} 
(tools/src/main/java/org/apache/kafka/tools/streams/TopologyDescriptionFormatter.java)
 labels global stores starting at {{{}topology.subtopologies().size(){}}}:
 
 {{int globalStoreId = topology.subtopologies().size();for (final GlobalStore 
globalStore : topology.globalStores()) {    appendGlobalStore(sb, globalStore, 
globalStoreId++);}}}
This assumes regular subtopologies are numbered {{{}0..N-1{}}}. In Kafka 
Streams, global stores and subtopologies share one node-group id counter 
({{{}InternalTopologyBuilder{}}}), so if the app defines its global store/table 
first, the global store gets id {{0}} and regular subtopologies get 
{{{}1..N{}}}.
h2. Example

Global store defined first, then two regular subtopologies (real ids 1, 2). CLI 
output:
 
 {{Sub-topology: 1Sub-topology: 2Sub-topology: 2 for global store (will not 
generate tasks)   <- collides with real sub-topology 2}}
Stock Streams {{TopologyDescription.toString()}} would label the global store 
{{{}0{}}}.
h2. Impact

Cosmetic, CLI display only (KIP-1331 {{{}--describe --topology{}}}). 
Stored/pushed topology data and the CRD are unaffected. Not a release blocker; 
can confuse operators reading the output.
h2. Possible fixes
 # Minimal: start global labels at {{max(subtopology id) + 1}} — removes the 
collision, but may still differ from Streams' own id.

 # Exact: carry the global store's real id in the KIP-1331 description and 
print it — matches stock Streams output, but needs a protocol/API change.



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

Reply via email to