Dominik You are correct. Thanks very much.
After moving it to inside the prepare() method the error stopped happening. Thanks -- IPVP From: Dominik V. <[email protected]><mailto:[email protected]> Reply: [email protected] <[email protected]>><mailto:[email protected]> Date: March 26, 2016 at 9:16:58 PM To: [email protected] <[email protected]>><mailto:[email protected]> Subject: Re: What can be causing NotSerializableException ? When you say "pre-existing" does that mean you set the DAO before the topology is submitted? Because that would cause a serialization exception if no custom serializer is provided. At which point do you create OrderDAO? Without a custom serializer this must not be done in the Bolt's constructor, but can be done, for example, in the Bolt's prepare method. From your exception it looks like you did: class YourBolt { private OrderDAO DAO; public YourBolt() { DAO = new OrderDAO(); } } In contrast to: class YourBolt { private OrderDAO DAO; public void prepare() { DAO = new OrderDAO(); } } 2016-03-26 16:18 GMT+01:00 I PVP <[email protected]<mailto:[email protected]>>: Dominik, Thanks for your answer. The only thing I am doing is ,inside the bolt Execute() method , calling OrderDAO.findbyID() that uses Hibernate to retrieve the Order from MySql Table. The Topology sets de KafkaSpout and the Bolt and that is all. When you say “...suppose you are setting the MySqlDB attribute in the Bolt's constructor..” Does that mean Storm requires that something specific is done before being able to call MySql or can I just use my pre-existing DAO that calls Hibernate to get the MySql data ? Thanks -- IPVP From: Dominik V. <[email protected]><mailto:[email protected]> Reply: [email protected]<mailto:[email protected]> <[email protected]>><mailto:[email protected]> Date: March 26, 2016 at 11:48:38 AM To: [email protected]<mailto:[email protected]> <[email protected]>><mailto:[email protected]> Subject: Re: What can be causing NotSerializableException ? I suppose you are setting the MySqlDB attribute in the Bolt's constructor? The constructor is called *before* serializing the Topology and submitting it to the cluster. Therefore every object within the Topology *before* submitting it must be serializable. You can solve this bei either providing a custom serializer, read more here: http://storm.apache.org/releases/0.10.0/Serialization.html Or you set the MySqlDB object in the Bolt's prepare method which is called *after* submitting the topology. 2016-03-26 0:06 GMT+01:00 I PVP <[email protected]<mailto:[email protected]>>: Hi everyone, What can be causing a “java.io.NotSerializableException ….Caused by: java.io.NotSerializableException: com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers" ? I new to Storm. After successfully developing, deploying to cluster and seeing my first 4 Topologies( all simple: KafkaSpout-> Bolt) running fine for the last 2 days, today I created the 5th Topology that the only difference from the others is the Bolt retrieving a object from MySqlDB via a pre existing application wide Hibernate DAO. Stack Trace : RUNNING locally via LocalCluster: ----- 30239 [main] INFO b.s.d.supervisor - Starting supervisor with id c4c8647d-fee5-45a4-a44d-943e5e03e3b0 at host 192.168.56.1 30335 [main] ERROR o.a.s.s.o.a.z.s.NIOServerCnxnFactory - Thread Thread[main,5,main] died java.lang.RuntimeException: java.io.NotSerializableException: com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers at backtype.storm.utils.Utils.javaSerialize(Utils.java:91) ~[storm-core-0.10.0.jar:0.10.0] at backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:107) ~[storm-core-0.10.0.jar:0.10.0] at <my package name>.storm.topology.OrderCreatedTopology.main(OrderCreatedTopology.java:54) ~[classes/:?] Caused by: java.io.NotSerializableException: com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) ~[?:1.8.0_60] at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[?:1.8.0_60] at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[?:1.8.0_60] at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[?:1.8.0_60] at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[?:1.8.0_60] at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[?:1.8.0_60] at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) ~[?:1.8.0_60] at backtype.storm.utils.Utils.javaSerialize(Utils.java:87) ~[storm-core-0.10.0.jar:0.10.0] ----- SUBMITTING to Cluster via StormSubmitter.submitTopology() ----- ... 658 [main] INFO b.s.u.Utils - Using defaults.yaml from resources 3922 [main] INFO b.s.u.Utils - Using storm.yaml from resources Exception in thread "main" java.lang.RuntimeException: java.io.NotSerializableException: com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers at backtype.storm.utils.Utils.javaSerialize(Utils.java:91) at backtype.storm.topology.TopologyBuilder.createTopology(TopologyBuilder.java:107) at <my package name>.storm.topology.OrderCreatedTopology.main(OrderCreatedTopology.java:47) Caused by: java.io.NotSerializableException: com.fasterxml.jackson.datatype.hibernate5.HibernateSerializers at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184) at java.io.ObjectOutputStream.writeArray(ObjectOutputStream.java:1378) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1174) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548) at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509) at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432) at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:348) at backtype.storm.utils.Utils.javaSerialize(Utils.java:87) ----- — Thanks IPVP
