You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jira@kafka.apache.org by "Niket Goel (Jira)" <ji...@apache.org> on 2022/06/13 22:35:00 UTC

[jira] [Commented] (KAFKA-13986) DescribeQuorum does not return the observers (brokers) for the Metadata log

    [ https://issues.apache.org/jira/browse/KAFKA-13986?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17553818#comment-17553818 ] 

Niket Goel commented on KAFKA-13986:
------------------------------------

The fix should be something on the lines of:
{code:java}
diff --git a/core/src/main/scala/kafka/raft/RaftManager.scala b/core/src/main/scala/kafka/raft/RaftManager.scala
index cbb9f7b89b..94eec3d93b 100644
--- a/core/src/main/scala/kafka/raft/RaftManager.scala
+++ b/core/src/main/scala/kafka/raft/RaftManager.scala
@@ -24,7 +24,6 @@ import java.util.concurrent.CompletableFuture
 import kafka.log.UnifiedLog
 import kafka.raft.KafkaRaftManager.RaftIoThread
 import kafka.server.{KafkaConfig, MetaProperties}
-import kafka.server.KafkaRaftServer.ControllerRole
 import kafka.utils.timer.SystemTimer
 import kafka.utils.{KafkaScheduler, Logging, ShutdownableThread}
 import org.apache.kafka.clients.{ApiVersions, ManualMetadataUpdater, NetworkClient}
@@ -182,11 +181,7 @@ class KafkaRaftManager[T](
     val expirationService = new TimingWheelExpirationService(expirationTimer)
     val quorumStateStore = new FileBasedStateStore(new File(dataDir, "quorum-state"))

-    val nodeId = if (config.processRoles.contains(ControllerRole)) {
-      OptionalInt.of(config.nodeId)
-    } else {
-      OptionalInt.empty()
-    }
+    val nodeId = OptionalInt.of(config.nodeId)

     val client = new KafkaRaftClient(
       recordSerde, {code}

However there might be side-effects of the change.

 

> DescribeQuorum does not return the observers (brokers) for the Metadata log
> ---------------------------------------------------------------------------
>
>                 Key: KAFKA-13986
>                 URL: https://issues.apache.org/jira/browse/KAFKA-13986
>             Project: Kafka
>          Issue Type: Improvement
>          Components: kraft
>    Affects Versions: 3.0.0, 3.0.1
>            Reporter: Niket Goel
>            Priority: Major
>
> h2. Background
> While working on the [PR|https://github.com/apache/kafka/pull/12206] for KIP-836, we realized that the `DescribeQuorum` API does not return the brokers as observers for the metadata log.
> As noted by [~dengziming] :
> _We set nodeId=-1 if it's a broker so observers.size==0_
> The related code is:
> [https://github.com/apache/kafka/blob/4c9eeef5b2dff9a4f0977fbc5ac7eaaf930d0d0e/core/src/main/scala/kafka/raft/RaftManager.scala#L185-L189]
> {code:java}
> val nodeId = if (config.processRoles.contains(ControllerRole))
> { OptionalInt.of(config.nodeId) }
> else
> { OptionalInt.empty() }
> {code}
> h2. ToDo
> We should fix this and have the DescribeMetadata API return the brokers as observers for the metadata log.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)