This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/maven-resolver.git
commit 3ee57067c0ea8d17cf44517b772a89610f493e9a Author: Guillaume Nodet <[email protected]> AuthorDate: Sun Jun 7 06:51:31 2026 +0000 Fix GenericVersionScheme racy cache statistics F-24: Use a single computeIfAbsent() call instead of separate get() then computeIfAbsent(), and derive hit/miss statistics from whether the mapping function was invoked. --- .../aether/util/version/GenericVersionScheme.java | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/maven-resolver-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java b/maven-resolver-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java index 3dd7c5ca7..7188e1966 100644 --- a/maven-resolver-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java +++ b/maven-resolver-util/src/main/java/org/eclipse/aether/util/version/GenericVersionScheme.java @@ -99,16 +99,19 @@ public class GenericVersionScheme extends VersionSchemeSupport { totalRequests.incrementAndGet(); GLOBAL_TOTAL_REQUESTS.incrementAndGet(); - GenericVersion existing = versionCache.get(version); - if (existing != null) { - cacheHits.incrementAndGet(); - GLOBAL_CACHE_HITS.incrementAndGet(); - return existing; - } else { + boolean[] created = {false}; + GenericVersion result = versionCache.computeIfAbsent(version, v -> { + created[0] = true; + return new GenericVersion(v); + }); + if (created[0]) { cacheMisses.incrementAndGet(); GLOBAL_CACHE_MISSES.incrementAndGet(); - return versionCache.computeIfAbsent(version, GenericVersion::new); + } else { + cacheHits.incrementAndGet(); + GLOBAL_CACHE_HITS.incrementAndGet(); } + return result; } /**
