Skip to content

Commit 8ae35c0

Browse files
authored
MINOR: add DCL on get or create meter for performance improvement (#22084)
We have synchronized on method `getOrCreateMeter()`. It will cause the process lock here every time, it would be better to lock when we actually need to create the meter, otherwise we can just return the existed value. Reviewers: Ken Huang <s7133700@gmail.com>, Chia-Ping Tsai <chia7712@gmail.com>
1 parent 4ae78a3 commit 8ae35c0

1 file changed

Lines changed: 6 additions & 2 deletions

File tree

server/src/main/java/org/apache/kafka/network/metrics/RequestMetrics.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,9 +192,13 @@ private ErrorMeter(String name, Errors error) {
192192
tags.put("error", error.name());
193193
}
194194

195-
private synchronized Meter getOrCreateMeter() {
195+
private Meter getOrCreateMeter() {
196196
if (meter == null) {
197-
meter = metricsGroup.newMeter(ERRORS_PER_SEC, "requests", TimeUnit.SECONDS, tags);
197+
synchronized (this) {
198+
if (meter == null) {
199+
meter = metricsGroup.newMeter(ERRORS_PER_SEC, "requests", TimeUnit.SECONDS, tags);
200+
}
201+
}
198202
}
199203
return meter;
200204
}

0 commit comments

Comments
 (0)