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)