From 231359fb565f66745d27635754054900a3b6ee0f Mon Sep 17 00:00:00 2001 From: Nikita Koksharov Date: Wed, 9 Oct 2024 09:54:33 +0300 Subject: [PATCH] destroy method added --- .../org/redisson/RedissonClientSideCaching.java | 14 +++++++++++++- .../java/org/redisson/api/RClientSideCaching.java | 7 ++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/redisson/src/main/java/org/redisson/RedissonClientSideCaching.java b/redisson/src/main/java/org/redisson/RedissonClientSideCaching.java index a7bc6f731..8c8e81c8e 100644 --- a/redisson/src/main/java/org/redisson/RedissonClientSideCaching.java +++ b/redisson/src/main/java/org/redisson/RedissonClientSideCaching.java @@ -35,12 +35,18 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; +/** + * + * @author Nikita Koksharov + * + */ public final class RedissonClientSideCaching implements RClientSideCaching { Map cache; final Map> name2cacheKey = new ConcurrentHashMap<>(); final CommandAsyncExecutor commandExecutor; + final int listenerId; RedissonClientSideCaching(CommandAsyncExecutor commandExecutor, ClientSideCachingOptions options) { ClientSideCachingParams params = (ClientSideCachingParams) options; @@ -78,7 +84,7 @@ public final class RedissonClientSideCaching implements RClientSideCaching { } } }); - r.join(); + listenerId = r.join(); } public T create(Object instance, Class clazz) { @@ -221,4 +227,10 @@ public final class RedissonClientSideCaching implements RClientSideCaching { public RGeo getGeo(String name, Codec codec) { return new RedissonGeo<>(codec, commandExecutor, name, null); } + + @Override + public void destroy() { + PublishSubscribeService subscribeService = commandExecutor.getConnectionManager().getSubscribeService(); + commandExecutor.get(subscribeService.removeFlushListenerAsync(listenerId)); + } } diff --git a/redisson/src/main/java/org/redisson/api/RClientSideCaching.java b/redisson/src/main/java/org/redisson/api/RClientSideCaching.java index 7219e86cd..ca378deba 100644 --- a/redisson/src/main/java/org/redisson/api/RClientSideCaching.java +++ b/redisson/src/main/java/org/redisson/api/RClientSideCaching.java @@ -17,7 +17,12 @@ package org.redisson.api; import org.redisson.client.codec.Codec; -public interface RClientSideCaching { +/** + * + * @author Nikita Koksharov + * + */ +public interface RClientSideCaching extends RDestroyable { /** * Returns object holder instance by name.