Thanks Congxian for the tip. Arthas looks great Hao Sun Team Lead 1019 Market St. 7F San Francisco, CA 94103
On Fri, Jan 4, 2019 at 5:42 PM Congxian Qiu <qcx978132...@gmail.com> wrote: > Hi, Hao Sun > > For debugging the `ClassNotFoundException`, maybe the Arthas[1] tool can > help. > > [1] Arthas <https://github.com/alibaba/arthas>: > https://github.com/alibaba/arthas > <https://github.com/alibaba/arthas> > > Hao Sun <ha...@zendesk.com> 于2019年1月3日周四 下午10:08写道: > >> >> I am on Flink 1.7.1 and K8S. >> I said "suddenly" because my program worked fine until I added a new >> MapFunction. >> I do not know the details, but I think I know what is causing it >> >> === Start of Program === >> val stream: DataStream[MaxwellEvent] = <get the stream> >> steam.map(new ProblemFunction()) will cause the issue >> class ProblemFunction(stringParam: String)(implicit datadog: >> DatadogClient) extends MapFunction[MaxwellEvent, MaxwellEvent] >> === End of Program === >> >> I think the class taking curry params caused the issue, after I give up >> on the curry format, the error disappeared. >> >> I am using https://github.com/sbt/sbt-assembly >> <https://github.com/sbt/sbt-assembly> to assemble >> the fat jar. >> There might be some issue, or config issue with that as well. >> >> I am reading this article, it is a good start for me as well >> >> https://heapanalytics.com/blog/engineering/missing-scala-class-noclassdeffounderror >> <https://heapanalytics.com/blog/engineering/missing-scala-class-noclassdeffounderror> >> >> >> Hao Sun >> Team Lead >> 1019 Market St. 7F >> San Francisco, CA 94103 >> >> >> On Thu, Jan 3, 2019 at 1:08 AM Timo Walther <twal...@apache.org> wrote: >> >>> Hi Hao, >>> >>> which Flink version are you using? What do you mean with "suddenly", did >>> it work before? >>> >>> Regards, >>> Timo >>> >>> >>> Am 03.01.19 um 07:13 schrieb Hao Sun: >>> >>> Yep, javap shows the class is there, but FlinkUserCodeClassLoaders >>> somehow could not find it suddenly >>> >>> javap -cp /opt/flink/lib/zendesk-fps-core-assembly-0.1.0.jar >>> 'com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45' >>> Compiled from "ConnectedStreams.scala" >>> public final class >>> com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45 >>> extends >>> org.apache.flink.api.scala.typeutils.CaseClassSerializer<com.zendesk.fraudprevention.datatypes.MaxwellEvent> >>> { >>> public com.zendesk.fraudprevention.datatypes.MaxwellEvent >>> createInstance(java.lang.Object[]); >>> public >>> org.apache.flink.api.scala.typeutils.CaseClassSerializer<com.zendesk.fraudprevention.datatypes.MaxwellEvent> >>> createSerializerInstance(java.lang.Class<com.zendesk.fraudprevention.datatypes.MaxwellEvent>, >>> org.apache.flink.api.common.typeutils.TypeSerializer<?>[]); >>> public org.apache.flink.api.java.typeutils.runtime.TupleSerializerBase >>> createSerializerInstance(java.lang.Class, >>> org.apache.flink.api.common.typeutils.TypeSerializer[]); >>> public java.lang.Object createInstance(java.lang.Object[]); >>> public >>> com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45(com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90, >>> org.apache.flink.api.common.typeutils.TypeSerializer[]); >>> } >>> >>> Hao Sun >>> Team Lead >>> 1019 Market St. 7F >>> San Francisco, CA 94103 >>> >>> >>> On Wed, Jan 2, 2019 at 6:04 PM qi luo <luoqi...@gmail.com> wrote: >>> >>>> Hi Hao, >>>> >>>> Since Flink is using Child-First class loader, you may try search for >>>> the class >>>> "*com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45” >>>> in your fat JAR. Is that an inner class?* >>>> >>>> *Best,* >>>> *Qi* >>>> >>>> On Jan 3, 2019, at 7:01 AM, Hao Sun <ha...@zendesk.com> wrote: >>>> >>>> Hi, >>>> >>>> I am wondering if there are any protips to figure out what class is not >>>> found? >>>> >>>> ===== Logs ==== >>>> org.apache.flink.streaming.runtime.tasks.StreamTaskException: Could not >>>> instantiate chained outputs. >>>> at >>>> org.apache.flink.streaming.api.graph.StreamConfig.getChainedOutputs(StreamConfig.java:324) >>>> at >>>> org.apache.flink.streaming.runtime.tasks.OperatorChain.createOutputCollector(OperatorChain.java:292) >>>> at org.apache.flink.streaming.runtime.tasks.OperatorChain.<init>( >>>> http://OperatorChain.java:133 >>>> <http://OperatorChain.java:133>) >>>> at >>>> org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:267) >>>> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:704) >>>> at java.lang.Thread.run(Thread.java:748) >>>> *Caused by: java.lang.ClassNotFoundException: >>>> com.zendesk.fraudprevention.examples.ConnectedStreams$$anon$90$$anon$45* >>>> at java.net.URLClassLoader.findClass(URLClassLoader.java:381) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:424) >>>> at >>>> org.apache.flink.runtime.execution.librarycache.FlinkUserCodeClassLoaders$ChildFirstClassLoader.loadClass(FlinkUserCodeClassLoaders.java:129) >>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:357) >>>> at java.lang.Class.forName0(Native Method) >>>> at java.lang.Class.forName(Class.java:348) >>>> at >>>> org.apache.flink.util.InstantiationUtil$ClassLoaderObjectInputStream.resolveClass(InstantiationUtil.java:77) >>>> at >>>> java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1866) >>>> at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1749) >>>> at >>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2040) >>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571) >>>> at >>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285) >>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209) >>>> at >>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067) >>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571) >>>> at >>>> java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2285) >>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2209) >>>> at >>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067) >>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571) >>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) >>>> at java.util.ArrayList.readObject(ArrayList.java:797) >>>> at sun.reflect.GeneratedMethodAccessor26.invoke(Unknown Source) >>>> at >>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) >>>> at java.lang.reflect.Method.invoke(Method.java:498) >>>> at >>>> java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1158) >>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2176) >>>> at >>>> java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2067) >>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1571) >>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:431) >>>> at >>>> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:524) >>>> at >>>> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:510) >>>> at >>>> org.apache.flink.util.InstantiationUtil.deserializeObject(InstantiationUtil.java:498) >>>> at >>>> org.apache.flink.util.InstantiationUtil.readObjectFromConfig(InstantiationUtil.java:459) >>>> at >>>> org.apache.flink.streaming.api.graph.StreamConfig.getChainedOutputs(StreamConfig.java:321) >>>> ... 5 more >>>> >>>> >>>> Hao Sun >>>> Team Lead >>>> 1019 Market St. 7F >>>> San Francisco, CA 94103 >>>> >>>> >>>> >>> > > -- > Blog:http://www.klion26.com > <http://www.klion26.com> > GTalk:qcx978132955 > 一切随心 >