gRPC RPC calls are not working

2,849 views
Skip to first unread message

qplc

unread,
Sep 21, 2018, 6:17:21 AM9/21/18
to grpc.io
Hi,
I have implemented gRPC in my applications.
I have created 3 modules:
Module1: Generate protobuf files
Module2: Construct gRPC server
Module3: Construct gRPC client

Here, I'm using zookeeper for the load balancing.

Following dependencies have been added to the module1.
    <dependencies>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-protobuf</artifactId>
                <version>1.10.0</version>
            </dependency>
            <dependency>
                <groupId>io.grpc</groupId>
                <artifactId>grpc-stub</artifactId>
                <version>1.10.0</version>
            </dependency>
        </dependencies>

Following dependencies have been added to the module2 and Module3.
        <dependency>
            <groupId>com.google.protobuf</groupId>
            <artifactId>protobuf-java</artifactId>
            <version>3.6.1</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-netty</artifactId>
            <version>1.10.0</version>
        </dependency>
        <dependency>
            <groupId>io.grpc</groupId>
            <artifactId>grpc-grpclb</artifactId>
            <version>1.10.0</version>
            <type>jar</type>
        </dependency>

On application restart both grpc server and client are being connected to the zookeeper. I can see the grpc server listening on the given port as well.

But, getting below error whenever I'm trying to invoke a rpc.

io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl$1NamesResolved.run [io.grpc.internal.ManagedChannelImpl-1] Unexpected exception from LoadBalancer
 java.lang.NoClassDefFoundError: io/netty/util/AsciiString
    at io.grpc.netty.NettyClientTransport.<init>(NettyClientTransport.java:111)
    at io.grpc.netty.NettyChannelBuilder$NettyTransportFactory.newClientTransport(NettyChannelBuilder.java:517)
    at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:49)
    at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:209)
    at io.grpc.internal.InternalSubchannel.obtainActiveTransport(InternalSubchannel.java:188)
    at io.grpc.internal.ManagedChannelImpl$SubchannelImpl.requestConnection(ManagedChannelImpl.java:1130)
    at io.grpc.util.RoundRobinLoadBalancerFactory$RoundRobinLoadBalancer.handleResolvedAddressGroups(RoundRobinLoadBalancerFactory.java:126)
    at io.grpc.internal.ManagedChannelImpl$NameResolverListenerImpl$1NamesResolved.run(ManagedChannelImpl.java:1032)
    at io.grpc.internal.ChannelExecutor.drain(ChannelExecutor.java:73)
    at io.grpc.internal.ManagedChannelImpl$4.get(ManagedChannelImpl.java:403)
    at io.grpc.internal.ClientCallImpl.start(ClientCallImpl.java:238)
    at io.grpc.internal.CensusTracingModule$TracingClientInterceptor$1.start(CensusTracingModule.java:386)
    at io.grpc.internal.CensusStatsModule$StatsClientInterceptor$1.start(CensusStatsModule.java:679)
    at io.grpc.stub.ClientCalls.startCall(ClientCalls.java:293)
    at io.grpc.stub.ClientCalls.asyncStreamingRequestCall(ClientCalls.java:283)
    at io.grpc.stub.ClientCalls.asyncBidiStreamingCall(ClientCalls.java:92)

Can anyone help in this.


Regards,
qplc

Spencer Fang

unread,
Sep 21, 2018, 6:11:59 PM9/21/18
to pooja....@games24x7.com, grpc.io
When you run `mvn dependency:tree ` do you see io.netty pulled into your build?

--
You received this message because you are subscribed to the Google Groups "grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+u...@googlegroups.com.
To post to this group, send email to grp...@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/ed12f364-c35f-420f-952a-3f6edfae135c%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


--
Spencer Fang

qplc

unread,
Sep 24, 2018, 1:46:48 AM9/24/18
to grpc.io
Hi Spencer,

Yes, I have seen it being loaded.
I'm getting below warning.

WARN  [grpc-server-nio-4] - i.n.c.ChannelInitializer - Failed to initialize a channel. Closing: [id: 0x2744ef6e, /192.168
.48.162:57068 => /192.168.48.162:50051]
java.lang.NoClassDefFoundError: io/netty/handler/codec/Headers
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2283)
        at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:811)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1260)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
        at io.grpc.netty.NettyServerTransport.createHandler(NettyServerTransport.java:221)
        at io.grpc.netty.NettyServerTransport.start(NettyServerTransport.java:116)
        at io.grpc.netty.NettyServer$1.initChannel(NettyServer.java:216)
        at io.netty.channel.ChannelInitializer.channelRegistered(ChannelInitializer.java:69)
        at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRegistered(AbstractChannelHandlerContext.java:133)
        at io.netty.channel.AbstractChannelHandlerContext.fireChannelRegistered(AbstractChannelHandlerContext.java:119)
        at io.netty.channel.DefaultChannelPipeline.fireChannelRegistered(DefaultChannelPipeline.java:733)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.register0(AbstractChannel.java:450)
        at io.netty.channel.AbstractChannel$AbstractUnsafe.access$100(AbstractChannel.java:378)
        at io.netty.channel.AbstractChannel$AbstractUnsafe$1.run(AbstractChannel.java:424)
        at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:357)
        at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:357)
        at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:111)
        at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: io.netty.handler.codec.Headers
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1291)
        at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1119)
        ... 21 common frames omitted
And it's not working.

Spencer Fang

unread,
Sep 24, 2018, 12:26:42 PM9/24/18
to pooja....@games24x7.com, grpc.io
The exception suggests a netty class is not loadable at runtime, so it's likely something in your project's maven pom.xml file is misconfigured. Have you looked at our example project's pom.xml to see what is different?

By the way version 1.10 is quite old, the latest version of gRPC is 1.15. Please consider upgrading.

--
You received this message because you are subscribed to the Google Groups "grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+u...@googlegroups.com.
To post to this group, send email to grp...@googlegroups.com.
Visit this group at https://groups.google.com/group/grpc-io.

For more options, visit https://groups.google.com/d/optout.


--
Spencer Fang

qplc

unread,
Sep 25, 2018, 2:48:30 AM9/25/18
to grpc.io
Thanks Spencer for your reply.

I have detected the issue is causing due to netty and guava dependencies. The netty dependencies were getting overridden.
If I use latest grpc version 1.15 which comes with guava version 20.0 then it is failing one of my functionality as it requires downgraded guava version it seems.
Even guava resolved with grpc version 1.10 is failing one of my business functionality.

Is there any way to use latest grpc version and make it compatible with my business functionality with minimal changes?

On Friday, September 21, 2018 at 3:47:21 PM UTC+5:30, qplc wrote:
Reply all
Reply to author
Forward
0 new messages