From 4ae4f0e76a1fe84371809cc065ec15f0137e72ff Mon Sep 17 00:00:00 2001 From: Andy Zhang Date: Fri, 8 Jan 2021 10:18:49 +0800 Subject: [PATCH] ReadWriteSafeCache concurrency read-write (#6149) --- CHANGES.md | 1 + .../oap/server/core/analysis/data/ReadWriteSafeCache.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 509b50177c..466d45e977 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -52,6 +52,7 @@ Release Notes. * Fix the priority setting doesn't work of the ALS analyzers. * Fix bug that `endpoint-name-grouping.yml` is not customizable in Dockerized case. * Fix bug that istio version metric type on UI template mismatches the otel rule. +* Improve ReadWriteSafeCache concurrency read-write performance #### UI * Fix un-removed tags in trace query. diff --git a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/ReadWriteSafeCache.java b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/ReadWriteSafeCache.java index e73bbfbd80..7fa8ff25db 100644 --- a/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/ReadWriteSafeCache.java +++ b/oap-server/server-core/src/main/java/org/apache/skywalking/oap/server/core/analysis/data/ReadWriteSafeCache.java @@ -85,10 +85,10 @@ public class ReadWriteSafeCache { BufferedData tempPointer = writeBufferPointer; writeBufferPointer = readBufferPointer; readBufferPointer = tempPointer; - - return readBufferPointer.read(); } finally { lock.unlock(); } + // Call read method outside of write lock for concurrency read-write. + return readBufferPointer.read(); } } -- GitLab