Skip to content
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

Tracing is enabled even when using DefaultClientResources #2829

Open
narayansingh opened this issue Apr 15, 2024 Discussed in #2828 · 0 comments
Open

Tracing is enabled even when using DefaultClientResources #2829

narayansingh opened this issue Apr 15, 2024 Discussed in #2828 · 0 comments

Comments

@narayansingh
Copy link

narayansingh commented Apr 15, 2024

Discussed in #2828

Originally posted by narayansingh April 15, 2024
Hi,
I am puzzled with an issue which only happens in prod environment, where set commands start to fail and following stack trace[1] is logged in to logs. Looking at the stack trace entry CommandHandler.java:396 I noticed that this code is only executed when tracing is enabled. But we never enabled the tracing as we used redisClient = RedisClient.create(redisURI) to create the client[2] which uses DefaultClientResources.

I have looked through the code and couldn't find any other way where this could be setup. Could someone please help me with this and figure out how come tracing is enabled?


We're using lettuce-core:5.2.1.RELEASE with Wildfly:10 in K8S.


redis_error

References

[1] Server log

WARN [io.lettuce.core.protocol.DefaultEndpoint] (lettuce-nioEventLoop-4-1) Unexpected exception during request: java.lang.IndexOutOfBoundsException: writerIndex(0) + minWritableBytes(35003394) exceeds maxCapacity(35003392): UnpooledHeapByteBuf(ridx: 0, widx: 0, cap: 35003392/35003392): java.lang.IndexOutOfBoundsException: writerIndex(0) + minWritableBytes(35003394) exceeds maxCapacity(35003392): UnpooledHeapByteBuf(ridx: 0, widx: 0, cap: 35003392/35003392) at io.netty.buffer.AbstractByteBuf.ensureWritable0(AbstractByteBuf.java:293) at io.netty.buffer.ByteBufUtil.reserveAndWriteUtf8Seq(ByteBufUtil.java:552) at io.netty.buffer.ByteBufUtil.writeUtf8(ByteBufUtil.java:509) at io.lettuce.core.codec.StringCodec.encode(StringCodec.java:93) at io.lettuce.core.codec.StringCodec.encodeAndAllocateBuffer(StringCodec.java:173) at io.lettuce.core.codec.StringCodec.encodeValue(StringCodec.java:154) at io.lettuce.core.codec.StringCodec.encodeValue(StringCodec.java:39) at io.lettuce.core.protocol.CommandArgs$ValueArgument.toString(CommandArgs.java:717) at java.lang.String.valueOf(String.java:2994) at java.lang.StringBuilder.append(StringBuilder.java:131) at io.lettuce.core.LettuceStrings.collectionToDelimitedString(LettuceStrings.java:172) at io.lettuce.core.protocol.CommandArgs.toCommandString(CommandArgs.java:306) at io.lettuce.core.protocol.CommandHandler.writeSingleCommand(CommandHandler.java:396) at io.lettuce.core.protocol.CommandHandler.write(CommandHandler.java:353) at io.netty.channel.AbstractChannelHandlerContext.invokeWrite0(AbstractChannelHandlerContext.java:716) at io.netty.channel.AbstractChannelHandlerContext.invokeWriteAndFlush(AbstractChannelHandlerContext.java:763) at io.netty.channel.AbstractChannelHandlerContext.write(AbstractChannelHandlerContext.java:789) at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:757) at io.netty.channel.AbstractChannelHandlerContext.writeAndFlush(AbstractChannelHandlerContext.java:812) at io.netty.channel.DefaultChannelPipeline.writeAndFlush(DefaultChannelPipeline.java:1037) at io.netty.channel.AbstractChannel.writeAndFlush(AbstractChannel.java:293) at io.lettuce.core.protocol.DefaultEndpoint.channelWriteAndFlush(DefaultEndpoint.java:342) at io.lettuce.core.protocol.DefaultEndpoint.writeToChannelAndFlush(DefaultEndpoint.java:282) at io.lettuce.core.protocol.DefaultEndpoint.write(DefaultEndpoint.java:142) at io.lettuce.core.protocol.DefaultEndpoint$RetryListener.requeueCommands(DefaultEndpoint.java:938) at io.lettuce.core.protocol.DefaultEndpoint$RetryListener.lambda$potentiallyRequeueCommands$0(DefaultEndpoint.java:925) at io.netty.util.concurrent.PromiseTask.runTask(PromiseTask.java:98) at io.netty.util.concurrent.PromiseTask.run(PromiseTask.java:106) at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163) at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:510) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:518) at io.netty.util.concurrent.SingleThreadEventExecutor$6.run(SingleThreadEventExecutor.java:1050) 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)

[2] Sample Client code

redisClient = RedisClient.create(redisURI);
redisClient.connect();
RedisCommands<String, String> command = connection.sync()
SetArgs args = new SetArgs().ex(Integer.parseInt(ttlSeconds))
command.set(key, value, args)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant