Closed theangrydev closed 3 years ago
This seems to be same issue preventing the current master to be upgraded to the latest grpc-java
do you have a reproducer @theangrydev ?
A easy way to get the same ISE is:
vertx-grpc/pom.xml
bump the version to 1.36.0
VertxServer
line 98 (.build()
)Run the unit tests, the 1st one to reach there will throw the same ISE which in my case prints:
java.lang.IllegalStateException
at io.vertx.core.net.impl.VertxEventLoopGroup.next(VertxEventLoopGroup.java:37)
at io.grpc.netty.NettyServer.<init>(NettyServer.java:141)
at io.grpc.netty.NettyServerBuilder.buildTransportServers(NettyServerBuilder.java:640)
at io.grpc.netty.NettyServerBuilder$NettyClientTransportServersBuilder.buildClientTransportServers(NettyServerBuilder.java:169)
at io.grpc.internal.ServerImplBuilder.build(ServerImplBuilder.java:231)
at io.grpc.internal.AbstractServerImplBuilder.build(AbstractServerImplBuilder.java:166)
at io.vertx.grpc.VertxServer$ActualServer.<init>(VertxServer.java:98)
at io.vertx.grpc.VertxServer$ActualServer.<init>(VertxServer.java:57)
at io.vertx.grpc.VertxServer.lambda$start$1(VertxServer.java:170)
at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1705)
at io.vertx.grpc.VertxServer.start(VertxServer.java:170)
at io.vertx.ext.grpc.GrpcTestBase.startServer(GrpcTestBase.java:91)
at io.vertx.ext.grpc.GrpcTestBase.startServer(GrpcTestBase.java:84)
at io.vertx.ext.grpc.GrpcTestBase.startServer(GrpcTestBase.java:73)
at io.vertx.ext.grpc.ContextTest.testBlocking(ContextTest.java:135)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at io.vertx.ext.unit.junit.VertxUnitRunner.invokeTestMethod(VertxUnitRunner.java:95)
at io.vertx.ext.unit.junit.VertxUnitRunner.lambda$invokeExplosively$0(VertxUnitRunner.java:114)
at io.vertx.ext.unit.impl.TestContextImpl.run(TestContextImpl.java:90)
at io.vertx.ext.unit.junit.VertxUnitRunner.lambda$invokeExplosively$1(VertxUnitRunner.java:127)
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:96)
at io.vertx.core.impl.AbstractContext.dispatch(AbstractContext.java:59)
at io.vertx.core.impl.EventLoopContext.lambda$runOnContext$0(EventLoopContext.java:39)
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:500)
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)
Version
4.0.2
Context
Upgrading to vertx-grpc 4.x seems to have broken support for gRPC verticles.
In the stack trace below, I can see that in the constructor of
ActualServer
aNettyServer
is built that expects theVertxEventLoopGroup
to have anEventLoop
available.However,
VertxServer
only seems to add anEventLoop
toVertxEventLoopGroup
after theActualServer
is created and so it blows up.Am I missing something here?