[ 
https://issues.apache.org/jira/browse/FLINK-18459?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Xinhao Li closed FLINK-18459.
-----------------------------
    Resolution: Fixed

> ClassNotFoundException in ProcessFunction property object's callback and 
> promise
> --------------------------------------------------------------------------------
>
>                 Key: FLINK-18459
>                 URL: https://issues.apache.org/jira/browse/FLINK-18459
>             Project: Flink
>          Issue Type: Bug
>          Components: Build System
>    Affects Versions: 1.10.0
>         Environment: The environment is:
> Flink version is 1.10.0 and using shaded {{netty}}, {{hadoop}}, {{guava}} and 
> {{jackson}}.
> Using cassandra-driver-mapping: 3.9.0 and shaded cassandra-driver-core: 3.9.0.
>            Reporter: Xinhao Li
>            Priority: Major
>
> I am developing a Flink application and it will use Cassandra Driver to 
> interact with Cassandra DB. The Cassandra Driver is implemented in Singleton 
> fashion and multiple Flink process functions will interact with it to get 
> data from Cassandra. I also add a future callback to each 
> {{Session.executeAsync}}'s {{ResultSetFuture}}. The app is run on Kubernetes 
> through Docker containers.
>  
> All dependencies are packaged in a single {{jar}} using {{Bazel}}. Before 
> starting the Flink app, I check all the required classes are in the {{jar}} 
> and are correct and complete. And I use the shaded dependency in order to 
> avoid class loading conflict in JVM. But, when I start and run the Flink app. 
> I keep seeing the following ClassNotFoundException in the Taskmanager logs.
> I also notice that these issues are easier to reproduce when giving more 
> resources and parallelism to the Flink app and the process functions. And the 
> issues are most likely happen in the future callback or Promise.
>  java.lang.NoClassDefFoundError: com/datastax/driver/core/SessionManager$State
>     at 
> com.datastax.driver.core.SessionManager.getState(SessionManager.java:211)
>     at 
> io.uhana.cassandra.CassandraDriver.sessionNeedsReconnect(CassandraDriver.java:508)
>     at io.uhana.cassandra.CassandraDriver.access$000(CassandraDriver.java:61)
>     at 
> io.uhana.cassandra.CassandraDriver$1.onFailure(CassandraDriver.java:518)
>     at 
> com.google.common.util.concurrent.Futures$CallbackListener.run(Futures.java:1387)
>     at 
> com.google.common.util.concurrent.AbstractFuture.executeListener(AbstractFuture.java:1015)
>     at 
> com.google.common.util.concurrent.AbstractFuture.complete(AbstractFuture.java:868)
>     at 
> com.google.common.util.concurrent.AbstractFuture.setException(AbstractFuture.java:713)
>     at 
> com.datastax.driver.core.DefaultResultSetFuture.onSet(DefaultResultSetFuture.java:230)
>     at 
> com.datastax.driver.core.RequestHandler.setFinalResult(RequestHandler.java:235)
>     at 
> com.datastax.driver.core.RequestHandler.access$2600(RequestHandler.java:61)
>     at 
> com.datastax.driver.core.RequestHandler$SpeculativeExecution.setFinalResult(RequestHandler.java:1011)
>     at 
> com.datastax.driver.core.RequestHandler$SpeculativeExecution.onSet(RequestHandler.java:647)
>     at 
> com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1262)
>     at 
> com.datastax.driver.core.Connection$Dispatcher.channelRead0(Connection.java:1180)
>     at 
> com.datastax.shaded.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:105)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>     at 
> com.datastax.shaded.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>     at 
> com.datastax.shaded.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:102)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>     at 
> com.datastax.shaded.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:312)
>     at 
> com.datastax.shaded.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:286)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>     at 
> com.datastax.shaded.netty.channel.ChannelInboundHandlerAdapter.channelRead(ChannelInboundHandlerAdapter.java:86)
>     at 
> com.datastax.driver.core.InboundTrafficMeter.channelRead(InboundTrafficMeter.java:38)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:335)
>     at 
> com.datastax.shaded.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1304)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:356)
>     at 
> com.datastax.shaded.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:342)
>     at 
> com.datastax.shaded.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:921)
>     at 
> com.datastax.shaded.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:135)
>     at 
> com.datastax.shaded.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:646)
>     at 
> com.datastax.shaded.netty.channel.nio.NioEventLoop.processSelectedKeysPlain(NioEventLoop.java:546)
>     at 
> com.datastax.shaded.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:500)
>     at 
> com.datastax.shaded.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:460)
>     at 
> com.datastax.shaded.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
>     at 
> com.datastax.shaded.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>     at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.ClassNotFoundException: 
> com.datastax.driver.core.SessionManager$State
>     at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
>     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
>     at 
> org.apache.flink.util.ChildFirstClassLoader.loadClass(ChildFirstClassLoader.java:69)
>     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>     ... 49 more
> and
> ConstantReconnectionPolicy$ConstantSchedule' [enable DEBUG level for full 
> stacktrace] was thrown by a user handler's exceptionCaught() method while 
> handling the following exception:
> java.lang.NoClassDefFoundError: 
> com/datastax/shaded/netty/handler/timeout/IdleState
>     at 
> com.datastax.shaded.netty.handler.timeout.IdleStateHandler$ReaderIdleTimeoutTask.run(IdleStateHandler.java:493)
>     at 
> com.datastax.shaded.netty.handler.timeout.IdleStateHandler$AbstractIdleTask.run(IdleStateHandler.java:466)
>     at 
> com.datastax.shaded.netty.util.concurrent.PromiseTask$RunnableAdapter.call(PromiseTask.java:38)
>     at 
> com.datastax.shaded.netty.util.concurrent.ScheduledFutureTask.run(ScheduledFutureTask.java:120)
>     at 
> com.datastax.shaded.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:399)
>     at 
> com.datastax.shaded.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:464)
>     at 
> com.datastax.shaded.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:131)
>     at 
> com.datastax.shaded.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
>     at java.base/java.lang.Thread.run(Thread.java:834)
> Caused by: java.lang.ClassNotFoundException: 
> com.datastax.shaded.netty.handler.timeout.IdleState
>     at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
>     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
>     at 
> org.apache.flink.util.ChildFirstClassLoader.loadClass(ChildFirstClassLoader.java:69)
>     at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
>     ... 9 more {{}}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to