[
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)