From b01ba2500a921d15849950ff9cd0e52f735a8248 Mon Sep 17 00:00:00 2001 From: twisti <76837088+twisti-dev@users.noreply.github.com> Date: Thu, 7 May 2026 10:44:05 +0200 Subject: [PATCH] fix(redis): avoid caching failed lua script loads --- .../kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt b/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt index 00ccf5b..a5f4647 100644 --- a/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt +++ b/surf-redis-core/src/main/kotlin/dev/slne/surf/redis/util/LuaScriptExecutor.kt @@ -12,12 +12,11 @@ import java.util.concurrent.ConcurrentHashMap class LuaScriptExecutor private constructor(private val api: RedisApi, private val registry: LuaScriptRegistry) { - private val scriptShas = ConcurrentHashMap>() + private val scriptShas = ConcurrentHashMap() private val script by lazy { api.redissonReactive.getScript(StringCodec.INSTANCE) } - private fun getSha(id: String): Mono = scriptShas.computeIfAbsent(id) { - script.scriptLoad(registry.get(id)).cache() - } + private fun getSha(id: String): Mono = scriptShas[id]?.let { Mono.just(it) } + ?: script.scriptLoad(registry.get(id)).doOnNext { scriptShas[id] = it } fun execute( id: String,