diff --git a/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTrigger.java b/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTrigger.java index d93f985692534..fa7fea8f011a1 100644 --- a/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTrigger.java +++ b/streams/src/main/java/org/apache/kafka/streams/state/internals/metrics/RocksDBMetricsRecordingTrigger.java @@ -32,12 +32,12 @@ public RocksDBMetricsRecordingTrigger(final Time time) { public void addMetricsRecorder(final RocksDBMetricsRecorder metricsRecorder) { final String metricsRecorderName = metricsRecorderName(metricsRecorder); - if (metricsRecordersToTrigger.containsKey(metricsRecorderName)) { + final RocksDBMetricsRecorder existingRocksDBMetricsRecorder = metricsRecordersToTrigger.putIfAbsent(metricsRecorderName, metricsRecorder); + if (existingRocksDBMetricsRecorder != null) { throw new IllegalStateException("RocksDB metrics recorder for store \"" + metricsRecorder.storeName() + "\" of task " + metricsRecorder.taskId().toString() + " has already been added. " + "This is a bug in Kafka Streams."); } - metricsRecordersToTrigger.put(metricsRecorderName, metricsRecorder); } public void removeMetricsRecorder(final RocksDBMetricsRecorder metricsRecorder) {