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

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


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

commit 5a2f28ce305183808d5932d44314f10b9beb21c5
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