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