You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Chia-Ping Tsai (Jira)" <ji...@apache.org> on 2024/05/29 21:28:00 UTC
[jira] [Commented] (KAFKA-15305) The background thread should try to process the remaining task until the shutdown timer is expired
[ https://issues.apache.org/jira/browse/KAFKA-15305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17850505#comment-17850505 ]
Chia-Ping Tsai commented on KAFKA-15305:
----------------------------------------
KAFKA-16639 needs this ticket to fix root cause. As this ticket described, `ConsumerNetworkThread` does not honor the close timeout. Even though we put a heartbeat request to leave group, `ConsumerNetworkThread` will move it to `NetworkClient` and then exit the waiting ...
It seems to me the simple solution is to add a method "hasInFlightRequests" to "networkClientDelegate", and then we change the while condition from "timer.notExpired() && !networkClientDelegate.unsentRequests().isEmpty()" to "timer.notExpired() && networkClientDelegate.hasInFlightRequests()".
{code:java}
boolean hasInFlightRequests() {
return client.hasInFlightRequests();
}
{code}
{code:java}
do {
networkClientDelegate.poll(timer.remainingMs(), timer.currentTimeMs());
timer.update();
} while (timer.notExpired() && networkClientDelegate.hasInFlightRequests());
{code}
[~kirktrue] WDYT?
> The background thread should try to process the remaining task until the shutdown timer is expired
> --------------------------------------------------------------------------------------------------
>
> Key: KAFKA-15305
> URL: https://issues.apache.org/jira/browse/KAFKA-15305
> Project: Kafka
> Issue Type: Bug
> Components: clients, consumer
> Reporter: Philip Nee
> Assignee: Kirk True
> Priority: Major
> Labels: consumer-threading-refactor, timeout
> Fix For: 3.8.0
>
>
> While working on https://issues.apache.org/jira/browse/KAFKA-15304
> close() API supplies a timeout parameter so that the consumer can have a grace period to process things before shutting down. The background thread currently doesn't do that, when close() is initiated, it will immediately close all of its dependencies.
>
> This might not be desirable because there could be remaining tasks to be processed before closing. Maybe the correct things to do is to first stop accepting API request, second, let the runOnce() continue to run before the shutdown timer expires, then we can force closing all of its dependencies.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)