Lianet Magrans created KAFKA-17900:
--------------------------------------

             Summary: Consider async resolution for client-side regex in new 
consumer
                 Key: KAFKA-17900
                 URL: https://issues.apache.org/jira/browse/KAFKA-17900
             Project: Kafka
          Issue Type: Task
          Components: clients, consumer
            Reporter: Lianet Magrans


[This concerns the regex used on consumer.subscribe(Pattern), that is computed 
on the client side, not the new SubscribedPattern introduced by KIP-848 
computed on the broker side]


With the new AsyncKafkaConsumer, we are already moving the computation of the 
subscription regex to the background thread as part of the 
UpdatePatternSubscriptionEvent. This will eval the regex against all topics 
from metadata whenever the metadata changes.
Even though this is already being done in a separate thread, it's used from the 
app thread in a blocking mode from within the poll loop 
(updateAssignmentMetadataIfNeeded does addAndGet on the 
UpdatePatternSubscriptionEvent).
 
We could consider making this regex refresh truly async by triggering the 
UpdatePatternSubscriptionEvent with a call to applicationEventHandler.add 
instead. The expectation is that the consumer poll loop will continue without 
initially reflecting any change in the subscribed topics (regex not 
re-evaluated yet). The moment the background completes the regex eval, it will 
update the subscription state with the new topics, making the new subscription 
effective. This btw aligns with the approach on the broker-side regex 
resolution, that does not block members HB, it just updates the assignment 
including the new topics when the regex resolution is ready.  
 
The main gain is to not block the poll loop on a computation of a regex that 
may be expensive , largely depending on the number of topics in metadata and 
the regex in use, but we should consider if there would be any undesired 
side-effect on the client poll loop (that I'm not seeing)



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

Reply via email to