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

Is Vertx Redis API blocking? #165

Open
hiddenalpha opened this issue Apr 10, 2024 · 1 comment
Open

Is Vertx Redis API blocking? #165

hiddenalpha opened this issue Apr 10, 2024 · 1 comment

Comments

@hiddenalpha
Copy link
Member

hiddenalpha commented Apr 10, 2024

Why do I have the impression that vertx redis API seems to perform blocking IO on the eventloop?
See attached vertx-redis-client-blocking-EventLoop.log [6.7MiB].

I already opened #161 to fix one specific case. But still, I'm confused that redisAPI seems to be blocking.

Question 1: In which extent is my assumption correct here? Or do I see some other effect I'm not aware of?

Question 2: If my assumption is correct, does this mean ALL our calls to redis API throughout our codebase are potentially blocking the eventloop?

@hiddenalpha
Copy link
Member Author

Another example:

2024-05-28T12:04:52,327 test houston WARN BlockedThreadChecker - Thread Thread[vert.x-eventloop-thread-1,5,main] has been blocked for 75 ms
io.vertx.core.VertxException: Thread blocked
	at io.vertx.redis.client.impl.types.BulkType.create(BulkType.java:30) ~[vertx-redis-client-4.5.1.jar:4.5.1]
	at io.vertx.redis.client.impl.RESPParser.handle(RESPParser.java:128) ~[vertx-redis-client-4.5.1.jar:4.5.1]
	at io.vertx.redis.client.impl.RESPParser.handle(RESPParser.java:24) ~[vertx-redis-client-4.5.1.jar:4.5.1]
	at io.vertx.core.net.impl.NetSocketImpl.lambda$new$1(NetSocketImpl.java:101) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.net.impl.NetSocketImpl$$Lambda$1590/0x00000008406b8840.handle(Unknown Source) ~[?:?]
	at io.vertx.core.streams.impl.InboundBuffer.handleEvent(InboundBuffer.java:255) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.streams.impl.InboundBuffer.write(InboundBuffer.java:134) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.net.impl.NetSocketImpl$DataMessageHandler.handle(NetSocketImpl.java:402) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.impl.ContextImpl.emit(ContextImpl.java:335) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.impl.ContextImpl.emit(ContextImpl.java:328) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.net.impl.NetSocketImpl.handleMessage(NetSocketImpl.java:378) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.net.impl.ConnectionBase.read(ConnectionBase.java:159) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.vertx.core.net.impl.VertxHandler.channelRead(VertxHandler.java:153) ~[vertx-core-4.5.1.jar:4.5.1]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562) ~[netty-transport-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997) ~[netty-common-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) ~[netty-common-4.1.103.Final.jar:4.1.103.Final]
	at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) ~[netty-common-4.1.103.Final.jar:4.1.103.Final]
	at java.lang.Thread.run(Thread.java:829) ~[?:?]

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