Skip to content

spring boot data redis startup fail #43255

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
mingchiuli opened this issue Nov 22, 2024 · 8 comments
Closed

spring boot data redis startup fail #43255

mingchiuli opened this issue Nov 22, 2024 · 8 comments
Labels
status: invalid An issue that we don't feel is valid

Comments

@mingchiuli
Copy link

Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueue

Version: 3.3.6
When application start up with aot, error happen(It's normal in 3.3.5):

2024-11-22T10:25:52.501+08:00  WARN 1 --- [oundedElastic-1] o.s.b.a.d.r.RedisReactiveHealthIndicator : Redis health check failed

org.springframework.data.redis.RedisConnectionFailureException: Unable to connect to Redis
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.translateException(LettuceConnectionFactory.java:1849) ~[na:na]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1780) ~[na:na]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getNativeConnection(LettuceConnectionFactory.java:1582) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.lambda$getConnection$0(LettuceConnectionFactory.java:1562) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.doInLock(LettuceConnectionFactory.java:1523) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$SharedConnection.getConnection(LettuceConnectionFactory.java:1559) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getSharedReactiveConnection(LettuceConnectionFactory.java:1270) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:1145) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory.getReactiveConnection(LettuceConnectionFactory.java:118) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at reactor.core.publisher.MonoSupplier.call(MonoSupplier.java:67) ~[na:na]
	at reactor.core.publisher.FluxSubscribeOnCallable$CallableSubscribeOnSubscription.run(FluxSubscribeOnCallable.java:228) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.6.12]
	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:68) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.6.12]
	at reactor.core.scheduler.SchedulerTask.call(SchedulerTask.java:28) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.6.12]
	at [email protected]/java.util.concurrent.FutureTask.run(FutureTask.java:317) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:na]
	at [email protected]/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:304) ~[na:na]
	at [email protected]/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:na]
	at [email protected]/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) ~[na:na]
	at [email protected]/java.lang.Thread.runWith(Thread.java:1588) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:na]
	at [email protected]/java.lang.Thread.run(Thread.java:1575) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:832) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:na]
	at org.graalvm.nativeimage.builder/com.oracle.svm.core.thread.PlatformThreads.threadStartRoutine(PlatformThreads.java:808) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:na]
Caused by: io.lettuce.core.RedisConnectionException: Unable to connect to redis/<unresolved>:6379
	at io.lettuce.core.AbstractRedisClient.getConnection(AbstractRedisClient.java:350) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:6.3.2.RELEASE/8941aea]
	at io.lettuce.core.RedisClient.connect(RedisClient.java:215) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:6.3.2.RELEASE/8941aea]
	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.lambda$getConnection$1(StandaloneConnectionProvider.java:112) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at [email protected]/java.util.Optional.orElseGet(Optional.java:364) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:na]
	at org.springframework.data.redis.connection.lettuce.StandaloneConnectionProvider.getConnection(StandaloneConnectionProvider.java:112) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:3.3.6]
	at org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory$ExceptionTranslatingConnectionProvider.getConnection(LettuceConnectionFactory.java:1778) ~[na:na]
	... 19 common frames omitted

Caused by: io.netty.handler.codec.EncoderException: java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueue
	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:125) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:893) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite(AbstractChannelHandlerContext.java:875) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:984) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:868) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:421) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:6.3.2.RELEASE/8941aea]
	at io.lettuce.core.protocol.CommandHandler.write(CommandHandler.java:387) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:6.3.2.RELEASE/8941aea]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:891) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:956) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:982) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:950) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:1000) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:974) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:305) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.lettuce.core.RedisHandshake.dispatch(RedisHandshake.java:290) ~[na:na]
	at io.lettuce.core.RedisHandshake.dispatchHello(RedisHandshake.java:227) ~[na:na]
	at io.lettuce.core.RedisHandshake.initiateHandshakeResp3(RedisHandshake.java:215) ~[na:na]
	at io.lettuce.core.RedisHandshake.tryHandshakeResp3(RedisHandshake.java:105) ~[na:na]
	at io.lettuce.core.RedisHandshake.initialize(RedisHandshake.java:92) ~[na:na]
	at io.lettuce.core.protocol.RedisHandshakeHandler.channelActive(RedisHandshakeHandler.java:100) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:6.3.2.RELEASE/8941aea]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:260) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:238) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:231) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.ChannelInboundHandlerAdapter.channelActive(ChannelInboundHandlerAdapter.java:69) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.lettuce.core.ChannelGroupListener.channelActive(ChannelGroupListener.java:57) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:6.3.2.RELEASE/8941aea]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:260) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:238) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelActive(AbstractChannelHandlerContext.java:231) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelActive(DefaultChannelPipeline.java:1345) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:258) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelActive(AbstractChannelHandlerContext.java:238) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelActive(DefaultChannelPipeline.java:844) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.fulfillConnectPromise(AbstractNioChannel.java:310) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.nio.AbstractNioChannel$AbstractNioUnsafe.finishConnect(AbstractNioChannel.java:340) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:776) ~[na:na]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[na:na]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[na:na]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[na:na]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[na:na]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[na:na]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[na:na]
	... 4 common frames omitted
Caused by: java.lang.NoClassDefFoundError: Could not initialize class io.netty.util.internal.shaded.org.jctools.queues.unpadded.MpscUnpaddedArrayQueue
	at io.netty.util.internal.PlatformDependent.newFixedMpscUnpaddedQueue(PlatformDependent.java:1102) ~[na:na]
	at io.netty.buffer.PoolThreadCache$MemoryRegionCache.<init>(PoolThreadCache.java:337) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.buffer.PoolThreadCache$SubPageMemoryRegionCache.<init>(PoolThreadCache.java:302) ~[na:na]
	at io.netty.buffer.PoolThreadCache.createSubPageCaches(PoolThreadCache.java:113) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.buffer.PoolThreadCache.<init>(PoolThreadCache.java:77) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.initialValue(PooledByteBufAllocator.java:541) ~[na:na]
	at io.netty.buffer.PooledByteBufAllocator$PoolThreadLocalCache.initialValue(PooledByteBufAllocator.java:518) ~[na:na]
	at io.netty.util.concurrent.FastThreadLocal.initialize(FastThreadLocal.java:177) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.util.concurrent.FastThreadLocal.get(FastThreadLocal.java:142) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.buffer.PooledByteBufAllocator.newDirectBuffer(PooledByteBufAllocator.java:398) ~[na:na]
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:188) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.buffer.AbstractByteBufAllocator.directBuffer(AbstractByteBufAllocator.java:179) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.netty.buffer.AbstractByteBufAllocator.ioBuffer(AbstractByteBufAllocator.java:132) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	at io.lettuce.core.protocol.CommandEncoder.allocateBuffer(CommandEncoder.java:65) ~[na:na]
	at io.netty.handler.codec.MessageToByteEncoder.write(MessageToByteEncoder.java:105) ~[wiki.chiu.micro.websocket.MicroWebSocketApplication:4.1.115.Final]
	... 44 common frames omitted

@spring-projects-issues spring-projects-issues added the status: waiting-for-triage An issue we've not yet triaged label Nov 22, 2024
@mhalbritter
Copy link
Contributor

Hello - i assume this is in a native image?

You need to use reachability metadata version 0.3.14, which has updated metadata for netty: https://github.com/oracle/graalvm-reachability-metadata/releases/tag/0.3.14

There hasn't been a Native Build Tools release yet - as soon as Oracle releases one, Boot will pick it up and this issue goes away automatically.

@mhalbritter
Copy link
Contributor

mhalbritter commented Nov 22, 2024

Here are the instructions how to do that for Maven: https://graalvm.github.io/native-build-tools/latest/maven-plugin.html#metadata-support and here for gradle: https://graalvm.github.io/native-build-tools/latest/gradle-plugin.html#metadata-support

I'll add something to the release notes.

@mingchiuli
Copy link
Author

Hello - i assume this is in a native image?

You need to use reachability metadata version 0.3.14, which has updated metadata for netty: https://github.com/oracle/graalvm-reachability-metadata/releases/tag/0.3.14

There hasn't been a Native Build Tools release yet - as soon as Oracle releases one, Boot will pick it up and this issue goes away automatically.

Yes, It is native image. Thanks.

@bclozel bclozel closed this as not planned Won't fix, can't repro, duplicate, stale Nov 22, 2024
@bclozel bclozel added status: invalid An issue that we don't feel is valid and removed status: waiting-for-triage An issue we've not yet triaged labels Nov 22, 2024
@mhalbritter
Copy link
Contributor

@jianyun
Copy link

jianyun commented Nov 22, 2024

我也遇到了,不是Native 的

@mhalbritter
Copy link
Contributor

我也遇到了,不是Native 的

Translates to: It happened to me, too. It wasn't Native.

If this happens on a JVM, please create a small sample so that we can reproduce it: https://github.com/spring-projects/spring-boot/wiki/How-To-Get-Help

@aprochko
Copy link

Hello @mhalbritter
thank you for the link, but it's related to 3.4.0. The problem is that 3.3.6 (same as for @mingchiuli) this problem also exist.
#43148
So it's also a kind of breaking changes for me, which are not described.

@wilkinsona
Copy link
Member

Unfortunately, it was a patch release of Netty that introduced the problem when using it in a native image and Spring Boot 3.3.6 upgraded to that patch release. Using 0.3.14 of the reachability metadata should address the problem with 3.3.6 as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status: invalid An issue that we don't feel is valid
Projects
None yet
Development

No branches or pull requests

7 participants