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