From 911428b268ad14e9849af58a9aa6d0cc56424fd7 Mon Sep 17 00:00:00 2001 From: vahid torkaman Date: Mon, 18 Aug 2025 10:07:14 +0200 Subject: [PATCH] make the wasm resolve thread safe --- .../java/com/spotify/confidence/SwapWasmResolverApi.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/openfeature-provider-local/src/main/java/com/spotify/confidence/SwapWasmResolverApi.java b/openfeature-provider-local/src/main/java/com/spotify/confidence/SwapWasmResolverApi.java index fa6c60b5..f758af80 100644 --- a/openfeature-provider-local/src/main/java/com/spotify/confidence/SwapWasmResolverApi.java +++ b/openfeature-provider-local/src/main/java/com/spotify/confidence/SwapWasmResolverApi.java @@ -3,6 +3,7 @@ import com.spotify.confidence.shaded.flags.resolver.v1.ResolveFlagsRequest; import com.spotify.confidence.shaded.flags.resolver.v1.ResolveFlagsResponse; import java.util.concurrent.atomic.AtomicReference; +import java.util.concurrent.locks.ReentrantLock; class SwapWasmResolverApi { private final AtomicReference wasmResolverApiRef = new AtomicReference<>(); @@ -29,7 +30,12 @@ public void updateState(byte[] state) { isPrimary = !isPrimary; } + private final ReentrantLock logResolveLock = new ReentrantLock(); + public ResolveFlagsResponse resolve(ResolveFlagsRequest request) { - return wasmResolverApiRef.get().resolve(request); + logResolveLock.lock(); + final var response = wasmResolverApiRef.get().resolve(request); + logResolveLock.unlock(); + return response; } }