[ 
https://issues.apache.org/jira/browse/KAFKA-17980?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kamal Chandraprakash updated KAFKA-17980:
-----------------------------------------
    Summary: Add isReady API in RemoteLogMetadataManager  (was: Add isReady API 
to RemoteLogMetadataManager)

> Add isReady API in RemoteLogMetadataManager
> -------------------------------------------
>
>                 Key: KAFKA-17980
>                 URL: https://issues.apache.org/jira/browse/KAFKA-17980
>             Project: Kafka
>          Issue Type: Task
>            Reporter: Kamal Chandraprakash
>            Assignee: Kamal Chandraprakash
>            Priority: Major
>
> When a broker comes up online, the RemoteLogMetadataManager (RLMM) gets 
> initialized in the background using the async fashion. The server starts to 
> copy/delete the expired remote log segments, then the RLMM throws exception 
> until it gets initialized. By adding the {{isReady}} method, the server can 
> delay the copying (or) deleting the remote log segments until the RLMM gets 
> initialized. This is a graceful handling to avoid exception/error logs while 
> starting the server. 
> (eg) Exception during init
> {noformat}
> [2024-11-06 09:33:16,867] WARN [RemoteLogManager=0 
> partition=xp3zuxhTQ9uUwk-uQhTx5g:topicA-0] Current task for topic-partition 
> xp3zuxhTQ9uUwk-uQhTx5g:topicA-0 received error but it will be scheduled 
> (kafka.log.remote.RemoteLogManager$RLMTask:793)
> java.lang.IllegalStateException: This instance is in invalid state, 
> initialized: false close: false
>     at 
> org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager.ensureInitializedAndNotClosed(TopicBasedRemoteLogMetadataManager.java:557)
>     at 
> org.apache.kafka.server.log.remote.metadata.storage.TopicBasedRemoteLogMetadataManager.highestOffsetForEpoch(TopicBasedRemoteLogMetadataManager.java:236)
>     at 
> kafka.log.remote.RemoteLogManager.findHighestRemoteOffset(RemoteLogManager.java:1827)
>     at 
> kafka.log.remote.RemoteLogManager$RLMFollowerTask.execute(RemoteLogManager.java:1434)
>     at 
> kafka.log.remote.RemoteLogManager$RLMTask.run(RemoteLogManager.java:784)
> {noformat}
> Proposed to add a new `isReady` API in RLMM:
> {code:java}
> /**
>  * Denotes whether the partition metadata is ready to serve.
>  *
>  * @param topicIdPartition topic partition
>  * @return True if the partition is ready to serve for remote storage 
> operations.
>  */
> default boolean isReady(TopicIdPartition topicIdPartition) {
>     return true;
> }
> {code}
> This task is related to 
> [KIP-1105|https://cwiki.apache.org/confluence/display/KAFKA/KIP-1105%3A+Make+remote+log+manager+thread-pool+configs+dynamic]



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

Reply via email to