showuon commented on code in PR #15951:
URL: https://github.com/apache/kafka/pull/15951#discussion_r1608048789
##########
core/src/main/scala/kafka/server/ReplicaManager.scala:
##########
@@ -2114,19 +2114,16 @@ class ReplicaManager(val config: KafkaConfig,
partition.log.foreach { _ =>
val leader = BrokerEndPoint(config.brokerId, "localhost", -1)
- // Add future replica log to partition's map
- partition.createLogIfNotExists(
- isNew = false,
- isFutureReplica = true,
- offsetCheckpoints,
- topicIds(partition.topic))
-
- // pause cleaning for partitions that are being moved and start
ReplicaAlterDirThread to move
- // replica from source dir to destination dir
- logManager.abortAndPauseCleaning(topicPartition)
-
- futureReplicasAndInitialOffset.put(topicPartition,
InitialFetchState(topicIds(topicPartition.topic), leader,
- partition.getLeaderEpoch, futureLog.highWatermark))
+ if (partition.maybeCreateFutureReplica(futureLog.parentDir,
offsetCheckpoints, topicIds(partition.topic))) {
Review Comment:
We need a way to determine if `partition#futureLog` map exists or not, so if
we call `partition.createLogIfNotExists()`, we can't know if it is created or
not. `partition.maybeCreateFutureReplica()` returns a boolean value to notify
us what we need.
That is, `partition.maybeCreateFutureReplica()` only calls
`partition.createLogIfNotExists()` when the `partition#futureLog` map doesn't
contain the partition. That's fine because there is no chances that futureLog
exists in `partition#futureLog` but not in `logManager#futureLogs` map.
Sorry, maybe I didn't get your question here. Could you explain again if I
misunderstand it?
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]