Oh no, please never put user code (with included libraries) into flink's classpath. It's not supported exactly for classloader reasons. Why did you think that this would be a good approach? Is your jar too big?
Maybe a different deployment mode would be more appropriate? [1] Alternatively, if you want to go the hacky route, you could also try to shade your dependencies. [1] https://flink.apache.org/news/2020/07/14/application-mode.html On Fri, Nov 20, 2020 at 9:18 PM Alexander Bagerman <bager...@gmail.com> wrote: > I just switched from providing my jar while creating a Remote environment > to providing this jar on flink's classpath. It used to work just fine when > the jar was shipped to Fllink with the job graph. Now when jar is available > to flink on the startup the same job that used to run is failing with > exception I provided. I suspect that it might be class loader issue but am > not sure > > On Fri, Nov 20, 2020 at 12:10 PM Arvid Heise <ar...@ververica.com> wrote: > >> The easiest solution for all non-trivial issues like this is to start the >> application locally in a local executor, so you can debug in your IDE. >> >> Additionally, double-check that you have no lambdas/anonymous classes >> that reference outer classes with ObjectMapper. ObjectMapper should also be >> static as it's fully immutable, so you can also check that. >> >> On Fri, Nov 20, 2020 at 8:55 PM Alexander Bagerman <bager...@gmail.com> >> wrote: >> >>> Thanks, Arvid, >>> That is what I thought too. I went through all the instances where it >>> might 've been a member variable and made sure that it's declared as >>> transient :-( Is there anything else I can check? >>> Alex >>> >>> On Fri, Nov 20, 2020 at 11:50 AM Arvid Heise <ar...@ververica.com> >>> wrote: >>> >>>> Are you using ObjectMapper as a non-transient field? If so, please make >>>> it transient and initialize in open() of a Rich*Function. >>>> >>>> On Fri, Nov 20, 2020 at 7:56 PM Alexander Bagerman <bager...@gmail.com> >>>> wrote: >>>> >>>>> Hi, >>>>> I added my custom jar (that includes dependencies on Jackson) to Flink >>>>> classpath. It seems to be loaded just fine. But when the job starts I am >>>>> getting an exception below. I am sure how to interpret the exception >>>>> though >>>>> and would appreciate it if somebody gives me advice on it. >>>>> Thanks >>>>> Alex >>>>> >>>>> 2020-11-20 18:34:35,643 WARN org.apache.flink.runtime.taskmanager.Task >>>>> [] - Source: Custom Source -> Flat Map -> Flat Map -> Sink: Unnamed (1 >>>>> /1) (dcbf799dadba5d4b7e7f5af15919a4b6) switched from RUNNING to FAILED >>>>> . >>>>> org.apache.flink.streaming.runtime.tasks.StreamTaskException: Cannot >>>>> instantiate user function. >>>>> at org.apache.flink.streaming.api.graph.StreamConfig >>>>> .getStreamOperatorFactory(StreamConfig.java:275) ~[flink-dist_2.11- >>>>> 1.11.2.jar:1.11.2] >>>>> at org.apache.flink.streaming.runtime.tasks.OperatorChain >>>>> .createChainedOperator(OperatorChain.java:471) ~[flink-dist_2.11-1.11. >>>>> 2.jar:1.11.2] >>>>> at org.apache.flink.streaming.runtime.tasks.OperatorChain >>>>> .createOutputCollector(OperatorChain.java:393) ~[flink-dist_2.11-1.11. >>>>> 2.jar:1.11.2] >>>>> at org.apache.flink.streaming.runtime.tasks.OperatorChain.<init>( >>>>> OperatorChain.java:155) ~[flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at org.apache.flink.streaming.runtime.tasks.StreamTask >>>>> .beforeInvoke(StreamTask.java:459) ~[flink-dist_2.11-1.11.2.jar:1.11.2 >>>>> ] >>>>> at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke( >>>>> StreamTask.java:528) ~[flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:721) >>>>> [flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at org.apache.flink.runtime.taskmanager.Task.run(Task.java:546) >>>>> [flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at java.lang.Thread.run(Thread.java:748) [?:1.8.0_265] >>>>> Caused by: java.lang.ClassCastException: cannot assign instance of >>>>> java.util.concurrent.ConcurrentHashMap to field >>>>> com.fasterxml.jackson.databind.deser.DeserializerCache._cachedDeserializers >>>>> of type com.fasterxml.jackson.databind.util.LRUMap in instance of >>>>> com.fasterxml.jackson.databind.deser.DeserializerCache >>>>> at java.io.ObjectStreamClass$FieldReflector.setObjFieldValues( >>>>> ObjectStreamClass.java:2301) ~[?:1.8.0_265] >>>>> at java.io.ObjectStreamClass.setObjFieldValues(ObjectStreamClass >>>>> .java:1431) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream >>>>> .java:2372) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream >>>>> .java:2290) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream >>>>> .java:2148) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: >>>>> 1647) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream >>>>> .java:2366) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream >>>>> .java:2290) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream >>>>> .java:2148) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: >>>>> 1647) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream >>>>> .java:2366) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream >>>>> .java:2290) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream >>>>> .java:2148) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: >>>>> 1647) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream >>>>> .java:2366) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream >>>>> .java:2290) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream >>>>> .java:2148) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: >>>>> 1647) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream >>>>> .java:2366) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream >>>>> .java:2290) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream >>>>> .java:2148) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: >>>>> 1647) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream >>>>> .java:2366) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream >>>>> .java:2290) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream >>>>> .java:2148) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: >>>>> 1647) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream >>>>> .java:2366) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readSerialData(ObjectInputStream >>>>> .java:2290) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream >>>>> .java:2148) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject0(ObjectInputStream.java: >>>>> 1647) ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:483) >>>>> ~[?:1.8.0_265] >>>>> at java.io.ObjectInputStream.readObject(ObjectInputStream.java:441) >>>>> ~[?:1.8.0_265] >>>>> at org.apache.flink.util.InstantiationUtil.deserializeObject( >>>>> InstantiationUtil.java:576) ~[flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at org.apache.flink.util.InstantiationUtil.deserializeObject( >>>>> InstantiationUtil.java:562) ~[flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at org.apache.flink.util.InstantiationUtil.deserializeObject( >>>>> InstantiationUtil.java:550) ~[flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at org.apache.flink.util.InstantiationUtil.readObjectFromConfig( >>>>> InstantiationUtil.java:511) ~[flink-dist_2.11-1.11.2.jar:1.11.2] >>>>> at org.apache.flink.streaming.api.graph.StreamConfig >>>>> .getStreamOperatorFactory(StreamConfig.java:260) ~[flink-dist_2.11- >>>>> 1.11.2.jar:1.11.2] >>>>> ... 8 more >>>>> >>>> >>>> >>>> -- >>>> >>>> Arvid Heise | Senior Java Developer >>>> >>>> <https://www.ververica.com/> >>>> >>>> Follow us @VervericaData >>>> >>>> -- >>>> >>>> Join Flink Forward <https://flink-forward.org/> - The Apache Flink >>>> Conference >>>> >>>> Stream Processing | Event Driven | Real Time >>>> >>>> -- >>>> >>>> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany >>>> >>>> -- >>>> Ververica GmbH >>>> Registered at Amtsgericht Charlottenburg: HRB 158244 B >>>> Managing Directors: Timothy Alexander Steinert, Yip Park Tung Jason, Ji >>>> (Toni) Cheng >>>> >>> >> >> -- >> >> Arvid Heise | Senior Java Developer >> >> <https://www.ververica.com/> >> >> Follow us @VervericaData >> >> -- >> >> Join Flink Forward <https://flink-forward.org/> - The Apache Flink >> Conference >> >> Stream Processing | Event Driven | Real Time >> >> -- >> >> Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany >> >> -- >> Ververica GmbH >> Registered at Amtsgericht Charlottenburg: HRB 158244 B >> Managing Directors: Timothy Alexander Steinert, Yip Park Tung Jason, Ji >> (Toni) Cheng >> > -- Arvid Heise | Senior Java Developer <https://www.ververica.com/> Follow us @VervericaData -- Join Flink Forward <https://flink-forward.org/> - The Apache Flink Conference Stream Processing | Event Driven | Real Time -- Ververica GmbH | Invalidenstrasse 115, 10115 Berlin, Germany -- Ververica GmbH Registered at Amtsgericht Charlottenburg: HRB 158244 B Managing Directors: Timothy Alexander Steinert, Yip Park Tung Jason, Ji (Toni) Cheng