Lianet Magrans created KAFKA-17726:
--------------------------------------

             Summary: New consumer subscribe/subscribeFromPattern in background 
thread
                 Key: KAFKA-17726
                 URL: https://issues.apache.org/jira/browse/KAFKA-17726
             Project: Kafka
          Issue Type: Bug
          Components: clients, consumer
            Reporter: Lianet Magrans


There are still some calls to change the subscriptionState subscription in the 
app thread, that could lead to race-conditions given that the subscription 
state object is shared between the background and app thread and is mostly 
updated in the background. We should consider moving the 
subscriptionState.subscribe() and subscribeFromPattern calls to the background.

[https://github.com/apache/kafka/blob/5624bc7c7e43339eb64e18491ac5039324e50678/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java#L1465]

[https://github.com/apache/kafka/blob/5624bc7c7e43339eb64e18491ac5039324e50678/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java#L1703]

[https://github.com/apache/kafka/blob/5624bc7c7e43339eb64e18491ac5039324e50678/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java#L1736]

One option would be to use the existing SubscriptionChangeEvent, perform the 
subscription (and metadata) changes in the AppEventProcessor (where unsubscribe 
already takes place). 

Note that these calls are closely related to metadata object calls, to request 
metadata for new topics and "maybeUpdateSubscriptionMetadata". We should maybe 
consider moving them together to the background (where the metadata object is 
also updated).  
[https://github.com/apache/kafka/blob/5624bc7c7e43339eb64e18491ac5039324e50678/clients/src/main/java/org/apache/kafka/clients/consumer/internals/AsyncKafkaConsumer.java#L1703-L1705]
 



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

Reply via email to