Giter VIP home page Giter VIP logo

micronaut-redis's Introduction

Micronaut Redis

Maven Central Build Status Revved up by Develocity

Integration between Micronaut and the Lettuce Redis Driver.

Documentation

See the Documentation for more information.

See the Snapshot Documentation for the current development docs.

Snapshots and Releases

Snaphots are automatically published to JFrog OSS using Github Actions.

See the documentation in the Micronaut Docs for how to configure your build to use snapshots.

Releases are published to JCenter and Maven Central via Github Actions.

A release is performed with the following steps:

micronaut-redis's People

Contributors

alvarosanchez avatar ayang-rkjs avatar boxi1119 avatar dependabot-preview[bot] avatar dependabot[bot] avatar dstepanov avatar eddumelendez avatar graemerocher avatar hmatt1 avatar ilopmar avatar ipinyou avatar jameskleeh avatar kandogu avatar ktholen avatar michelschudel avatar micronaut-build avatar n0tl3ss avatar niravassar avatar pgressa avatar puneetbehl avatar r6q avatar racevedoo avatar renovate[bot] avatar rferreira avatar sdelamo avatar timyates avatar tmapes avatar vemilyus avatar vignjatov avatar wetted avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

micronaut-redis's Issues

Health indicator appears to leak connections when another health indicator is down

We've noticed that Redis connections will slowly but consistently leak over time if another health indicator is down. The application will eventually exhaust the connections up to the limit on the Redis server.

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

  1. Create a Micronaut application with the Redis Lettuce module
  2. Add a failing health indicator
  3. Run the application in Kubernetes with a readiness probe in place
  4. Monitor the connections in redis over about 30-60 minutes (can use "> client list" command)

Expected Behaviour

Connections should remain relatively stable over time.

Actual Behaviour

Connections slowly increase over time until the connection limit in Redis is eventually hit.
I'm seeing about 50 connections per hour created when running locally.

Environment Information

  • Operating System: Linux
  • Micronaut Version: 2.2.2
  • JDK Version: 11

Example Application

https://github.com/zdegner/micronaut-redis-health-indicator-connection-leak

Configurable cache namespace

Feature description

If we have different applications with same cache name and same Redis instance it may cause incorrect behavior of mixing different caches.
I think it would be nice to have an option for cache config like a namespace.
Or using application name as namespace prefix by default.

How to configure ClientResources on RedisClient bean

Hi,

This is more of a question/enhancement.

Lettuce offers a way to configure client resources (https://lettuce.io/core/release/reference/index.html#clientresources.using-and-reusing-clientresources) on RedisClient class. However, we lose the flexibility of configuring client resources if we get a bean from Micronuat-redis (as of version 2.1.0).

Any reasons for not allowing Client resources to be configurable ? Can this be enhanced as it will allow for customizations ?

Cache Invalidate

Steps to Reproduce

Use the following annotation to invalidate the entire cache @CacheInvalidate(all = true, async = true)

Expected Behaviour

Delete all cache keys without errors

Actual Behaviour

If there are no keys in redis, an error occurs.

16:32:01.251 [io-executor-thread-2] ERROR i.m.c.interceptor.CacheInterceptor - Error invalidating cache: event
java.util.concurrent.CompletionException: java.lang.IllegalArgumentException: Keys must not be empty
	at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:314)
	at java.base/java.util.concurrent.CompletableFuture.completeThrowable(CompletableFuture.java:319)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1081)
	at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
	at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120)
	at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:109)
	at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:680)
	at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:640)
	at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:591)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalArgumentException: Keys must not be empty
	at io.lettuce.core.internal.LettuceAssert.notEmpty(LettuceAssert.java:100)
	at io.lettuce.core.RedisCommandBuilder.notEmpty(RedisCommandBuilder.java:3272)
	at io.lettuce.core.RedisCommandBuilder.del(RedisCommandBuilder.java:544)
	at io.lettuce.core.AbstractRedisAsyncCommands.del(AbstractRedisAsyncCommands.java:428)
	at io.micronaut.configuration.lettuce.cache.RedisCache$RedisAsyncCache.deleteByKeys(RedisCache.java:391)
	at io.micronaut.configuration.lettuce.cache.RedisCache$RedisAsyncCache.lambda$invalidateAll$5(RedisCache.java:386)
	at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
	... 23 common frames omitted

Environment Information

  • Operating System: Windows
  • Micronaut Version: 2.1.0
  • JDK Version: 11

Redis cache invalidation doesn't work with reactive types

Expected Behavior

Hi Micronaut Developers!
I faced an issue with Redis cache invalidation, please take a look.

Having the following code sample as a user I would expect cache invalidation to work via @CacheInvalidate when the service returns reactive types.

@Singleton
@CacheConfig("reactive-example-cache")
public class ReactiveExampleService {

    @Cacheable
    Mono<LocalDateTime> getByKey(String key) {
        return Mono.just(LocalDateTime.now());
    }

    @CacheInvalidate
    Mono<Void> resetCache(String key) {
        return Mono.empty();
    }
}

Actual Behaviour

Cache invalidation doesn't happen and the only workaround I found is to inject the RedisCache instance and invalidate it manually.

Steps To Reproduce

Please take a look at the following test in the example application https://github.com/papahigh/micronaut-redis-cache-invalidation/blob/main/src/test/java/com/example/ReactiveExampleControllerTest.java
this test fails on invalidation when the service returns reactive types.

And here is a test with working invalidation (no reactive types in service) https://github.com/papahigh/micronaut-redis-cache-invalidation/blob/main/src/test/java/com/example/BlockingExampleControllerTest.java

Environment Information

  • JDK11

Example Application

https://github.com/papahigh/micronaut-redis-cache-invalidation

Version

3.0.1

Redis hangs under GraalVM for 3.6.4-SNAPSHOT

We have a test for GraalVM which builds a native image of a simple Redis backed application and then checks the endpoints work as expected.

The project can be found over here:

https://github.com/micronaut-graal-tests/micronaut-redis-graal/tree/3.6.x

This is executed on GitLab, but when the endpoint is called, the application simply hangs

https://gitlab.com/micronaut-projects/micronaut-graal-tests/-/jobs/3024111190

If we change the log level to DEBUG, there are lots of warnings about Netty, but I don't know if these are related...

Running with ./gradlew -Pagent run and hitting the endpoint generates a lot of agent files, and I was told that copying these into src/main/resources/META-INF fixed the issue, however that's not what I'm seeing under OSX... I'm then seeing errors looking up JFR events...

Steps to Reproduce

  1. Clone https://github.com/micronaut-graal-tests/micronaut-redis-graal
  2. Check out the 3.6.x branch
  3. Change the logger in src/main/resources to trace
  4. Start redis locally: docker run -p 6379:6379 -d redis
  5. Use GraalVM CE 22.2.r11 (or r17)
  6. Run ./gradlew nativeCompile
  7. Run build/native/nativeCompile/redis
  8. hit http://localhost:8080/set

Expected Behaviour

It should return an empty response, then hitting http://localhost:8080/get should return "Hello World"

Actual Behaviour

It just hangs, and never responds

Environment Information

Fails on both ARM and X86 OSX machines

❯ java -version
openjdk version "11.0.16" 2022-07-19
OpenJDK Runtime Environment GraalVM CE 22.2.0 (build 11.0.16+8-jvmci-22.2-b06)
OpenJDK 64-Bit Server VM GraalVM CE 22.2.0 (build 11.0.16+8-jvmci-22.2-b06, mixed mode)

Micronaut 3.6.x

Can't deserialize generic types with BeanIntrospectionModule

The BeanIntrospectionModule currently implements SimpleModule which specifies in its javadocs:

WARNING: when registering JsonSerializers and JsonDeserializers, only type erased Class is compared: this means that usually you should NOT use this implementation for registering structured types such as Collections or Maps: this because parametric type information will not be considered and you may end up having "wrong" handler for your type. What you need to do, instead, is to implement com.fasterxml.jackson.databind.deser.Deserializers and/or com.fasterxml.jackson.databind.ser.Serializers callbacks to match full type signatures (with JavaType).

It seems that the interfaces specified there need to be implemented for this to work properly with generics.

Example (in Kotlin with KotlinTest):

data class SomeClass(val name: String)

val list = listOf(SomeClass("one"), SomeClass("two"))

class ObjectSerializerTest : StringSpec({
	 "it serializes a list of data classes" {
		val ctx = ApplicationContext.run()
		val ser = ctx.getBean(JacksonObjectSerializer::class.java)

		ser.serialize(list).get().commonToUtf8String() shouldBe """[{"name":"one"},{"name":"two"}]"""
	}

	"it deserializes a list of data classes" {
		val ctx = ApplicationContext.run()
		val ser = ctx.getBean(JacksonObjectSerializer::class.java)

		ser.deserialize("""[{"name":"one"},{"name":"two"}]""".toByteArray(), List::class.java).get() shouldBe list
	}
})

Serialization works, but deserialization gives:
expected: [SomeClass(name=one), SomeClass(name=two)] but was: [{"name"="one"}, {"name"="two"}]

I think because in the RedisCache implementation:

    protected <T> Optional<T> getValue(Argument<T> requiredType, SyncCacheCommands commands, byte[] serializedKey) {
        byte[] data = commands.get(serializedKey);
        if (expireAfterAccess != null) {
            commands.expire(serializedKey, expireAfterAccess);
        }
        if (data != null) {
            return valueSerializer.deserialize(data, requiredType.getType());
        } else {

            return Optional.empty();
        }
    }

requiredType.getType() just gives List::class.java which would explain why the cast fails in the cache usage.

Redis module doesn't connect when using native image

the api microservice won't connect to redis

08:11:00.617 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: Error instantiating bean of type [io.lettuce.core.pubsub.StatefulRedisPubSubConnection]: io.lettuce.core.pubsub.api.sync.RedisPubSubCommands.dispatch(io.lettuce.core.protocol.ProtocolKeyword, io.lettuce.core.output.CommandOutput, io.lettuce.core.protocol.CommandArgs)
io.micronaut.context.exceptions.BeanInstantiationException: Error instantiating bean of type [io.lettuce.core.pubsub.StatefulRedisPubSubConnection]: io.lettuce.core.pubsub.api.sync.RedisPubSubCommands.dispatch(io.lettuce.core.protocol.ProtocolKeyword, io.lettuce.core.output.CommandOutput, io.lettuce.core.protocol.CommandArgs)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2008)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2770)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2756)
	at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2427)
	at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2401)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1285)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:755)
	at io.micronaut.context.BeanLocator.findBean(BeanLocator.java:149)
	at io.micronaut.configuration.lettuce.session.RedisSessionStore.lambda$findRedisPubSubConnection$22(RedisSessionStore.java:405)
	at java.util.Optional.orElseGet(Optional.java:369)
	at io.micronaut.configuration.lettuce.session.RedisSessionStore.findRedisPubSubConnection(RedisSessionStore.java:405)
	at io.micronaut.configuration.lettuce.session.RedisSessionStore.<init>(RedisSessionStore.java:142)
	at io.micronaut.configuration.lettuce.session.$RedisSessionStoreDefinition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1979)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2770)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2756)
	at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2427)
	at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2401)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1264)
	at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1014)
	at io.micronaut.session.binder.$SessionArgumentBinderDefinition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1979)
	at io.micronaut.context.DefaultBeanContext.addCandidateToList(DefaultBeanContext.java:3141)
	at io.micronaut.context.DefaultBeanContext.getBeanRegistrations(DefaultBeanContext.java:3044)
	at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:1062)
	at io.micronaut.context.AbstractBeanDefinition.doGetBeansOfType(AbstractBeanDefinition.java:1232)
	at io.micronaut.context.AbstractBeanDefinition.getBeansOfTypeForConstructorArgument(AbstractBeanDefinition.java:1179)
	at io.micronaut.http.bind.$DefaultRequestBinderRegistryDefinition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1979)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2770)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2756)
	at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2427)
	at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2401)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1264)
	at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1014)
	at io.micronaut.http.server.netty.$NettyRequestArgumentSatisfierDefinition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1979)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2770)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2756)
	at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2427)
	at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2401)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1264)
	at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1014)
	at io.micronaut.http.server.netty.$NettyHttpServerDefinition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1979)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2770)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2756)
	at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2427)
	at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2401)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1285)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:755)
	at io.micronaut.context.BeanLocator.findBean(BeanLocator.java:149)
	at io.micronaut.runtime.Micronaut.start(Micronaut.java:73)
	at io.micronaut.runtime.Micronaut.run(Micronaut.java:311)
	at io.micronaut.runtime.Micronaut.run(Micronaut.java:297)
	at api.Application.main(Application.java:25)
Caused by: java.lang.NoSuchMethodError: io.lettuce.core.pubsub.api.sync.RedisPubSubCommands.dispatch(io.lettuce.core.protocol.ProtocolKeyword, io.lettuce.core.output.CommandOutput, io.lettuce.core.protocol.CommandArgs)
	at com.sun.proxy.$Proxy345.<clinit>(Unknown Source)
	at com.oracle.svm.core.classinitialization.ClassInitializationInfo.invokeClassInitializer(ClassInitializationInfo.java:375)
	at com.oracle.svm.core.classinitialization.ClassInitializationInfo.initialize(ClassInitializationInfo.java:295)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:490)
	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1022)
	at java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1008)
	at io.lettuce.core.RedisChannelHandler.syncHandler(RedisChannelHandler.java:314)
	at io.lettuce.core.pubsub.StatefulRedisPubSubConnectionImpl.newRedisSyncCommandsImpl(StatefulRedisPubSubConnectionImpl.java:103)
	at io.lettuce.core.pubsub.StatefulRedisPubSubConnectionImpl.newRedisSyncCommandsImpl(StatefulRedisPubSubConnectionImpl.java:45)
	at io.lettuce.core.StatefulRedisConnectionImpl.<init>(StatefulRedisConnectionImpl.java:81)
	at io.lettuce.core.pubsub.StatefulRedisPubSubConnectionImpl.<init>(StatefulRedisPubSubConnectionImpl.java:61)
	at io.lettuce.core.RedisClient.newStatefulRedisPubSubConnection(RedisClient.java:626)
	at io.lettuce.core.RedisClient.connectPubSubAsync(RedisClient.java:405)
	at io.lettuce.core.RedisClient.connectPubSub(RedisClient.java:328)
	at io.micronaut.configuration.lettuce.AbstractRedisClientFactory.redisPubSubConnection(AbstractRedisClientFactory.java:80)
	at io.micronaut.configuration.lettuce.DefaultRedisClientFactory.redisPubSubConnection(DefaultRedisClientFactory.java:62)
	at io.micronaut.configuration.lettuce.$DefaultRedisClientFactory$RedisPubSubConnection2Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1979)

Error setting `redis.verify-peer` to `false`

Expected Behavior

Application should start, Redis SSL verify mode should be set to None

Actual Behaviour

Failed to inject value for parameter:

16:50:23.895 [main] ERROR io.micronaut.runtime.Micronaut - Error starting Micronaut server: Failed to inject value for parameter [verifyMode] of method [setVerifyPeer] of class: io.micronaut.configuration.lettuce.DefaultRedisConfiguration

Message: Failed to inject value for parameter [verifyMode] of method [setVerifyPeer] of class: io.micronaut.configuration.lettuce.DefaultRedisConfiguration

Message: Error resolving property value [redis.verify-peer]. Property doesn't exist
Path Taken: RedisClient.redisClient(AbstractRedisConfiguration config,ClientResources defaultClientResources,List mutators) --> RedisClient.redisClient([AbstractRedisConfiguration config],ClientResources defaultClientResources,List mutators) --> DefaultRedisConfiguration.setVerifyPeer([SslVerifyMode verifyMode])
Path Taken: RedisClient.redisClient(AbstractRedisConfiguration config,ClientResources defaultClientResources,List mutators) --> RedisClient.redisClient([AbstractRedisConfiguration config],ClientResources defaultClientResources,List mutators) --> DefaultRedisConfiguration.setVerifyPeer([SslVerifyMode verifyMode])
io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [verifyMode] of method [setVerifyPeer] of class: io.micronaut.configuration.lettuce.DefaultRedisConfiguration

Message: Failed to inject value for parameter [verifyMode] of method [setVerifyPeer] of class: io.micronaut.configuration.lettuce.DefaultRedisConfiguration

Message: Error resolving property value [redis.verify-peer]. Property doesn't exist
Path Taken: RedisClient.redisClient(AbstractRedisConfiguration config,ClientResources defaultClientResources,List mutators) --> RedisClient.redisClient([AbstractRedisConfiguration config],ClientResources defaultClientResources,List mutators) --> DefaultRedisConfiguration.setVerifyPeer([SslVerifyMode verifyMode])
Path Taken: RedisClient.redisClient(AbstractRedisConfiguration config,ClientResources defaultClientResources,List mutators) --> RedisClient.redisClient([AbstractRedisConfiguration config],ClientResources defaultClientResources,List mutators) --> DefaultRedisConfiguration.setVerifyPeer([SslVerifyMode verifyMode])
	at io.micronaut.context.exceptions.DependencyInjectionException.missingProperty(DependencyInjectionException.java:289)
	at io.micronaut.context.AbstractInitializableBeanDefinition.lambda$resolvePropertyValue$10(AbstractInitializableBeanDefinition.java:2043)
	at java.base/java.util.Optional.orElseThrow(Optional.java:403)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolvePropertyValue(AbstractInitializableBeanDefinition.java:2043)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getPropertyValueForSetter(AbstractInitializableBeanDefinition.java:1086)
	at io.micronaut.configuration.lettuce.$DefaultRedisConfiguration$Definition.injectBean(Unknown Source)
	at io.micronaut.configuration.lettuce.$DefaultRedisConfiguration$Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2800)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1617)
	at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:66)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2065)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1297)
	at io.micronaut.configuration.lettuce.$DefaultRedisClientFactory$RedisClient0$Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2800)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1680)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:1655)
	at io.micronaut.context.DefaultBeanContext.findBean(DefaultBeanContext.java:878)
	at io.micronaut.context.BeanLocator.findBean(BeanLocator.java:291)
	at io.micronaut.configuration.lettuce.RedisConnectionUtil.findRedisClient(RedisConnectionUtil.java:133)
	at io.micronaut.configuration.lettuce.RedisConnectionUtil.openBytesRedisConnection(RedisConnectionUtil.java:113)
	at io.micronaut.configuration.lettuce.cache.RedisCache.<init>(RedisCache.java:81)
	at io.micronaut.configuration.lettuce.cache.$RedisCache$Definition.build(Unknown Source)
	at io.micronaut.context.BeanDefinitionDelegate.build(BeanDefinitionDelegate.java:161)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2853)
	at io.micronaut.context.DefaultBeanContext.addCandidateToList(DefaultBeanContext.java:3511)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistrations(DefaultBeanContext.java:3457)
	at io.micronaut.context.DefaultBeanContext.getBeanRegistrations(DefaultBeanContext.java:3427)
	at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:1381)
	at io.micronaut.context.AbstractBeanResolutionContext.getBeansOfType(AbstractBeanResolutionContext.java:72)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBeansOfType(AbstractInitializableBeanDefinition.java:2161)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getBeansOfTypeForConstructorArgument(AbstractInitializableBeanDefinition.java:1437)
	at io.micronaut.cache.$DefaultCacheManager$Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2800)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1617)
	at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:66)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2065)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForConstructorArgument(AbstractInitializableBeanDefinition.java:1297)
	at io.micronaut.cache.interceptor.$CacheInterceptor$Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2853)
	at io.micronaut.context.DefaultBeanContext.addCandidateToList(DefaultBeanContext.java:3511)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistrations(DefaultBeanContext.java:3457)
	at io.micronaut.context.DefaultBeanContext.getBeanRegistrations(DefaultBeanContext.java:3427)
	at io.micronaut.context.AbstractBeanResolutionContext.getBeanRegistrations(AbstractBeanResolutionContext.java:96)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBeanRegistrations(AbstractInitializableBeanDefinition.java:2190)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanRegistrationsForConstructorArgument(AbstractInitializableBeanDefinition.java:1461)
	at org.hbr.svc.impl.homepage.$FeaturedService$Definition$Intercepted$Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2800)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1617)
	at io.micronaut.context.AbstractBeanResolutionContext.getBean(AbstractBeanResolutionContext.java:66)
	at io.micronaut.context.AbstractInitializableBeanDefinition.resolveBean(AbstractInitializableBeanDefinition.java:2065)
	at io.micronaut.context.AbstractInitializableBeanDefinition.getBeanForMethodArgument(AbstractInitializableBeanDefinition.java:1154)
	at org.hbr.svc.internal.event.$ServerStartupEventListener$Definition.injectBean(Unknown Source)
	at org.hbr.svc.internal.event.$ServerStartupEventListener$Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.resolveByBeanFactory(DefaultBeanContext.java:2354)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2305)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:2251)
	at io.micronaut.context.DefaultBeanContext.createRegistration(DefaultBeanContext.java:3016)
	at io.micronaut.context.SingletonScope.getOrCreate(SingletonScope.java:80)
	at io.micronaut.context.DefaultBeanContext.findOrCreateSingletonBeanRegistration(DefaultBeanContext.java:2918)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2879)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistration(DefaultBeanContext.java:2853)
	at io.micronaut.context.DefaultBeanContext.addCandidateToList(DefaultBeanContext.java:3511)
	at io.micronaut.context.DefaultBeanContext.resolveBeanRegistrations(DefaultBeanContext.java:3457)
	at io.micronaut.context.DefaultBeanContext.getBeanRegistrations(DefaultBeanContext.java:3427)
	at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:1381)
	at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:903)
	at io.micronaut.context.DefaultBeanContext.getBeansOfType(DefaultBeanContext.java:893)
	at io.micronaut.context.event.ApplicationEventPublisherFactory$2.lambda$$0(ApplicationEventPublisherFactory.java:217)
	at io.micronaut.core.util.SupplierUtil$2.initialize(SupplierUtil.java:77)
	at io.micronaut.core.util.SupplierUtil$2.get(SupplierUtil.java:72)
	at io.micronaut.context.event.ApplicationEventPublisherFactory$2.publishEvent(ApplicationEventPublisherFactory.java:229)
	at io.micronaut.http.server.netty.NettyHttpServer.fireStartupEvents(NettyHttpServer.java:580)
	at io.micronaut.http.server.netty.NettyHttpServer.start(NettyHttpServer.java:298)
	at io.micronaut.http.server.netty.NettyHttpServer.start(NettyHttpServer.java:104)
	at io.micronaut.runtime.Micronaut.lambda$start$2(Micronaut.java:81)
	at java.base/java.util.Optional.ifPresent(Optional.java:178)
	at io.micronaut.runtime.Micronaut.start(Micronaut.java:79)
	at io.micronaut.runtime.Micronaut.run(Micronaut.java:323)
	at io.micronaut.runtime.Micronaut.run(Micronaut.java:309)
	at org.hbr.Application.main(Application.groovy:30)

Process finished with exit code 1

Steps To Reproduce

config:

redis:
  uri: redis://my-redis-instance.com:6379
  ssl: true
  verify-peer: false
  timeout: 30s
  caches:
    foo:
      expire-after-write: 4h
    bar:
      expire-after-write: 4h

Environment Information

  • Windows 10
  • Java 17

Example Application

No response

Version

3.7.1

Max inactive interval ignored

Expected Behavior

When logging and and browsing around, it is unexpected to be logged out. So the time out does not seem to be extended when the browser sends the cookie with an active session.

Actual Behaviour

User is redirected to login page when browsing around.

Steps To Reproduce

redis:
  health:
    enabled: false #disabled to prevent /health spam ddos
  uri: redis://redis
  port: 6379

micronaut:
  session:
    max-inactive-interval: PT1M
    http:
      redis:
        enabled: true
        # The Redis namespace to write sessions to
        namespace: 'app:sessions'
        # Write session changes in the background
        write-mode: BACKGROUND
        # Disable programmatic activation of keyspace events
        enable-keyspace-events: false
        valueSerializer: io.micronaut.jackson.serialize.JacksonObjectSerializer

Login, keep refreshing the page, get sent back to login.

Environment Information

openjdk:11-jre-slim container
ubuntu 20.04.2 + openjdk-16.0.1

Example Application

No response

Version

2.5.9

Server freezes after hitting /health endpoint

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

  1. Clone the repo
git clone [email protected]:chrisparton1991/micronaut-redis-session-lockup.git
  1. Launch a local Redis instance
docker pull redis:6.2.1
docker run --publish 6379:6379 redis:6.2.1
  1. Launch the Micronaut server
./gradlew run
  1. Repeatedly hit the /health endpoint with a session (doesn't have to be a valid session)
 curl -H "X-Auth-Token: foo" http://localhost:8080/health

Expected Behaviour

The health endpoint should return a JSON response every time, with no disruption to service.

Actual Behaviour

Eventually (seems like on the 8th call for this example), the endpoint stops responding. The endpoint will only respond if it doesn't need to communicate with Redis, e.g. by removing the X-Auth-Token header from the curl request.

Authenticated API calls (to any endpoint) no longer return a response, effectively locking out all authenticated users.

Environment Information

  • Operating System: Windows 10 Pro (also reproduced on Linux in an Azure App Service)
  • Micronaut Version: 2.4.2
  • JDK Version: Zulu JDK 11.0.7 and AdoptOpenJdk 11.0.7

Example Application

The application is a barebones project generated using Micronaut Launch with the following settings:
launch

The second commit to the repo includes all necessary
Repo URL:
https://github.com/chrisparton1991/micronaut-redis-session-lockup

Video demonstrating lockup:
https://imgur.com/a/8ViC4sa

Cannot connect to Google Memory Store - Redis

Steps to Reproduce

  1. Deploy an app into Google Cloud that it tries to connect to Memory Store with Redis

Expected Behaviour

Until micronaut-redis 4.x the app connects to Memory Store without problems

Actual Behaviour

When I updated to micronaut 2.4, micronaut-redis was updates to version 4.0. Then I tried to deploy the app into Google Cloud but it didn't start because the redis-client couldn't connect to Memory Store. I received the following message "ERR unknown command client, with args beginning with: setname, bull:cGVyc2lzdA=="

The problem is that Google Cloud Memory Store blocks certain commands as Client. https://cloud.google.com/memorystore/docs/redis/product-constraints

I asked in Lettuce's gitter channel and they answered me the following message

image

I think that micronaut-redis is setting the client name and It is not posible to let it blank

Environment Information

  • Micronaut Version: 2.4

Calling a cached entity from a filter will cause RedisCommandTimeoutException

I have a service method that is cached using the @Cacheable annotation. When this method is called in a controller it works fine and the cached element is read correctly from redis.
If the same method is added as part of an HttpFilter, all the requests intercepted by the filter and after a minute I get a RedisCommandTimeoutException.
Follows the stack trace and the logs (I've enabled ConnectionWatchdog in debug mode).
I've also attached the thread dump
redis-thread-dump.log

09:12:55.767 [main] INFO  io.micronaut.runtime.Micronaut - Startup completed in 5053ms. Server Running: http://localhost:8200
09:13:53.445 [pool-1-thread-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:53.445 [pool-1-thread-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:53.445 [pool-1-thread-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:13:53.445 [pool-1-thread-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:13:53.445 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:53.445 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:53.446 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:53.446 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:53.449 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 4 bytes, 1 commands in the stack
09:13:53.449 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 4 bytes, 1 commands in the stack
09:13:53.449 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:13:53.449 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:13:53.450 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:53.450 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:53.450 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:53.450 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.557 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, [id: 0xbff15b4e] (inactive), chid=0x3] channelRegistered()
09:13:55.557 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, [id: 0xbff15b4e] (inactive), chid=0x3] channelRegistered()
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelActive()
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelActive()
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] activating endpoint
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] activating endpoint
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] flushCommands()
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] flushCommands()
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] flushCommands() Flushing 0 commands
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] flushCommands() Flushing 0 commands
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:13:55.558 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelActive() done
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelActive() done
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() done
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() done
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@4f390c0b)
09:13:55.559 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@4f390c0b)
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Received: 5 bytes, 1 commands in the stack
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Received: 5 bytes, 1 commands in the stack
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Stack contains: 1 commands
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Stack contains: 1 commands
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.561 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() done
09:13:55.562 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() done
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Received: 5 bytes, 1 commands in the stack
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Received: 5 bytes, 1 commands in the stack
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Stack contains: 1 commands
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Stack contains: 1 commands
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.564 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.577 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.577 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.578 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() done
09:13:55.578 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] write() done
09:13:55.578 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.578 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.578 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.578 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Received: 7 bytes, 1 commands in the stack
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Received: 7 bytes, 1 commands in the stack
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Stack contains: 1 commands
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] Stack contains: 1 commands
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:13:55.580 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:13:55.581 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] closeAsync()
09:13:55.581 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] closeAsync()
09:13:55.588 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelInactive()
09:13:55.588 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelInactive()
09:13:55.588 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, [id: 0x2f1001db] (inactive), chid=0x4] channelRegistered()
09:13:55.588 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, [id: 0x2f1001db] (inactive), chid=0x4] channelRegistered()
09:13:55.589 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] deactivating endpoint handler
09:13:55.589 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, epid=0x3] deactivating endpoint handler
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelActive()
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelActive()
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] activating endpoint
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] activating endpoint
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] flushCommands()
09:13:55.589 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] flushCommands()
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] flushCommands() Flushing 0 commands
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] flushCommands() Flushing 0 commands
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelInactive() done
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelInactive() done
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelActive() done
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelActive() done
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelUnregistered()
09:13:55.591 [lettuce-nioEventLoop-4-3] DEBUG i.l.core.protocol.CommandHandler - [channel=0x264f4b7a, /127.0.0.1:53421 -> localhost/127.0.0.1:6379, chid=0x3] channelUnregistered()
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.591 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.592 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() done
09:13:55.592 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() done
09:13:55.592 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@94037e0)
09:13:55.592 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@94037e0)
09:13:55.593 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Received: 5 bytes, 1 commands in the stack
09:13:55.593 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Received: 5 bytes, 1 commands in the stack
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Stack contains: 1 commands
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Stack contains: 1 commands
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() done
09:13:55.594 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() done
09:13:55.595 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.595 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.595 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() done
09:13:55.595 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] write() done
09:13:55.595 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.595 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Received: 5 bytes, 2 commands in the stack
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Received: 5 bytes, 2 commands in the stack
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Stack contains: 2 commands
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Stack contains: 2 commands
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.596 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:13:55.597 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Received: 7 bytes, 1 commands in the stack
09:13:55.597 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Received: 7 bytes, 1 commands in the stack
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Stack contains: 1 commands
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] Stack contains: 1 commands
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] closeAsync()
09:13:55.598 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] closeAsync()
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelInactive()
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelInactive()
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] deactivating endpoint handler
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, epid=0x4] deactivating endpoint handler
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelInactive() done
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelInactive() done
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelUnregistered()
09:13:55.601 [lettuce-nioEventLoop-4-4] DEBUG i.l.core.protocol.CommandHandler - [channel=0xf4db485d, /127.0.0.1:53422 -> localhost/127.0.0.1:6379, chid=0x4] channelUnregistered()
<===========--> 91% EXECUTING [2m 9s]
> IDLE
> IDLE
09:14:06.327 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.327 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.327 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.327 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.327 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.327 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.329 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.329 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 5 bytes, 1 commands in the stack
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 5 bytes, 1 commands in the stack
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=HMSET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.331 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.332 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.332 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.332 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.332 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.332 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.332 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.333 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe9167a76, /127.0.0.1:53404 -> localhost/127.0.0.1:6379, chid=0x2] Received: 106 bytes, 0 commands in the stack
09:14:06.333 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.333 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe9167a76, /127.0.0.1:53404 -> localhost/127.0.0.1:6379, chid=0x2] Received: 106 bytes, 0 commands in the stack
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decode null
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decode null
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decoded null, empty stack: true
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decoded null, empty stack: true
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.334 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.334 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.335 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.335 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.335 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.335 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.336 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.336 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.336 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.336 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.336 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.336 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 13 bytes, 5 commands in the stack
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 13 bytes, 5 commands in the stack
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 5 commands
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 5 commands
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PUBLISH, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PUBLISH, output=IntegerOutput [output=2, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.337 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PUBLISH, output=IntegerOutput [output=2, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 4 commands
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 4 commands
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=EXPIRE, output=BooleanOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=EXPIRE, output=BooleanOutput [output=true, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=EXPIRE, output=BooleanOutput [output=true, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 3 commands
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 3 commands
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=SET, output=VoidOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 4 bytes, 2 commands in the stack
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 4 bytes, 2 commands in the stack
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 2 commands
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 2 commands
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=ZADD, output=IntegerOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=ZADD, output=IntegerOutput [output=1, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.338 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=ZADD, output=IntegerOutput [output=1, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.342 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 595 bytes, 1 commands in the stack
09:14:06.342 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 595 bytes, 1 commands in the stack
09:14:06.343 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:14:06.343 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:14:06.343 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.343 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.343 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=HGETALL, output=MapOutput [output={[B@235a930c=[B@141577d2, [B@13bb35c5=[B@50d7dc8, [B@1f41d909=[B@5621cab2, [B@29ff5013=[B@5b404049, [B@5eca74d3=[B@64d40714}, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.343 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=HGETALL, output=MapOutput [output={[B@235a930c=[B@141577d2, [B@13bb35c5=[B@50d7dc8, [B@1f41d909=[B@5621cab2, [B@29ff5013=[B@5b404049, [B@5eca74d3=[B@64d40714}, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
<===========--> 91% EXECUTING [2m 10s]
09:14:06.688 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.688 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.689 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.689 [nioEventLoopGroup-5-2] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.689 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.689 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.689 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.689 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 595 bytes, 1 commands in the stack
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Received: 595 bytes, 1 commands in the stack
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] Stack contains: 1 commands
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=HGETALL, output=MapOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=HGETALL, output=MapOutput [output={[B@794536ba=[B@7b6e5fb, [B@3034f3eb=[B@1ebb2ae1, [B@720d6337=[B@9c92da4, [B@40aaf9f3=[B@4eb92c10, [B@100ae7ba=[B@7e908101}, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.691 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=HGETALL, output=MapOutput [output={[B@794536ba=[B@7b6e5fb, [B@3034f3eb=[B@1ebb2ae1, [B@720d6337=[B@9c92da4, [B@40aaf9f3=[B@4eb92c10, [B@100ae7ba=[B@7e908101}, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:06.694 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.694 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.695 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.695 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:06.695 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.695 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:06.695 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:06.695 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:53.440 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:53.440 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:53.441 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:53.441 [pool-1-thread-4] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:14:55.614 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, [id: 0x7070ed5a] (inactive), chid=0x5] channelRegistered()
09:14:55.614 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, [id: 0x7070ed5a] (inactive), chid=0x5] channelRegistered()
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelActive()
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelActive()
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] activating endpoint
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] activating endpoint
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] flushCommands()
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] flushCommands()
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] flushCommands() Flushing 0 commands
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] flushCommands() Flushing 0 commands
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:14:55.615 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelActive() done
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelActive() done
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() done
09:14:55.616 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() done
09:14:55.617 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@734a727e)
09:14:55.617 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@734a727e)
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Received: 5 bytes, 1 commands in the stack
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Received: 5 bytes, 1 commands in the stack
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Stack contains: 1 commands
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Stack contains: 1 commands
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() done
09:14:55.620 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() done
09:14:55.621 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.621 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.621 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() done
09:14:55.621 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] write() done
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Received: 5 bytes, 2 commands in the stack
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Received: 5 bytes, 2 commands in the stack
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Stack contains: 2 commands
09:14:55.622 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Stack contains: 2 commands
09:14:55.623 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.623 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.623 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.623 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.637 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Received: 7 bytes, 1 commands in the stack
09:14:55.637 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Received: 7 bytes, 1 commands in the stack
09:14:55.638 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Stack contains: 1 commands
09:14:55.638 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] Stack contains: 1 commands
09:14:55.638 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:14:55.638 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, [id: 0x0d7c8aeb] (inactive), chid=0x6] channelRegistered()
09:14:55.638 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:14:55.638 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, [id: 0x0d7c8aeb] (inactive), chid=0x6] channelRegistered()
09:14:55.639 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:14:55.639 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:14:55.639 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] closeAsync()
09:14:55.639 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] closeAsync()
09:14:55.641 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelActive()
09:14:55.641 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelActive()
09:14:55.642 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelInactive()
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:14:55.642 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelInactive()
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] activating endpoint
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] activating endpoint
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] flushCommands()
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] flushCommands()
09:14:55.642 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] deactivating endpoint handler
09:14:55.642 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, epid=0x5] deactivating endpoint handler
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] flushCommands() Flushing 0 commands
09:14:55.642 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] flushCommands() Flushing 0 commands
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelInactive() done
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelInactive() done
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelActive() done
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelActive() done
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelUnregistered()
09:14:55.643 [lettuce-nioEventLoop-4-5] DEBUG i.l.core.protocol.CommandHandler - [channel=0x510df688, /127.0.0.1:53462 -> localhost/127.0.0.1:6379, chid=0x5] channelUnregistered()
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:14:55.643 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:14:55.644 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.644 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.644 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() done
09:14:55.644 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() done
09:14:55.644 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@1004200d)
09:14:55.644 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@1004200d)
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Received: 5 bytes, 1 commands in the stack
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Received: 5 bytes, 1 commands in the stack
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Stack contains: 1 commands
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Stack contains: 1 commands
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.646 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.647 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() done
09:14:55.647 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() done
09:14:55.647 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.647 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.648 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() done
09:14:55.648 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.648 [pool-1-thread-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] write() done
09:14:55.648 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:14:55.648 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.648 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:14:55.649 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Received: 5 bytes, 2 commands in the stack
09:14:55.649 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Received: 5 bytes, 2 commands in the stack
09:14:55.649 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Stack contains: 2 commands
09:14:55.649 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Stack contains: 2 commands
09:14:55.649 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.649 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:14:55.650 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.650 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:14:55.651 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Received: 7 bytes, 1 commands in the stack
09:14:55.651 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Received: 7 bytes, 1 commands in the stack
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Stack contains: 1 commands
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] Stack contains: 1 commands
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] closeAsync()
09:14:55.652 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] closeAsync()
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelInactive()
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelInactive()
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] deactivating endpoint handler
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, epid=0x6] deactivating endpoint handler
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelInactive() done
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelInactive() done
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelUnregistered()
09:14:55.653 [lettuce-nioEventLoop-4-6] DEBUG i.l.core.protocol.CommandHandler - [channel=0xda78fa55, /127.0.0.1:53463 -> localhost/127.0.0.1:6379, chid=0x6] channelUnregistered()
09:15:06.724 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:06.724 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:06.724 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:06.724 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:06.725 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:06.725 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=COMMAND, output=ArrayOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:06.725 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:15:06.725 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:15:26.934 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe9167a76, /127.0.0.1:53404 -> localhost/127.0.0.1:6379, chid=0x2] Received: 140 bytes, 0 commands in the stack
09:15:26.934 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe9167a76, /127.0.0.1:53404 -> localhost/127.0.0.1:6379, chid=0x2] Received: 140 bytes, 0 commands in the stack
09:15:26.934 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decode null
09:15:26.934 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decode null
09:15:26.935 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decoded null, empty stack: true
09:15:26.935 [lettuce-nioEventLoop-4-2] DEBUG i.l.core.protocol.RedisStateMachine - Decoded null, empty stack: true
09:15:53.445 [pool-1-thread-16] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:53.445 [pool-1-thread-16] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() writeAndFlush command AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:53.446 [pool-1-thread-16] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:15:53.446 [pool-1-thread-16] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, epid=0x1] write() done
09:15:55.671 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, [id: 0x4a4e1fbd] (inactive), chid=0x7] channelRegistered()
09:15:55.671 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, [id: 0x4a4e1fbd] (inactive), chid=0x7] channelRegistered()
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelActive()
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelActive()
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] activating endpoint
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] activating endpoint
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] flushCommands()
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] flushCommands()
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] flushCommands() Flushing 0 commands
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] flushCommands() Flushing 0 commands
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelActive() done
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelActive() done
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() done
09:15:55.672 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() done
09:15:55.673 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@7c6fe2aa)
09:15:55.673 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@7c6fe2aa)
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Received: 5 bytes, 1 commands in the stack
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Received: 5 bytes, 1 commands in the stack
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Stack contains: 1 commands
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Stack contains: 1 commands
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() done
09:15:55.674 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() done
09:15:55.675 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.675 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.675 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() done
09:15:55.675 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] write() done
09:15:55.675 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.675 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandEncoder - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Received: 5 bytes, 2 commands in the stack
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Received: 5 bytes, 2 commands in the stack
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Stack contains: 2 commands
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Stack contains: 2 commands
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.676 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.677 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Received: 7 bytes, 1 commands in the stack
09:15:55.677 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Received: 7 bytes, 1 commands in the stack
09:15:55.677 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Stack contains: 1 commands
09:15:55.677 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] Stack contains: 1 commands
09:15:55.677 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:15:55.677 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:15:55.678 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:15:55.678 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:15:55.678 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] closeAsync()
09:15:55.678 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] closeAsync()
09:15:55.685 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelInactive()
09:15:55.685 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelInactive()
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] deactivating endpoint handler
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, epid=0x7] deactivating endpoint handler
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelInactive() done
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelInactive() done
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelUnregistered()
09:15:55.686 [lettuce-nioEventLoop-4-7] DEBUG i.l.core.protocol.CommandHandler - [channel=0xe0e2b232, /127.0.0.1:53491 -> localhost/127.0.0.1:6379, chid=0x7] channelUnregistered()
09:15:55.686 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, [id: 0x72a99ed9] (inactive), chid=0x8] channelRegistered()
09:15:55.686 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, [id: 0x72a99ed9] (inactive), chid=0x8] channelRegistered()
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelActive()
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelActive()
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] activateEndpointAndExecuteBufferedCommands 0 command(s) buffered
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] activating endpoint
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] activating endpoint
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] flushCommands()
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] flushCommands()
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] flushCommands() Flushing 0 commands
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] flushCommands() Flushing 0 commands
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelActive()
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelActive() done
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelActive() done
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() writeAndFlush command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] write(ctx, AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], promise)
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.687 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.688 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() done
09:15:55.688 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() done
09:15:55.688 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@7c21df5f)
09:15:55.688 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] userEventTriggered(ctx, io.lettuce.core.ConnectionEvents$Activated@7c21df5f)
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Received: 5 bytes, 1 commands in the stack
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Received: 5 bytes, 1 commands in the stack
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Stack contains: 1 commands
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Stack contains: 1 commands
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=AUTH, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() writeAndFlush command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] write(ctx, AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379] writing command AsyncCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() done
09:15:55.689 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() done
09:15:55.690 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.690 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() writeAndFlush command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.690 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() done
09:15:55.690 [pool-1-thread-15] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] write() done
09:15:55.691 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.691 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] write(ctx, SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command], promise)
09:15:55.691 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.691 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandEncoder - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379] writing command SubscriptionCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.Command]
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Received: 5 bytes, 2 commands in the stack
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Received: 5 bytes, 2 commands in the stack
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Stack contains: 2 commands
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Stack contains: 2 commands
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand]
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.692 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=CLIENT, output=StatusOutput [output=OK, error='null'], commandType=io.lettuce.core.protocol.AsyncCommand], empty stack: true
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Received: 7 bytes, 1 commands in the stack
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Received: 7 bytes, 1 commands in the stack
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Stack contains: 1 commands
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] Stack contains: 1 commands
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decode LatencyMeteredCommand [type=PING, output=StatusOutput [output=null, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.RedisStateMachine - Decoded LatencyMeteredCommand [type=PING, output=StatusOutput [output=PONG, error='null'], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand], empty stack: true
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] closeAsync()
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] closeAsync()
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelInactive()
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelInactive()
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] deactivating endpoint handler
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.DefaultEndpoint - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, epid=0x8] deactivating endpoint handler
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelInactive() done
09:15:55.694 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelInactive() done
09:15:55.695 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:15:55.695 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] channelInactive()
09:15:55.695 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:15:55.695 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.ConnectionWatchdog - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, last known addr=localhost/127.0.0.1:6379] Reconnect scheduling disabled
09:15:55.695 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelUnregistered()
09:15:55.695 [lettuce-nioEventLoop-4-8] DEBUG i.l.core.protocol.CommandHandler - [channel=0x274991a2, /127.0.0.1:53492 -> localhost/127.0.0.1:6379, chid=0x8] channelUnregistered()
09:16:06.730 [lettuce-nioEventLoop-4-1] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: Command timed out after 1 minute(s)
io.lettuce.core.RedisCommandTimeoutException: Command timed out after 1 minute(s)
        at io.lettuce.core.ExceptionFactory.createTimeoutException(ExceptionFactory.java:51)
        at io.lettuce.core.LettuceFutures.awaitOrCancel(LettuceFutures.java:114)
        at io.lettuce.core.FutureSyncInvocationHandler.handleInvocation(FutureSyncInvocationHandler.java:69)
        at io.lettuce.core.internal.AbstractInvocationHandler.invoke(AbstractInvocationHandler.java:80)
        at com.sun.proxy.$Proxy15.command(Unknown Source)
        at io.lettuce.core.dynamic.RedisCommandFactory.getCommands(RedisCommandFactory.java:136)
        at io.lettuce.core.dynamic.RedisCommandFactory.<init>(RedisCommandFactory.java:127)
        at io.lettuce.core.dynamic.RedisCommandFactory.<init>(RedisCommandFactory.java:111)
        at io.micronaut.configuration.lettuce.cache.RedisCache.syncCommands(RedisCache.java:235)
        at io.micronaut.configuration.lettuce.cache.RedisCache.getCommands(RedisCache.java:93)
        at io.micronaut.configuration.lettuce.cache.RedisCache.get(RedisCache.java:112)
        at io.micronaut.cache.interceptor.CacheInterceptor.interceptSync(CacheInterceptor.java:174)
        at io.micronaut.cache.interceptor.CacheInterceptor.intercept(CacheInterceptor.java:125)
        at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:69)
        at com.mycompany.myapp.v1.adminclient.$OrganisationServiceDefinition$Intercepted.getOrganisation(Unknown Source)
        at com.mycompany.myapp.v1.adminclient.AdminManagementService.getOrganisation(AdminManagementService.kt:25)
        at com.mycompany.myapp.v1.common.filter.OrganisationStatusFilter.doFilter(OrganisationStatusFilter.kt:25)
        at io.micronaut.http.server.netty.RoutingInBoundHandler$4.proceed(RoutingInBoundHandler.java:1569)
        at io.micronaut.http.filter.OncePerRequestHttpServerFilter.doFilter(OncePerRequestHttpServerFilter.java:37)
        at io.micronaut.http.filter.HttpServerFilter.doFilter(HttpServerFilter.java:48)
        at io.micronaut.http.server.netty.RoutingInBoundHandler$4.proceed(RoutingInBoundHandler.java:1569)
        at io.micronaut.http.filter.OncePerRequestHttpServerFilter.doFilter(OncePerRequestHttpServerFilter.java:37)
        at io.micronaut.http.filter.HttpServerFilter.doFilter(HttpServerFilter.java:48)
        at io.micronaut.http.server.netty.RoutingInBoundHandler$4.proceed(RoutingInBoundHandler.java:1569)
        at io.micronaut.http.server.context.ServerRequestContextFilter.lambda$doFilter$0(ServerRequestContextFilter.java:42)
        at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:103)
        at io.micronaut.http.server.context.ServerRequestContextFilter.doFilter(ServerRequestContextFilter.java:41)
        at io.micronaut.http.filter.HttpServerFilter.doFilter(HttpServerFilter.java:48)
        at io.micronaut.http.server.netty.RoutingInBoundHandler$4.proceed(RoutingInBoundHandler.java:1569)
        at com.mycompany.myapp.commons.http.filter.PathTraversalCheckingFilter.doFilter(PathTraversalCheckingFilter.kt:21)
        at io.micronaut.http.filter.HttpServerFilter.doFilter(HttpServerFilter.java:48)
        at io.micronaut.http.server.netty.RoutingInBoundHandler$4.proceed(RoutingInBoundHandler.java:1569)
        at com.mycompany.myapp.v1.common.filter.InvalidTenantFilter.doFilter(InvalidTenantFilter.kt:28)
        at io.micronaut.http.server.netty.RoutingInBoundHandler$4.proceed(RoutingInBoundHandler.java:1569)
        at io.micronaut.http.server.cors.CorsFilter.doFilter(CorsFilter.java:88)
        at io.micronaut.http.filter.HttpServerFilter.doFilter(HttpServerFilter.java:48)
        at io.micronaut.http.server.netty.RoutingInBoundHandler.filterPublisher(RoutingInBoundHandler.java:1573)
        at io.micronaut.http.server.netty.RoutingInBoundHandler.exceptionCaughtInternal(RoutingInBoundHandler.java:396)
        at io.micronaut.http.server.netty.RoutingInBoundHandler.access$700(RoutingInBoundHandler.java:140)
        at io.micronaut.http.server.netty.RoutingInBoundHandler$3.doOnError(RoutingInBoundHandler.java:1303)
        at io.micronaut.core.async.subscriber.CompletionAwareSubscriber.onError(CompletionAwareSubscriber.java:63)
        at io.reactivex.internal.util.HalfSerializer.onError(HalfSerializer.java:70)
        at io.reactivex.internal.subscribers.StrictSubscriber.onError(StrictSubscriber.java:103)
        at io.reactivex.internal.subscribers.BasicFuseableSubscriber.onError(BasicFuseableSubscriber.java:101)
        at io.reactivex.internal.operators.flowable.FlowableSwitchMap$SwitchMapSubscriber.drain(FlowableSwitchMap.java:221)
        at io.reactivex.internal.operators.flowable.FlowableSwitchMap$SwitchMapSubscriber.onError(FlowableSwitchMap.java:142)
        at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.onError(FlowableSubscribeOn.java:102)
        at io.micronaut.http.context.ServerRequestTracingPublisher$1.lambda$onError$2(ServerRequestTracingPublisher.java:65)
        at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
        at io.micronaut.http.context.ServerRequestTracingPublisher$1.onError(ServerRequestTracingPublisher.java:65)
        at io.reactivex.internal.util.HalfSerializer.onError(HalfSerializer.java:70)
        at io.reactivex.internal.subscribers.StrictSubscriber.onError(StrictSubscriber.java:103)
        at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onError(RxInstrumentedSubscriber.java:83)
        at io.reactivex.internal.subscribers.BasicFuseableSubscriber.onError(BasicFuseableSubscriber.java:101)
        at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onError(RxInstrumentedSubscriber.java:83)
        at io.reactivex.internal.operators.flowable.FlowableSwitchMap$SwitchMapSubscriber.drain(FlowableSwitchMap.java:221)
        at io.reactivex.internal.operators.flowable.FlowableSwitchMap$SwitchMapSubscriber.onError(FlowableSwitchMap.java:142)
        at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onError(RxInstrumentedSubscriber.java:83)
        at io.reactivex.internal.operators.flowable.FlowableSwitchMap$SwitchMapSubscriber.drain(FlowableSwitchMap.java:221)
        at io.reactivex.internal.operators.flowable.FlowableSwitchMap$SwitchMapSubscriber.onError(FlowableSwitchMap.java:142)
        at io.reactivex.internal.operators.flowable.FlowableSwitchMap$SwitchMapSubscriber.onNext(FlowableSwitchMap.java:117)
        at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onNext(RxInstrumentedSubscriber.java:68)
        at io.micronaut.core.async.publisher.CompletableFuturePublisher$CompletableFutureSubscription.lambda$request$0(CompletableFuturePublisher.java:87)
        at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
        at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
        at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
        at io.micronaut.configuration.lettuce.session.RedisSessionStore.lambda$findSessionInternal$15(RedisSessionStore.java:400)
        at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:859)
        at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:837)
        at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
        at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
        at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:122)
        at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)
        at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:59)
        at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:654)
        at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:614)
        at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:565)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
        at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
        at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163)
        at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650)
        at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
        at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
        at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
        at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
        at java.base/java.lang.Thread.run(Thread.java:834)
09:16:06.740 [lettuce-nioEventLoop-4-1] DEBUG i.l.core.protocol.CommandHandler - [channel=0x96719229, /127.0.0.1:53403 -> localhost/127.0.0.1:6379, chid=0x1] write(ctx, AsyncCommand [type=ZRANGEBYSCORE, output=KeyListOutput [output=[], error='null'], commandType=io.lettuce.core.protocol.Command], promise)
[redis-thread-dump.log](https://github.com/micronaut-projects/micronaut-redis/files/4496322/redis-thread-dump.log)

Create BOM

Issue description

Create BOM for redis

Support Top Level Value/Key Codecs

The default client and factory use a simple codec <String, String>. It is pretty easy to override this, however it isn't documented and the ability to specify a key/value codec could be simplified.

I had to do the following to get a custom protobuf session codec working where the UserSession is a proto we are using. Seems like overkill to have to redefine the entire class to achieve this result.

Also there isn't examples or documentation on the https://micronaut-projects.github.io/micronaut-redis/latest/guide/ site for serializing objects that do not use the session store/jackson. Perhaps the jackson/other serialization could simply be added as top level option like

redis:
    valueSerializer: io.micronaut.jackson.serialize.JacksonObjectSerializer
    keySerializer: io.micronaut.jackson.serialize.JacksonObjectSerializer #or string etc
package xxxxxxxxxxxx;

import xxxxxxxxxxxx.UserSession;
import io.lettuce.core.RedisClient;
import io.lettuce.core.RedisURI;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.codec.RedisCodec;
import io.lettuce.core.pubsub.StatefulRedisPubSubConnection;
import io.micronaut.configuration.lettuce.AbstractRedisConfiguration;
import io.micronaut.configuration.lettuce.DefaultRedisClientFactory;
import io.micronaut.configuration.lettuce.DefaultRedisConfiguration;
import io.micronaut.context.annotation.Bean;
import io.micronaut.context.annotation.Factory;
import io.micronaut.context.annotation.Primary;
import io.micronaut.context.annotation.Replaces;
import io.micronaut.context.annotation.Requires;

import javax.inject.Singleton;
import java.nio.ByteBuffer;
import java.nio.charset.Charset;
import java.util.Optional;

@Requires(beans = DefaultRedisConfiguration.class)
@Singleton
@Factory
@Replaces(DefaultRedisClientFactory.class)
public class UserSessionRedisClientFactory {

    @Bean(preDestroy = "shutdown")
    @Singleton
    @Primary
    public RedisClient redisClient(AbstractRedisConfiguration config) {
        Optional<RedisURI> uri = config.getUri();
        return uri.map(RedisClient::create)
                .orElseGet(() -> RedisClient.create(config));
    }

    /**
     * Creates the {@link StatefulRedisConnection} from the {@link RedisClient}.
     *
     * @param redisClient The {@link RedisClient}
     * @return The {@link StatefulRedisConnection}
     */
    @Bean(preDestroy = "close")
    @Singleton
    @Primary
    public StatefulRedisConnection<String, UserSession> redisConnection(RedisClient redisClient) {
        return redisClient.connect(new UserSessionCodec());
    }

    /**
     * Creates the {@link StatefulRedisPubSubConnection} from the {@link RedisClient}.
     *
     * @param redisClient The {@link RedisClient}
     * @return The {@link StatefulRedisPubSubConnection}
     */
    @Bean(preDestroy = "close")
    @Singleton
    public StatefulRedisPubSubConnection<String, String> redisPubSubConnection(RedisClient redisClient) {
        return redisClient.connectPubSub();
    }

    public class UserSessionCodec implements RedisCodec<String, UserSession> {
        private Charset charset = Charset.forName("UTF-8");

        @Override
        public String decodeKey(ByteBuffer bytes) {
            return charset.decode(bytes).toString();
        }

        @Override
        public UserSession decodeValue(ByteBuffer bytes) {
            try {
                byte[] array = new byte[bytes.remaining()];
                bytes.get(array);
                return UserSession.parseFrom(array);
            } catch (Exception e) {
                return null;
            }
        }

        @Override
        public ByteBuffer encodeKey(String key) {
            return charset.encode(key);
        }

        @Override
        public ByteBuffer encodeValue(UserSession value) {
            return ByteBuffer.wrap(value.toByteArray());
        }
    }
}

password is not passed

Expected Behavior

Class AbstractRedisClientFactory has the method public RedisClient redisClient(AbstractRedisConfiguration config, @Nullable ClientResources optionalClientResources, @Nullable List<ClientResourcesMutator> mutators) { //... . The method have the following expression: Optional<RedisURI> uri = config.getUri(); The problem is that password is not copied, when I configured in application.yaml For example:

redis:
  uri: redis://localhost
  password: bla-bla

So I receive error: io.lettuce.core.RedisCommandExecutionException: NOAUTH Authentication required.

Actual Behaviour

I expect that config.getUri(); return the password writed in application.yaml

Steps To Reproduce

  1. Clone https://github.com/rost5000/demo-lettuce-micronaut-bug
  2. Run docker-compose up -d
  3. Run micronaut application
  4. Go to http://localhost:8080/health
  5. You can see the following string in console: My Password from application.yaml: null. It is not expected password that I wrote.

Environment Information

  • Windows 10
  • Jdk 17 graalvm

Example Application

https://github.com/rost5000/demo-lettuce-micronaut-bug

Version

v3.5.1

Support Lettuce connection pooling

Feature description

Lettuce supports connection pooling. We would like to have this functionality in the micronaut-redis. Switching from micronaut's RedisCache to manual queries with connection pool demonstrated improved performance.

Redis on Graal: I/O error occurred during deserialization: java.util.ArrayList; no valid constructor

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

  1. Create a new app with: mn create-app me.jics.backend -b maven -f graalvm,lombok,openapi,redis-lettuce,cache-ehcache -t spock
  2. Configure Redis cache as shown in the documentation
  3. Run ./mvnw package -Dpackaging=native-image

Expected Behaviour

after starting it should caching the result

Actual Behaviour

Doesn't caching anything.
With this error:

[lettuce-nioEventLoop-5-4] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: I/O error occurred during deserialization: java.util.ArrayList; no valid constructor
io.micronaut.core.serialize.exceptions.SerializationException: I/O error occurred during deserialization: java.util.ArrayList; no valid constructor

Environment Information

  • Operating System: Arch Linux

  • Micronaut Version: 2.5.0

  • JDK Version:

     $ native-image --version
     GraalVM 21.1.0 Java 11 CE (Java Version 11.0.11+8-jvmci-21.1-b05)
    
     $ java -version
      openjdk version "11.0.11" 2021-04-20
      OpenJDK Runtime Environment GraalVM CE 21.1.0 (build 11.0.11+8-jvmci-21.1-b05)
      OpenJDK 64-Bit Server VM GraalVM CE 21.1.0 (build 11.0.11+8-jvmci-21.1-b05, mixed mode, sharing)
    

Example Application

Complete stacktrace

15:32:30.361 [default-nioEventLoopGroup-1-5] INFO  me.jics.StoreController - Entering to StoreController.getAll
15:32:30.363 [lettuce-nioEventLoop-5-4] ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: I/O error occurred during deserialization: java.util.ArrayList; no valid constructor
io.micronaut.core.serialize.exceptions.SerializationException: I/O error occurred during deserialization: java.util.ArrayList; no valid constructor
	at io.micronaut.core.serialize.JdkSerializer.deserialize(JdkSerializer.java:82)
	at io.micronaut.core.serialize.ObjectSerializer.deserialize(ObjectSerializer.java:109)
	at io.micronaut.core.serialize.ObjectSerializer.deserialize(ObjectSerializer.java:127)
	at io.micronaut.configuration.lettuce.cache.RedisCache$RedisAsyncCache.getWithExpire(RedisCache.java:407)
	at io.micronaut.configuration.lettuce.cache.RedisCache$RedisAsyncCache.lambda$get$0(RedisCache.java:330)
	at java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1072)
	at java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:506)
	at java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2073)
	at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:122)
	at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)
	at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:737)
	at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:672)
	at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:589)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:829)
	at com.oracle.svm.core.thread.JavaThreads.threadStartRoutine(JavaThreads.java:553)
	at com.oracle.svm.core.posix.thread.PosixJavaThreads.pthreadStartRoutine(PosixJavaThreads.java:192)
Caused by: java.io.InvalidClassException: java.util.ArrayList; no valid constructor
	at java.io.ObjectStreamClass$ExceptionInfo.newInvalidClassException(ObjectStreamClass.java:159)
	at java.io.ObjectStreamClass.checkDeserialize(ObjectStreamClass.java:875)
	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2170)
	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1679)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:493)
	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:451)
	at io.micronaut.core.serialize.JdkSerializer.deserialize(JdkSerializer.java:72)
	... 30 common frames omitted

Upgrade from 2.3.3 to 2.4.1 cannot deploy to GCP with Google Redis Memorystore

Hi all, I've bumped all versions to 2.4.1. I'm deploying to GCP and I'm making use of Redis Google Memory Store.

In Application.yml:

redis:
  uri: "${REDIS_URL:`redis://localhost`}"

where REDIS_URL is redis://x.x.x.x

The application refuses to start with a Redis error:

ERR unknown command `CLIENT`, with args beginning with: `SETNAME`, `application

I found a Gitlabhq commit mentioning the same issue. It states:

Google Cloud Memorystore [does not support the Redis CLIENT
command.]

Reverting Micronaut parent back to 2.3.3 "fixes" it.

Full stack trace:

Path Taken: DoubleBookingRepository.connection
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1970)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2724)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2710)
	at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2382)
	at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2356)
	at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1261)
	at io.micronaut.context.AbstractBeanDefinition.getBeanForField(AbstractBeanDefinition.java:1699)
	at io.micronaut.context.AbstractBeanDefinition.getBeanForField(AbstractBeanDefinition.java:1456)
	at xxx.external.calendar.$DoubleBookingRepositoryDefinition.injectBean(Unknown Source)
	at xxx.external.calendar.$DoubleBookingRepositoryDefinition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1943)
	at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2724)
	at io.micronaut.context.DefaultBeanContext.loadContextScopeBean(DefaultBeanContext.java:2260)
	at io.micronaut.context.DefaultBeanContext.initializeContext(DefaultBeanContext.java:1559)
	... 6 common frames omitted
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to 10.155.159.51/<unresolved>:6379
	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
	at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:320)
	at io.lettuce.core.RedisClient.connect(RedisClient.java:211)
	at io.lettuce.core.RedisClient.connect(RedisClient.java:196)
	at io.micronaut.configuration.lettuce.AbstractRedisClientFactory.redisConnection(AbstractRedisClientFactory.java:70)
	at io.micronaut.configuration.lettuce.DefaultRedisClientFactory.redisConnection(DefaultRedisClientFactory.java:55)
	at io.micronaut.configuration.lettuce.$DefaultRedisClientFactory$RedisConnection1Definition.build(Unknown Source)
	at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1943)
	... 19 common frames omitted
Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command `CLIENT`, with args beginning with: `SETNAME`, `application`,
	at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:137)
	at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:110)
	at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120)
	at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)
	at io.lettuce.core.protocol.CommandWrapper.complete(CommandWrapper.java:63)
	at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:720)
	at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:655)
	at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:572)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:832)

Micronaut-Redis waits forever to select database or authenticate if Redis does not respond to commands

Steps to Reproduce

See README.md at https://github.com/andersaaberg/test-redis-timeout

How to reproduce that Micronaut-Redis waits forever to select database or authenticate

Listen on Redis port in another terminal:
nc -l 6379 -C

Run micronaut application:
./gradlew run

Call controller in another terminal:
curl http://localhost/test

Expected result:
Should throw exception after 5s, but waits forever. This problem does not exist in Lettuce, so it must be caused by Micronaut-Redis

How this project is created

sdk u micronaut 2.0.1
mn create-app --lang=groovy test-redis-timeout
cd test-redis-timeout
mn create-controller Test

Add the following dependency to build.gradle:
implementation("io.micronaut.redis:micronaut-redis-lettuce")

Add the following configuration to application.yml:

redis:
  uri: redis://localhost/1 # or redis://password@localhost
  timeout: 5s

Modify TestController:

package test.redis.timeout

import io.lettuce.core.api.StatefulRedisConnection
import io.lettuce.core.api.sync.RedisCommands
import io.micronaut.http.annotation.Controller
import io.micronaut.http.annotation.Get

import javax.inject.Inject

@Controller("/test")
class TestController {

    @Inject
    StatefulRedisConnection<String, String> statefulRedisConnection

    @Get(uri="/", produces="text/plain")
    String index() {
        RedisCommands redisCommands = statefulRedisConnection.sync()
        redisCommands.ping() // never executed if redis accepts TCP connection but does not respond
        "Example Response"
    }
}

Expected Behaviour

Exception thrown due to timeout

Actual Behaviour

Hangs forever on statefulRedisConnection.sync()

Environment Information

  • Operating System: Ubuntu 18.04
  • Micronaut Version: 2.0.1
  • JDK Version: 1.8.0_252

Example Application

https://github.com/andersaaberg/test-redis-timeout

Micronaut Redis Lettuce Core lib issue

Micronaut version 2.4.0 and above results in "Unable to connect to Redis Cache Exception".
Workaround for this issue is either downgrading/using Micronaut version until 2.3.4 or need to strictly use the "io.lettuce:lettuce-core:5.3.6.RELEASE". Any version above "5.3.6.RELEASE" results in this exception (eg: tested with 6.0.3.RELEASE). as below

implementation("io.micronaut.redis:micronaut-redis-lettuce") {
        exclude group: "io.lettuce", module: "lettuce-core"
    }
    implementation("io.lettuce:lettuce-core") {
        version {
            strictly "5.3.6.RELEASE"
        }
    }

or

configurations.all {
    resolutionStrategy {
        force "io.lettuce:lettuce-core:5.3.6.RELEASE"
    }
}

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

Create a new Micronaut application version 2.4.0 or above (until 2.3.4 version issue is not there).
Add below dependencies

implementation("io.micronaut:micronaut-management") // for testing purpose
implementation("io.micronaut.redis:micronaut-redis-lettuce")

When hitting any endpoints (eg: default /health) will result in below exception.

Health indicator [redis(Primary)] reported exception: io.lettuce.core.RedisConnectionException: Unable to connect to xxx.redis.cache.windows.net:6380
io.lettuce.core.RedisConnectionException: Unable to connect to xxx.redis.cache.windows.net:6380
	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
	at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:320)
	at io.lettuce.core.RedisClient.connect(RedisClient.java:211)
	at io.lettuce.core.RedisClient.connect(RedisClient.java:196)
	at io.micronaut.configuration.lettuce.health.RedisHealthIndicator.lambda$getResult$3(RedisHealthIndicator.java:101)
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:385)
	at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:270)
	at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:228)
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:370)
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:164)
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:86)
	at reactor.core.publisher.Flux.subscribe(Flux.java:8095)
	at reactor.core.publisher.FluxConcatArray$ConcatArraySubscriber.onComplete(FluxConcatArray.java:208)
	at reactor.core.publisher.FluxConcatArray.subscribe(FluxConcatArray.java:80)
	at reactor.core.publisher.Flux.subscribe(Flux.java:8095)
	at io.reactivex.internal.operators.flowable.FlowableFromPublisher.subscribeActual(FlowableFromPublisher.java:29)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableToListSingle.subscribeActual(FlowableToListSingle.java:57)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:163)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onNext(RxInstrumentedSubscriber.java:59)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable$IteratorSubscription.slowPath(FlowableFromIterable.java:236)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable$BaseRangeSubscription.request(FlowableFromIterable.java:124)
	at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onSubscribe(FlowableFlatMap.java:117)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onSubscribe(RxInstrumentedSubscriber.java:52)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable.subscribe(FlowableFromIterable.java:69)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable.subscribeActual(FlowableFromIterable.java:47)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableFlatMap.subscribeActual(FlowableFlatMap.java:53)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableToListSingle.subscribeActual(FlowableToListSingle.java:57)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.single.SingleFromPublisher.subscribeActual(SingleFromPublisher.java:35)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.maybe.MaybeFromSingle.subscribeActual(MaybeFromSingle.java:41)
	at io.reactivex.Maybe.subscribe(Maybe.java:4290)
	at io.reactivex.internal.operators.maybe.MaybeSwitchIfEmptySingle.subscribeActual(MaybeSwitchIfEmptySingle.java:45)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:52)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.flowable.FlowableDefer.subscribeActual(FlowableDefer.java:42)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.flowable.FlowableDefer.subscribeActual(FlowableDefer.java:42)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:57)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14868)
	at io.micronaut.core.async.publisher.Publishers.lambda$map$3(Publishers.java:198)
	at io.micronaut.http.server.context.ServerRequestContextFilter.lambda$doFilter$0(ServerRequestContextFilter.java:62)
	at io.reactivex.internal.operators.flowable.FlowableFromPublisher.subscribeActual(FlowableFromPublisher.java:29)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14868)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.lambda$buildExecutableRoute$8(RoutingInBoundHandler.java:1111)
	at io.micronaut.web.router.DefaultUriRouteMatch$1.execute(DefaultUriRouteMatch.java:80)
	at io.micronaut.web.router.RouteMatch.execute(RouteMatch.java:118)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.handleRouteMatch(RoutingInBoundHandler.java:735)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.channelRead0(RoutingInBoundHandler.java:597)
	at io.micronaut.http.server.netty.RoutingInBoundHandler.channelRead0(RoutingInBoundHandler.java:153)
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:99)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:102)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.micronaut.http.netty.stream.HttpStreamsHandler.channelRead(HttpStreamsHandler.java:199)
	at io.micronaut.http.netty.stream.HttpStreamsServerHandler.channelRead(HttpStreamsServerHandler.java:121)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103)
	at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:93)
	at io.netty.handler.codec.http.HttpServerKeepAliveHandler.channelRead(HttpServerKeepAliveHandler.java:64)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.flow.FlowControlHandler.dequeue(FlowControlHandler.java:200)
	at io.netty.handler.flow.FlowControlHandler.channelRead(FlowControlHandler.java:162)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436)
	at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324)
	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296)
	at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655)
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493)
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.lang.Thread.run(Thread.java:748)
Caused by: java.nio.channels.ClosedChannelException: null
	at io.netty.channel.nio.AbstractNioChannel.doClose(AbstractNioChannel.java:502)
	at io.netty.channel.socket.nio.NioSocketChannel.doClose(NioSocketChannel.java:342)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.doClose0(AbstractChannel.java:760)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:737)
	at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:608)
	at io.netty.channel.DefaultChannelPipeline$HeadContext.close(DefaultChannelPipeline.java:1352)
	at io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:622)
	at io.netty.channel.AbstractChannelHandlerContext.close(AbstractChannelHandlerContext.java:606)
	at io.netty.handler.ssl.SslHandler.closeOutboundAndChannel(SslHandler.java:1915)
	at io.netty.handler.ssl.SslHandler.close(SslHandler.java:744)
	at io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:622)
	at io.netty.channel.AbstractChannelHandlerContext.access$1200(AbstractChannelHandlerContext.java:61)
	at io.netty.channel.AbstractChannelHandlerContext$11.run(AbstractChannelHandlerContext.java:611)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500)

Expected Behaviour

Micronaut application from 2.4.0 and above should connect to Redis Cache

Actual Behaviour

Micronaut application from 2.4.0 and above is not connect to Redis Cache. Need to either downgrade version to 2.3.4 or less or restrict the lettuce-core lib to "5.3.6.RELEASE" as mentioned above.

Environment Information

  • Operating System: Windows & Ubuntu
  • Micronaut Version: 2.4.0 and above (update: Tested with 2.5.3)
  • JDK Version: JDK 1.8 / JDK 11

Example Application

Create new Micronaut application (version above 2.4.x)- "mn create-app my-app --features redis-lettuce".
Add "implementation("io.micronaut:micronaut-management") // for testing purpose".
Hit http://localhost:8080/health

Deprecate the embedded Redis server in favour of Testcontainers

Issue description

We ship an embedded Redis component for testing.

This is old, and problematic to update (ie: #193)

In the mean time, the world has moved on and TestContainers has enabled much easier testing of a real, up to date local instance of Redis

We should deprecate the embedded server, and add TestContainers support as we have with Micronaut Data for the different databases

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Pending Approval

These branches will be created by Renovate only once you click their checkbox below.

  • chore(deps): update actions/checkout action to v4.1.7

Awaiting Schedule

These updates are awaiting their schedule. Click on a checkbox to get an update now.

  • fix(deps): update dependency io.micronaut.serde:micronaut-serde-bom to v2.10.2

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Ignored or Blocked

These are blocked by an existing closed PR and will not be recreated unless you click a checkbox below.

Detected dependencies

github-actions
.github/workflows/central-sync.yml
  • actions/checkout v4
  • gradle/wrapper-validation-action v3
  • actions/setup-java v4
.github/workflows/graalvm-dev.yml
  • actions/checkout v4
  • actions/checkout v4
.github/workflows/graalvm-latest.yml
  • actions/checkout v4
  • actions/checkout v4
.github/workflows/gradle.yml
  • actions/checkout v4
  • graalvm/setup-graalvm v1.2.1
  • gradle/gradle-build-action v3.3.2
  • mikepenz/action-junit-report v4
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • haya14busa/action-cond v1
.github/workflows/publish-snapshot.yml
  • actions/checkout v4
  • actions/cache v4
  • actions/setup-java v4
.github/workflows/release.yml
  • actions/checkout v4
  • gradle/wrapper-validation-action v3
  • actions/setup-java v4
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/upload-artifact v4.3.3@65462800fd760344b1a7b4382951275a0abb4808
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • slsa-framework/slsa-github-generator v2.0.0
  • actions/checkout v4.1.1@b4ffde65f46336ab88eb53be808477a3936bae11
  • actions/download-artifact v4.1.7@65a9edc5881444af0b9093a5e628f2fe47ea3b2e
  • softprops/action-gh-release v0.1.15@de2c0eb89ae2a093876385947365aca7b0e5f844
gradle
gradle.properties
settings.gradle
  • io.micronaut.build.shared.settings 7.1.2
build.gradle
buildSrc/settings.gradle
buildSrc/build.gradle
buildSrc/src/main/groovy/io.micronaut.build.internal.redis-base.gradle
buildSrc/src/main/groovy/io.micronaut.build.internal.redis-module.gradle
buildSrc/src/main/groovy/io.micronaut.build.internal.redis-native-tests.gradle
gradle/libs.versions.toml
  • io.micronaut:micronaut-core-bom 4.5.3
  • io.lettuce:lettuce-core 6.3.2.RELEASE
  • io.micronaut.cache:micronaut-cache-bom 4.3.0
  • io.micronaut.micrometer:micronaut-micrometer-bom 5.7.0
  • io.micronaut.serde:micronaut-serde-bom 2.10.1
  • io.micronaut.session:micronaut-session-bom 4.3.0
  • io.micronaut.testresources:micronaut-test-resources-bom 2.5.2
  • it.ozimov:embedded-redis 0.7.3
  • io.micronaut.gradle:micronaut-gradle-plugin 4.4.0
gradle/license.gradle
redis-bom/build.gradle
redis-lettuce/build.gradle
test-suite-graal/build.gradle
  • micronaut 4.5.0
gradle-wrapper
gradle/wrapper/gradle-wrapper.properties
  • gradle 8.8

  • Check this box to trigger a request for Renovate to run again on this repository

Multiple issues with Redis cluster

  1. Redis cluster cannot be used as cache because RedisConnectionUtil expects to always have a named StatefulRedisClusterConnection
  2. Even if one wants, it's not possible to create a named StatefulRedisClusterConnection because it's not supported by NamedRedisClientFactory
  3. RedisHealthIndicator only checks health of RedisClient instances (and not RedisClusterClient)

micronaut-redis-lettuce can't be compiled by GraalVM

Task List

  • Get source code
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Get source code

git clone https://github.com/qiuzhanghua/perf.git
gradle assemble
native-image --no-server -cp build/libs/perf-0.1-all.jar --initialize-at-run-time=io.micronaut.configuration.lettuce.session.$RedisHttpSessionConfigurationDefinition --initialize-at-build-time=reactor.core.publisher.Mono --initialize-at-build-time=reactor.core.publisher.Flux --initialize-at-build-time=reactor.core.publisher.Flux$$Lambda$105/0x00000007c1338c40

Expected Behaviour

produce native code

Actual Behaviour

[perf:5645]    classlist:   4,966.92 ms,  1.20 GB
[perf:5645]        (cap):   2,298.72 ms,  1.20 GB
[perf:5645]        setup:   3,483.65 ms,  1.20 GB
[perf:5645]     analysis:  35,611.93 ms,  5.38 GB
Error: Classes that should be initialized at run time got initialized during image building:
 reactor.core.publisher.Flux$$Lambda$104/0x00000007c1322040 was unintentionally initialized at build time. To see why reactor.core.publisher.Flux$$Lambda$104/0x00000007c1322040 got initialized use -H:+TraceClassInitialization

Error: Use -H:+ReportExceptionStackTraces to print stacktrace of underlying exception
Error: Image build request failed with exit status 1

Environment Information

  • Mac OS Catlina: 10.15.4
  • Micronaut Version: 1.3.4
  • JDK Version: openjdk version "11.0.6" 2020-01-14
    OpenJDK Runtime Environment GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02)
    OpenJDK 64-Bit Server VM GraalVM CE 20.0.0 (build 11.0.6+9-jvmci-20.0-b02, mixed mode, sharing)

Example Application

'Command DEL does not exist' when using redis as cache

Micronaut 1.3.5
Micronaut redis lettuce 2.0.0

When starting up application with @Cacheable annotated methods and redis cache configuration, following exception happens:

15:49:13.984 [pool-1-thread-6] | ERROR i.m.h.s.netty.RoutingInBoundHandler - Unexpected error occurred: Command DEL does not exist Offending method: public abstract java.lang.Long io.micronaut.configuration.lettuce.cache.SyncCacheCommands.del(byte[]...)
io.lettuce.core.dynamic.CommandMethodSyntaxException: Command DEL does not exist Offending method: public abstract java.lang.Long io.micronaut.configuration.lettuce.cache.SyncCacheCommands.del(byte[]...)
	at io.lettuce.core.dynamic.DefaultCommandMethodVerifier.syntaxException(DefaultCommandMethodVerifier.java:165)
	at io.lettuce.core.dynamic.DefaultCommandMethodVerifier.lambda$validate$0(DefaultCommandMethodVerifier.java:70)
	at java.base/java.util.Optional.orElseThrow(Optional.java:401)
	at io.lettuce.core.dynamic.DefaultCommandMethodVerifier.validate(DefaultCommandMethodVerifier.java:69)
	at io.lettuce.core.dynamic.ExecutableCommandLookupStrategySupport$DefaultCommandFactoryResolver.resolveRedisCommandFactory(ExecutableCommandLookupStrategySupport.java:74)
	at io.lettuce.core.dynamic.ExecutableCommandLookupStrategySupport.resolveCommandFactory(ExecutableCommandLookupStrategySupport.java:48)
	at io.lettuce.core.dynamic.AsyncExecutableCommandLookupStrategy.resolveCommandMethod(AsyncExecutableCommandLookupStrategy.java:47)
	at io.lettuce.core.dynamic.RedisCommandFactory$CompositeCommandLookupStrategy.resolveCommandMethod(RedisCommandFactory.java:290)
	at io.lettuce.core.dynamic.RedisCommandFactory$BatchAwareCommandLookupStrategy.resolveCommandMethod(RedisCommandFactory.java:339)
	at io.lettuce.core.dynamic.RedisCommandFactory$CommandFactoryExecutorMethodInterceptor.<init>(RedisCommandFactory.java:215)
	at io.lettuce.core.dynamic.RedisCommandFactory.getCommands(RedisCommandFactory.java:195)
	at io.micronaut.configuration.lettuce.cache.RedisCache.syncCommands(RedisCache.java:298)
	at io.micronaut.configuration.lettuce.cache.RedisCache.getCommands(RedisCache.java:149)
	at io.micronaut.configuration.lettuce.cache.RedisCache.get(RedisCache.java:168)
	at io.micronaut.cache.interceptor.CacheInterceptor.interceptSync(CacheInterceptor.java:174)
	at io.micronaut.cache.interceptor.CacheInterceptor.intercept(CacheInterceptor.java:125)
	at io.micronaut.aop.chain.MethodInterceptorChain.proceed(MethodInterceptorChain.java:69)
	at net.photomath.turk.service.$ClusterStateServiceDefinition$Intercepted.getClusterState(Unknown Source)
	at net.photomath.turk.service.ClusterStateService.updateClusterState(ClusterStateService.kt:84)
	at net.photomath.turk.service.ClusterStateService.setLimits(ClusterStateService.kt:77)

Redis HealthEndpoint fails on cluster rebalance

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

  1. Connect your app to redis sentinel cluster in k8s
  2. kill the master in charge
  3. Sentinels re-elect new master
  4. Old master is up as replica worker

Expected Behaviour

Redis primary health endpoint should check the new elected master instead calling the old one

Actual Behaviour

It seems Redis is calling the old master

07:20:20.612 [nioEventLoopGroup-6-4] ERROR i.m.m.health.indicator.HealthResult - Health indicator [redis(Primary)] reported exception: io.lettuce.core.RedisConnectionException: Unable to connect to 172.31.17.10:6379
io.lettuce.core.RedisConnectionException: Unable to connect to 172.31.17.10:6379
	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:78)
	at io.lettuce.core.RedisConnectionException.create(RedisConnectionException.java:56)
	at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:235)
	at io.lettuce.core.RedisClient.connect(RedisClient.java:204)
	at io.lettuce.core.RedisClient.connect(RedisClient.java:189)
	at io.micronaut.configuration.lettuce.health.RedisHealthIndicator.lambda$getResult$2(RedisHealthIndicator.java:80)
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.onNext(FluxFlatMap.java:350)
	at reactor.core.publisher.FluxIterable$IterableSubscription.slowPath(FluxIterable.java:243)
	at reactor.core.publisher.FluxIterable$IterableSubscription.request(FluxIterable.java:201)
	at reactor.core.publisher.FluxFlatMap$FlatMapMain.onSubscribe(FluxFlatMap.java:335)
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:139)
	at reactor.core.publisher.FluxIterable.subscribe(FluxIterable.java:63)
	at reactor.core.publisher.FluxFlatMap.subscribe(FluxFlatMap.java:97)
	at reactor.core.publisher.Flux.subscribe(Flux.java:7921)
	at io.reactivex.internal.operators.flowable.FlowableFromPublisher.subscribeActual(FlowableFromPublisher.java:29)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableToListSingle.subscribeActual(FlowableToListSingle.java:57)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:64)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:64)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onNext(FlowableFlatMap.java:163)
	at io.micronaut.reactive.rxjava2.InstrumentedSubscriber.lambda$onNext$0(InstrumentedSubscriber.java:80)
	at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:52)
	at io.micronaut.http.context.ServerRequestContext.lambda$instrument$0(ServerRequestContext.java:68)
	at io.micronaut.reactive.rxjava2.InstrumentedSubscriber.onNext(InstrumentedSubscriber.java:84)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable$IteratorSubscription.slowPath(FlowableFromIterable.java:236)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable$BaseRangeSubscription.request(FlowableFromIterable.java:124)
	at io.reactivex.internal.operators.flowable.FlowableFlatMap$MergeSubscriber.onSubscribe(FlowableFlatMap.java:117)
	at io.micronaut.reactive.rxjava2.InstrumentedSubscriber.onSubscribe(InstrumentedSubscriber.java:75)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable.subscribe(FlowableFromIterable.java:69)
	at io.reactivex.internal.operators.flowable.FlowableFromIterable.subscribeActual(FlowableFromIterable.java:47)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableFlatMap.subscribeActual(FlowableFlatMap.java:53)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableToListSingle.subscribeActual(FlowableToListSingle.java:57)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:64)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleMap.subscribeActual(SingleMap.java:34)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:64)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.single.SingleFromPublisher.subscribeActual(SingleFromPublisher.java:35)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.micronaut.reactive.rxjava2.RxInstrumentedSingle.subscribeActual(RxInstrumentedSingle.java:64)
	at io.reactivex.Single.subscribe(Single.java:3603)
	at io.reactivex.internal.operators.single.SingleToFlowable.subscribeActual(SingleToFlowable.java:37)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.flowable.FlowableDefer.subscribeActual(FlowableDefer.java:42)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableMap.subscribeActual(FlowableMap.java:37)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.internal.operators.flowable.FlowableSwitchIfEmpty.subscribeActual(FlowableSwitchIfEmpty.java:32)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14868)
	at io.micronaut.configuration.metrics.binder.web.WebMetricsPublisher.subscribe(WebMetricsPublisher.java:122)
	at io.micronaut.http.context.ServerRequestTracingPublisher.lambda$subscribe$0(ServerRequestTracingPublisher.java:52)
	at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:52)
	at io.micronaut.http.context.ServerRequestTracingPublisher.subscribe(ServerRequestTracingPublisher.java:52)
	at io.micronaut.core.async.publisher.Publishers.lambda$map$2(Publishers.java:133)
	at io.reactivex.internal.operators.flowable.FlowableFromPublisher.subscribeActual(FlowableFromPublisher.java:29)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.micronaut.reactive.rxjava2.RxInstrumentedFlowable.subscribeActual(RxInstrumentedFlowable.java:68)
	at io.reactivex.Flowable.subscribe(Flowable.java:14918)
	at io.reactivex.Flowable.subscribe(Flowable.java:14865)
	at io.reactivex.internal.operators.flowable.FlowableSubscribeOn$SubscribeOnSubscriber.run(FlowableSubscribeOn.java:82)
	at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker$BooleanRunnable.run(ExecutorScheduler.java:288)
	at io.reactivex.internal.schedulers.ExecutorScheduler$ExecutorWorker.run(ExecutorScheduler.java:253)
	at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
	at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:416)
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:515)
	at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:918)
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: /172.31.17.10:6379
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe$1.run(AbstractNioChannel.java:263)
	at io.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)
	at io.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:127)

Environment Information

  • Operating System: aws, k8s
  • Micronaut Version: 1.2.0
  • JDK Version: 11

Example Application

Do not update session object

Micronaut version 1.2.7
Redis 5.0.7
When use session in memory Cart elements updated and restored normally
When enable Redis for session stored elements do not updates

when run command in redis
MGET "site-fotel:sessionssessions:efbd7e67-5ccd-40a5-8367-cadaec8df638"

  1. (nil)

application.yml

micronaut:
application:
name: site-fotel
session:
http:
redis:
enabled: true
namespace: 'site-fotel:sessions'
write-mode: BACKGROUND
valueSerializer: io.micronaut.jackson.serialize.JacksonObjectSerializer

In controller I have a method
@SessionValue(SessionEventHandler.SESSION_CART_KEY)
SiteCart getSiteCart(Session session) {
return session.get(SessionEventHandler.SESSION_CART_KEY, SiteCart.class).orElseGet(() -> {
SiteCart cart = new SiteCart();
session.put(SessionEventHandler.SESSION_CART_KEY, cart);
return cart;
});
}

Should I after add element to my SiteCart update session session.setLastAccessedTime() ? - it did not help
or re set session.put(SessionEventHandler.SESSION_CART_KEY, cart); each time ?
if use InMemmory all is working (obviously it is in memory )
After each get from session object session.get(SessionEventHandler.SESSION_CART_KEY, SiteCart.class)
it create new instance in debug look like
https://we.tl/t-fiY5yKLSfs
It is ok that is like linked hash map not like Model

if redis is disabled it stored like object
https://snipboard.io/ORZq3U.jpg
As I understand it because of JacksonObjectSerializer - so how it can be resolved?

It work only if all the time update session.put(SessionEventHandler.SESSION_CART_KEY, cart)
But all thread get own copy of session - what if few threads make changes and update then some data will be lost
It is not better sore in memory storage and share session between thread like normal InMemory storage ?
and in background write to Redis

[Redis] Micronaut does not support redis cluster configuration

Expected Behavior

When trying to configure micronaut-redis to use RedisClusterClient it does not work as it tries to create the connections twice as the RedisClientFactory looks for the redis prefix using the DefaultRedisConfig class

@Requires(beans = DefaultRedisConfiguration.class) @Singleton @Factory public class DefaultRedisClientFactory extends AbstractRedisClientFactory { ...

while the RedisCluster is only conditional based on the URIS prefix:

@Requires(property = RedisSetting.REDIS_URIS) @Singleton @Factory public class DefaultRedisClusterClientFactory { ...

Actual Behaviour

When trying to inject some StatefulRedisPubSubConnection the micronaut jedis has 2 different instances for the same implemantation and does not know what to do.

`/Users/gdesouza/Library/Java/JavaVirtualMachines/corretto-11.0.14.1/Contents/Home/bin/java -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:61605,suspend=y,server=n -Dvisualvm.id=508823412683791 -javaagent:/Users/gdesouza/Library/Caches/JetBrains/IntelliJIdea2022.1/captureAgent/debugger-agent.jar -Dfile.encoding=UTF-8 -classpath /Users/gdesouza/dev/socket-service/build/classes/java/main:/Users/gdesouza/dev/socket-service/build/resources/main:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-http-client/1.3.4/26013417a7c2948e929cde64cc5e1c1d769c38f5/micronaut-http-client-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-management/1.3.4/eee300a06c06b2abb87424a554ddb9feb882c5be/micronaut-management-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut.configuration/micronaut-redis-lettuce/1.2.0/87a98c85c6852f179cbd0db8f18a0597b0409063/micronaut-redis-lettuce-1.2.0.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-http-server-netty/1.3.4/1ef2d2edc3dce681bde9a69368e623786b48c618/micronaut-http-server-netty-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-runtime/1.3.4/d3bc7092616184753c5f91db7985d90034ea7cdf/micronaut-runtime-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-validation/1.3.4/d56f853d0140565ce7fa26fb6f0e1f70d55c014f/micronaut-validation-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-inject/1.3.4/ff0cd8d52dc64428891194c47053d79898c15af0/micronaut-inject-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/javax.annotation/javax.annotation-api/1.3.2/934c04d3cfef185a8008e7bf34331b79730a9d43/javax.annotation-api-1.3.2.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-http-netty/1.3.4/6e285a8659f5f7f9661faef7417c5326362e7f9e/micronaut-http-netty-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-websocket/1.3.4/fcf65eadfc3c4ea296176731c5aa9195b6e96adb/micronaut-websocket-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-handler-proxy/4.1.48.Final/79910203db6a542189c9aaa9ec187bf5ee16248a/netty-handler-proxy-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/org.slf4j/slf4j-api/1.7.26/77100a62c2e6f04b53977b9f541044d7d722693d/slf4j-api-1.7.26.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.2.10/18e9edc67e0abaa03713eeb9ca2cb0e30c859de4/rxjava-2.2.10.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-router/1.3.4/918c98202e9fc5b8f5af7d24e8d24c2e04723063/micronaut-router-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.lettuce/lettuce-core/5.2.1.RELEASE/27d2442b09199a022c6667ef891d36a338c5e3c6/lettuce-core-5.2.1.RELEASE.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-http-server/1.3.4/f2afb78b5e1cd867d8d831a223a16740053a65c/micronaut-http-server-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-core/1.3.4/a2c5a45725ecf798b643b44c250838570a22b12e/micronaut-core-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-codec-http/4.1.48.Final/8b18499a51367d291efd1f200a4e865370d38738/netty-codec-http-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-http/1.3.4/73607334e1cf010f6f6ce9500af97b0b2392031b/micronaut-http-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-aop/1.3.4/51d92ced4fb3918c100b72fbf7d8b574a70a24c1/micronaut-aop-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jdk8/2.10.3/5fc73a94e771eb044e45e2e3ec9a38660daee6a/jackson-datatype-jdk8-2.10.3.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.datatype/jackson-datatype-jsr310/2.10.3/df773a823e37013779fa247cd13686ff5ee573e3/jackson-datatype-jsr310-2.10.3.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-databind/2.10.3/aae92628b5447fa25af79871ca98668da6edd439/jackson-databind-2.10.3.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/javax.validation/validation-api/2.0.1.Final/cb855558e6271b1b32e716d24cb85c7f583ce09e/validation-api-2.0.1.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/org.yaml/snakeyaml/1.24/13a9c0d6776483c3876e3ff9384f9bb55b17001b/snakeyaml-1.24.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/javax.inject/javax.inject/1/6975da39a7040257bd51d21a231b76c915872d38/javax.inject-1.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.micronaut/micronaut-buffer-netty/1.3.4/e867bf63c1fc7f482a889740f6f96193ec667f5d/micronaut-buffer-netty-1.3.4.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-handler/4.1.48.Final/d459919c87dc1a2bf400b39053761ecc11c2e436/netty-handler-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-codec-socks/4.1.48.Final/42b55c9ca8672ebb7160cadf3c70ffc11638f021/netty-codec-socks-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-codec/4.1.48.Final/3142078325d745228da9d6d1f6f9931c63aaba16/netty-codec-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-transport/4.1.48.Final/d285e8d9af5be1fc146b91a1b0d211e7a6a7e7d4/netty-transport-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-buffer/4.1.48.Final/7fd3ebb659c628e0158c9c2c971f4d0734d7f4f0/netty-buffer-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-common/4.1.48.Final/ec27d04fd5e7b65ac171cd64734f9e4f1fc2a286/netty-common-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/org.reactivestreams/reactive-streams/1.0.3/d9fb7a7926ffa635b3dcaa5049fb2bfa25b3e7d0/reactive-streams-1.0.3.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.projectreactor/reactor-core/3.3.0.RELEASE/4824f980e5696e95289d5fb0de62e3d34508b358/reactor-core-3.3.0.RELEASE.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/com.google.code.findbugs/jsr305/3.0.2/25ea2e8b0c338a877313bd4672d3fe056ea78f0d/jsr305-3.0.2.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-core/2.10.3/f7ee7b55c7d292ac72fbaa7648c089f069c938d2/jackson-core-2.10.3.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/com.fasterxml.jackson.core/jackson-annotations/2.10.3/f63b3b1da563767d04d2e4d3fc1ae0cdeffebe7/jackson-annotations-2.10.3.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/io.netty/netty-resolver/4.1.48.Final/612ad2acc848ce46496095683eea621094763b80/netty-resolver-4.1.48.Final.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-classic/1.2.3/7c4f3c474fb2c041d8028740440937705ebb473a/logback-classic-1.2.3.jar:/Users/gdesouza/.gradle/caches/modules-2/files-2.1/ch.qos.logback/logback-core/1.2.3/864344400c3d4d92dfeb0a305dc87d953677c03c/logback-core-1.2.3.jar:/Users/gdesouza/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/221.5787.30/IntelliJ IDEA.app/Contents/lib/idea_rt.jar io.bokun.socket.Application
Connected to the target VM, address: '127.0.0.1:61605', transport: 'socket'
WARN ForkJoinPool.commonPool-worker-5: [io.micronaut.scheduling.io.watch.WatchServiceFactory]: Using default File WatchService on OS X is slow. Consider adding 'io.micronaut:micronaut-runtime-osx' dependencies to use native file watch
INFO main: [io.micronaut.runtime.Micronaut]: Startup completed in 2002ms. Server Running: http://localhost:8080
io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:59)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onSuccess(SingleSubscribeOn.java:68)
at io.reactivex.internal.operators.single.SingleFromPublisher$ToSingleObserver.onComplete(SingleFromPublisher.java:101)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher$1.onComplete(ServerRequestTracingPublisher.java:70)
at io.reactivex.internal.util.HalfSerializer.onComplete(HalfSerializer.java:90)
at io.reactivex.internal.subscribers.StrictSubscriber.onComplete(StrictSubscriber.java:109)
at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onComplete(RxInstrumentedSubscriber.java:97)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.complete(FlowableCreate.java:266)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onComplete(FlowableCreate.java:258)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$1(NettyServerWebSocketUpgradeHandler.java:141)
at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:71)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14868)
at io.micronaut.http.context.ServerRequestTracingPublisher.lambda$subscribe$0(ServerRequestTracingPublisher.java:52)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher.subscribe(ServerRequestTracingPublisher.java:52)
at io.reactivex.internal.operators.single.SingleFromPublisher.subscribeActual(SingleFromPublisher.java:35)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:96)
at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1016)
at io.bokun.socket.controllers.$NotificationSocketServerDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1693)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2407)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2393)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2084)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2058)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:618)
at io.micronaut.context.DefaultBeanContext$BeanExecutionHandle.getTarget(DefaultBeanContext.java:2972)
at io.micronaut.web.router.AbstractRouteMatch.getTarget(AbstractRouteMatch.java:81)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$3(NettyServerWebSocketUpgradeHandler.java:180)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:56)
... 31 more
Caused by: io.micronaut.context.exceptions.NonUniqueBeanException: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:1796)
at io.micronaut.context.DefaultApplicationContext.findConcreteCandidate(DefaultApplicationContext.java:403)
at io.micronaut.context.DefaultBeanContext.lastChanceResolve(DefaultBeanContext.java:2384)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidateNoCache(DefaultBeanContext.java:2307)
at io.micronaut.context.DefaultBeanContext.lambda$findConcreteCandidate$57(DefaultBeanContext.java:2250)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.lambda$compute$0(ConcurrentLinkedHashMap.java:721)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.compute(ConcurrentLinkedHashMap.java:733)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.computeIfAbsent(ConcurrentLinkedHashMap.java:710)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:2249)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2038)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1095)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1007)
... 42 more
Exception in thread "nioEventLoopGroup-1-2" io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:59)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onSuccess(SingleSubscribeOn.java:68)
at io.reactivex.internal.operators.single.SingleFromPublisher$ToSingleObserver.onComplete(SingleFromPublisher.java:101)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher$1.onComplete(ServerRequestTracingPublisher.java:70)
at io.reactivex.internal.util.HalfSerializer.onComplete(HalfSerializer.java:90)
at io.reactivex.internal.subscribers.StrictSubscriber.onComplete(StrictSubscriber.java:109)
at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onComplete(RxInstrumentedSubscriber.java:97)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.complete(FlowableCreate.java:266)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onComplete(FlowableCreate.java:258)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$1(NettyServerWebSocketUpgradeHandler.java:141)
at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:71)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14868)
at io.micronaut.http.context.ServerRequestTracingPublisher.lambda$subscribe$0(ServerRequestTracingPublisher.java:52)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher.subscribe(ServerRequestTracingPublisher.java:52)
at io.reactivex.internal.operators.single.SingleFromPublisher.subscribeActual(SingleFromPublisher.java:35)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:96)
at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1016)
at io.bokun.socket.controllers.$NotificationSocketServerDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1693)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2407)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2393)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2084)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2058)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:618)
at io.micronaut.context.DefaultBeanContext$BeanExecutionHandle.getTarget(DefaultBeanContext.java:2972)
at io.micronaut.web.router.AbstractRouteMatch.getTarget(AbstractRouteMatch.java:81)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$3(NettyServerWebSocketUpgradeHandler.java:180)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:56)
... 31 more
Caused by: io.micronaut.context.exceptions.NonUniqueBeanException: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:1796)
at io.micronaut.context.DefaultApplicationContext.findConcreteCandidate(DefaultApplicationContext.java:403)
at io.micronaut.context.DefaultBeanContext.lastChanceResolve(DefaultBeanContext.java:2384)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidateNoCache(DefaultBeanContext.java:2307)
at io.micronaut.context.DefaultBeanContext.lambda$findConcreteCandidate$57(DefaultBeanContext.java:2250)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.lambda$compute$0(ConcurrentLinkedHashMap.java:721)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.compute(ConcurrentLinkedHashMap.java:733)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.computeIfAbsent(ConcurrentLinkedHashMap.java:710)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:2249)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2038)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1095)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1007)
... 42 more
io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:59)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onSuccess(SingleSubscribeOn.java:68)
at io.reactivex.internal.operators.single.SingleFromPublisher$ToSingleObserver.onComplete(SingleFromPublisher.java:101)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher$1.onComplete(ServerRequestTracingPublisher.java:70)
at io.reactivex.internal.util.HalfSerializer.onComplete(HalfSerializer.java:90)
at io.reactivex.internal.subscribers.StrictSubscriber.onComplete(StrictSubscriber.java:109)
at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onComplete(RxInstrumentedSubscriber.java:97)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.complete(FlowableCreate.java:266)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onComplete(FlowableCreate.java:258)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$1(NettyServerWebSocketUpgradeHandler.java:141)
at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:71)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14868)
at io.micronaut.http.context.ServerRequestTracingPublisher.lambda$subscribe$0(ServerRequestTracingPublisher.java:52)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher.subscribe(ServerRequestTracingPublisher.java:52)
at io.reactivex.internal.operators.single.SingleFromPublisher.subscribeActual(SingleFromPublisher.java:35)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:96)
at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1016)
at io.bokun.socket.controllers.$NotificationSocketServerDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1693)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2407)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2393)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2084)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2058)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:618)
at io.micronaut.context.DefaultBeanContext$BeanExecutionHandle.getTarget(DefaultBeanContext.java:2972)
at io.micronaut.web.router.AbstractRouteMatch.getTarget(AbstractRouteMatch.java:81)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$3(NettyServerWebSocketUpgradeHandler.java:180)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:56)
... 31 more
Caused by: io.micronaut.context.exceptions.NonUniqueBeanException: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:1796)
at io.micronaut.context.DefaultApplicationContext.findConcreteCandidate(DefaultApplicationContext.java:403)
at io.micronaut.context.DefaultBeanContext.lastChanceResolve(DefaultBeanContext.java:2384)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidateNoCache(DefaultBeanContext.java:2307)
at io.micronaut.context.DefaultBeanContext.lambda$findConcreteCandidate$57(DefaultBeanContext.java:2250)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.lambda$compute$0(ConcurrentLinkedHashMap.java:721)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.compute(ConcurrentLinkedHashMap.java:733)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.computeIfAbsent(ConcurrentLinkedHashMap.java:710)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:2249)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2038)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1095)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1007)
... 42 more
Exception in thread "nioEventLoopGroup-1-3" io.reactivex.exceptions.UndeliverableException: The exception could not be delivered to the consumer because it has already canceled/disposed the flow or the exception has nowhere to go to begin with. Further reading: https://github.com/ReactiveX/RxJava/wiki/What's-different-in-2.0#error-handling | io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.reactivex.plugins.RxJavaPlugins.onError(RxJavaPlugins.java:367)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:59)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.onSuccess(SingleSubscribeOn.java:68)
at io.reactivex.internal.operators.single.SingleFromPublisher$ToSingleObserver.onComplete(SingleFromPublisher.java:101)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher$1.onComplete(ServerRequestTracingPublisher.java:70)
at io.reactivex.internal.util.HalfSerializer.onComplete(HalfSerializer.java:90)
at io.reactivex.internal.subscribers.StrictSubscriber.onComplete(StrictSubscriber.java:109)
at io.micronaut.reactive.rxjava2.RxInstrumentedSubscriber.onComplete(RxInstrumentedSubscriber.java:97)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.complete(FlowableCreate.java:266)
at io.reactivex.internal.operators.flowable.FlowableCreate$BaseEmitter.onComplete(FlowableCreate.java:258)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$1(NettyServerWebSocketUpgradeHandler.java:141)
at io.reactivex.internal.operators.flowable.FlowableCreate.subscribeActual(FlowableCreate.java:71)
at io.reactivex.Flowable.subscribe(Flowable.java:14918)
at io.reactivex.Flowable.subscribe(Flowable.java:14868)
at io.micronaut.http.context.ServerRequestTracingPublisher.lambda$subscribe$0(ServerRequestTracingPublisher.java:52)
at io.micronaut.http.context.ServerRequestContext.with(ServerRequestContext.java:68)
at io.micronaut.http.context.ServerRequestTracingPublisher.subscribe(ServerRequestTracingPublisher.java:52)
at io.reactivex.internal.operators.single.SingleFromPublisher.subscribeActual(SingleFromPublisher.java:35)
at io.reactivex.Single.subscribe(Single.java:3603)
at io.reactivex.internal.operators.single.SingleSubscribeOn$SubscribeOnObserver.run(SingleSubscribeOn.java:89)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:38)
at io.reactivex.internal.schedulers.ScheduledDirectTask.call(ScheduledDirectTask.java:26)
at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:96)
at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute$$$capture(AbstractEventExecutor.java:164)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:472)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:497)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: io.micronaut.context.exceptions.DependencyInjectionException: Failed to inject value for parameter [redisConnection] of class: io.bokun.socket.controllers.NotificationSocketServer

Message: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
Path Taken: new NotificationSocketServer(RxHttpClient httpClient,WebSocketBroadcaster broadcaster,[StatefulRedisPubSubConnection redisConnection],boolean authEnabled)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1016)
at io.bokun.socket.controllers.$NotificationSocketServerDefinition.build(Unknown Source)
at io.micronaut.context.DefaultBeanContext.doCreateBean(DefaultBeanContext.java:1693)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingletonInternal(DefaultBeanContext.java:2407)
at io.micronaut.context.DefaultBeanContext.createAndRegisterSingleton(DefaultBeanContext.java:2393)
at io.micronaut.context.DefaultBeanContext.getBeanForDefinition(DefaultBeanContext.java:2084)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2058)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:618)
at io.micronaut.context.DefaultBeanContext$BeanExecutionHandle.getTarget(DefaultBeanContext.java:2972)
at io.micronaut.web.router.AbstractRouteMatch.getTarget(AbstractRouteMatch.java:81)
at io.micronaut.http.server.netty.websocket.NettyServerWebSocketUpgradeHandler.lambda$channelRead0$3(NettyServerWebSocketUpgradeHandler.java:180)
at io.reactivex.internal.observers.BiConsumerSingleObserver.onSuccess(BiConsumerSingleObserver.java:56)
... 31 more
Caused by: io.micronaut.context.exceptions.NonUniqueBeanException: Multiple possible bean candidates found: [io.lettuce.core.pubsub.StatefulRedisPubSubConnection, io.lettuce.core.pubsub.StatefulRedisPubSubConnection]
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:1796)
at io.micronaut.context.DefaultApplicationContext.findConcreteCandidate(DefaultApplicationContext.java:403)
at io.micronaut.context.DefaultBeanContext.lastChanceResolve(DefaultBeanContext.java:2384)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidateNoCache(DefaultBeanContext.java:2307)
at io.micronaut.context.DefaultBeanContext.lambda$findConcreteCandidate$57(DefaultBeanContext.java:2250)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.lambda$compute$0(ConcurrentLinkedHashMap.java:721)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.compute(ConcurrentLinkedHashMap.java:733)
at io.micronaut.core.util.clhm.ConcurrentLinkedHashMap.computeIfAbsent(ConcurrentLinkedHashMap.java:710)
at io.micronaut.context.DefaultBeanContext.findConcreteCandidate(DefaultBeanContext.java:2249)
at io.micronaut.context.DefaultBeanContext.getBeanInternal(DefaultBeanContext.java:2038)
at io.micronaut.context.DefaultBeanContext.getBean(DefaultBeanContext.java:1095)
at io.micronaut.context.AbstractBeanDefinition.getBeanForConstructorArgument(AbstractBeanDefinition.java:1007)
... 42 more
`

Steps To Reproduce

Just add as a config:

redis: uris: ${SS_REDIS_URL:redis://localhost}

And add any class trying to inject

@Inject public Foo(StatefulRedisPubSubConnection<String, String> redisConnection) { ...

Environment Information

MAC OS
JDK 11 correto

Example Application

No response

Version

[bug] Blocking command is being run from event loop thread

I set up this repo to reproduce the issue: https://github.com/hmatt1/micronaut-redis-example

It appears when syncCommands is called from the constructor for RedisCache, this actually runs the command command against Redis under the covers which is a blocking operation.

The bean gets created on an nioEventLoopGroup thread, which shouldn't have any blocking operations run on it.

[bug] Multiple Redis Connections

when setting multiple redis servers , it always connect to localhost:6379 by default, the config has no effect at all !

redis:
    servers:
        foo:
            uri: redis://foo:1223
        bar:
            uri: redis://bar:4567

When a redis session is introduced, the business operation is processed in lettuce-nioeventloop threads

When the redis session is opened, the io executors configuration does not take effect, and the running thread pool is lettuce-nioeventloop

Environment Information

  • Operating System: windows
  • Micronaut Version: 1.3.6
  • JDK Version: jdk8

Steps to Reproduce

@Controller("/demo")
public class DemoResource  {

  static Logger log = LoggerFactory.getLogger(DemoResource.class);
  
  @Get("/hello")
  public String hello() {
    log.info("Hello world!");
    return "Hello world!";
  }
}
  1. Close redis session

11:50:54.814 [nioEventLoopGroup-1-2] DEBUG i.m.s.h.CookieHttpSessionIdGenerator - cookie value: NmQ2YjBhMGYtZDVmMC00NzhjLTk3Y2MtNzY4OTg0NGNkMjBm
11:50:54.815 [nioEventLoopGroup-1-2] DEBUG i.m.s.http.CookieHttpSessionStrategy - path 6d6b0a0f-d5f0-478c-97cc-7689844cd20f, session id: /demo
11:50:54.884 [pool-1-thread-4] INFO hello.world.DemoResource - Hello world!

  1. Open redis session

11:53:48.544 [nioEventLoopGroup-5-2] DEBUG i.m.s.h.CookieHttpSessionIdGenerator - cookie value: NmQ2YjBhMGYtZDVmMC00NzhjLTk3Y2MtNzY4OTg0NGNkMjBm
11:53:48.545 [nioEventLoopGroup-5-2] DEBUG i.m.s.http.CookieHttpSessionStrategy - path 6d6b0a0f-d5f0-478c-97cc-7689844cd20f, session id: /demo
11:53:48.548 [lettuce-nioEventLoop-4-1] INFO hello.world.DemoResource - Hello world!

RedisHealthIndicator doesn't use an ExecutorService and block on EventLoop threads

Expected Behavior

This indicator should use the IO ExecutorService (like JdbcIndicator does) or other mecanism to prevent to block on EventLoop Thread when /health or /health/readiness endpoint is called

Actual Behaviour

This indicator is making a blocking call (RedisClient#connect) on EventLoop thread when called from /health/readiness endpoint.
I found that issue using BlockHound

Steps To Reproduce

  1. Create a simple demo app here with redis and management features
  2. Use BlockHound at startup
public class Application {

    public static void main(String[] args) {
        // This is done only for this demo, can't be used on production
        BlockHound.install(builder ->
            builder
                 // we allow some known and irrelevant blocking calls
                .allowBlockingCallsInside("com.fasterxml.jackson.databind.ObjectMapper", "findModules")
                .allowBlockingCallsInside("io.micronaut.core.io.service.SoftServiceLoader$ServiceLoaderIterator", "hasNext")
        );
        Micronaut.run(Application.class, args);
    }
}
  1. Call the endpoint http://localhost:8080/health

Environment Information

No response

Example Application

https://github.com/ggerbaud/demo-micronaut-redis-eventloop

Version

3.0.0 but also 2.5.11

Configuring session namespace does not change activeSessionsKey

Task List

  • Steps to reproduce provided
  • Stacktrace (if present) provided
  • Example that reproduces the problem uploaded to Github
  • Full description of the issue provided (see below)

Steps to Reproduce

Change the default namespace for session keys in Redis:

micronaut.session.http.redis.namespace: 'myapp_sessions:'

Sessions are stored in Redis with the namespace prefix, but the key holding active sessions still uses the default prefix micronaut.session:

If you want active sessions to be under the same namespace you must also change active-sessions-key to include your namespace prefix, like this:

micronaut.session.http.redis.active-sessions-key: 'myapp_sessions:active-sessions'

Expected Behaviour

I expected active sessions to be stored with the namespace prefix when I configured namespace.

Actual Behaviour

Active sessions uses the default prefix "micronaut.session:' unless you explicitly configure micronaut.session.http.redis.active-sessions-key.

The key is prefixed with namespace when the class is instantiated but it is not changed when namespace is changed.
https://github.com/micronaut-projects/micronaut-redis/blob/master/redis-lettuce/src/main/java/io/micronaut/configuration/lettuce/session/RedisHttpSessionConfiguration.java#L42

IMO the behavior should be changed. If that's not possible due to the breaking change, it should be documented with a warning to avoid unexpected namespace pollution.

Some might argue that finding all active sessions (cross namespaces) using a single key is a feature. But I think that's a corner case.

Environment Information

  • Operating System: MacOS 10.15.5
  • Micronaut Version: 1.3.7
  • JDK Version: OpenJDK 11.0.7

Example Application

  • TODO: link to github repository with example that reproduces the issue

RedisConnectionUtil.findRedisConnection bug

At https://github.com/micronaut-projects/micronaut-redis/blob/master/redis-lettuce/src/main/java/io/micronaut/configuration/lettuce/RedisConnectionUtil.java#L53 a bean of type StatefulRedisClusterConnection.class is looked up but shouldnt it be of type StatefulRedisConnection.class instead?
It seems like a bug since the same lookup is made 3 lines above.

Eg for caching, which use this method, it is currently only possible to use a redis that is setup using a default conf, a named redis server won't work since NamedRedisClientFactory returns connections of type StatefulRedisConnection.

Timeout erro when using only host and port in application.yml

Expected Behavior

Connect correctly using host and port configuration.

Actual Behaviour

The connection timeout error is thrown when the URI is not informed.

Steps To Reproduce

Create project using:

redis: host: 127.0.0.1 port: 6379

Environment Information

No response

Example Application

I'll create a sample project as soon as I can

Version

5.3.x

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.