rondagostino commented on a change in pull request #10069:
URL: https://github.com/apache/kafka/pull/10069#discussion_r572442503



##########
File path: core/src/main/scala/kafka/server/metadata/MetadataPartitions.scala
##########
@@ -39,11 +41,30 @@ object MetadataPartition {
       record.isr(),
       Collections.emptyList(), // TODO KAFKA-12285 handle offline replicas
       Collections.emptyList(),
-      Collections.emptyList())
+      Collections.emptyList(),
+      largestDeferredOffsetEverSeen = 
deferredAtOffset.getOrElse(OffsetNeverDeferred),
+      isCurrentlyDeferringChanges = deferredAtOffset.isDefined)

Review comment:
       We basically use `largestDeferredOffsetEverSeen` only for logging at 
this point -- we also check it in a few `private def sanityCheckState...()` 
`RaftReplicaManager` methods.  We could completely eliminate 
`largestDeferredOffsetEverSeen` if we didn't want to log when the partition was 
last deferred.  It just tracks when the partition was last seen and the change 
at that offset was deferred rather than directly applied.  Once the partition 
is no longer deferred the value remains whatever it was and the boolean flips 
to `false`.
   
   It does seem on the surface that we could change the declaration to 
`deferredSinceOffset` and get rid of the boolean -- and `deferredSinceOffset` 
would change to `-1` once those changes are applied.  But there is a problem 
with this if the partition changes to not being deferred in the metadata cache 
before we ask `RaftReplicaManager` to process all of its deferred changes: the 
value will be -1 in the metadata cache under those circumstances, and we 
wouldn't have the value to log.
   
   So I think we have a few options.
   
   1. Do the logging, apply the changes to the matadata cache before replica 
manager, and keep the `Long` and `Boolean` as currently defined
   2. Do the logging, apply the changes to the matadata cache **after** replica 
manager, and use just a `Long` (with the semantics being changed as described 
above)
   3. Just use a Boolean and don't do the logging.
   




----------------------------------------------------------------
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.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


Reply via email to