You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@kafka.apache.org by "Kamal Chandraprakash (Jira)" <ji...@apache.org> on 2024/10/15 16:42:00 UTC
[jira] [Created] (KAFKA-17797) Use DelayedFuturePurgatory for RemoteListOffsetsPurgatory
Kamal Chandraprakash created KAFKA-17797:
--------------------------------------------
Summary: Use DelayedFuturePurgatory for RemoteListOffsetsPurgatory
Key: KAFKA-17797
URL: https://issues.apache.org/jira/browse/KAFKA-17797
Project: Kafka
Issue Type: Task
Reporter: Kamal Chandraprakash
We are using the DelayedOperationPurgatory for remote-list-offsets. Each request is being tracked by multiple watch-keys: [listOffsetsRequestKeys|https://sourcegraph.com/github.com/apache/kafka/-/blob/core/src/main/scala/kafka/server/ReplicaManager.scala?L1561].
The watch-key is based on a topicPartition and the purgatory is checked on that key every time a remote listOffset task completes. However, the completion of such a task has no impact on other pending listOffset requests on the same partition.
The only reason we need the purgatory is really just for the expiration logic after the timeout if we chain all the futures together. Perhaps, using the pattern of DelayedFuturePurgatory is more intuitive.
We could have a customized DelayedFuturePurgatory that also adds a delayed operation key per partition. But they are triggered for completion check when the replica is no longer the leader.
See: https://github.com/apache/kafka/pull/16602#discussion_r1792600283
--
This message was sent by Atlassian Jira
(v8.20.10#820010)