This is an automated email from the ASF dual-hosted git repository.

jsancio pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/kafka.git


The following commit(s) were added to refs/heads/3.3 by this push:
     new e607f10e97 MINOR; Synchronize access to snapshots' TreeMap (#12464)
e607f10e97 is described below

commit e607f10e97ad603c0024bc91d7ffc02051588f26
Author: José Armando García Sancio <[email protected]>
AuthorDate: Mon Aug 1 10:32:27 2022 -0700

    MINOR; Synchronize access to snapshots' TreeMap (#12464)
    
    Read and write access to the TreeMap in snapshots needs to be synchronized.
    
    Reviewers: David Arthur <[email protected]>
---
 core/src/main/scala/kafka/raft/KafkaMetadataLog.scala | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/core/src/main/scala/kafka/raft/KafkaMetadataLog.scala 
b/core/src/main/scala/kafka/raft/KafkaMetadataLog.scala
index dba8975d43..83b8bee444 100644
--- a/core/src/main/scala/kafka/raft/KafkaMetadataLog.scala
+++ b/core/src/main/scala/kafka/raft/KafkaMetadataLog.scala
@@ -257,7 +257,11 @@ final class KafkaMetadataLog private (
   }
 
   override def storeSnapshot(snapshotId: OffsetAndEpoch): 
Optional[RawSnapshotWriter] = {
-    if (snapshots.contains(snapshotId)) {
+    val containsSnapshotId = snapshots synchronized {
+      snapshots.contains(snapshotId)
+    }
+
+    if (containsSnapshotId) {
       Optional.empty()
     } else {
       Optional.of(FileRawSnapshotWriter.create(log.dir.toPath, snapshotId, 
Optional.of(this)))

Reply via email to