You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@storm.apache.org by I PVP <ip...@hotmail.com> on 2016/03/26 00:06:07 UTC

What can be causing NotSerializableException ?

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


Re: What can be causing NotSerializableException ?

Posted by I PVP <ip...@hotmail.com>.
Dominik

You are correct. Thanks very much.

After moving it to inside the prepare() method the error stopped happening.

Thanks
--
IPVP


From: Dominik V. <do...@gmail.com>
Reply: user@storm.apache.org <us...@storm.apache.org>
Date: March 26, 2016 at 9:16:58 PM
To: user@storm.apache.org <us...@storm.apache.org>
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 <ip...@hotmail.com>>:
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. <do...@gmail.com>
Reply: user@storm.apache.org<ma...@storm.apache.org> <us...@storm.apache.org>
Date: March 26, 2016 at 11:48:38 AM
To: user@storm.apache.org<ma...@storm.apache.org> <us...@storm.apache.org>
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 <ip...@hotmail.com>>:
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




Re: What can be causing NotSerializableException ?

Posted by "Dominik V." <do...@gmail.com>.
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 <ip...@hotmail.com>:

> 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. <do...@gmail.com>
> <do...@gmail.com>
> Reply: user@storm.apache.org <us...@storm.apache.org>>
> <us...@storm.apache.org>
> Date: March 26, 2016 at 11:48:38 AM
> To: user@storm.apache.org <us...@storm.apache.org>> <us...@storm.apache.org>
> 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 <ip...@hotmail.com>:
>
>> 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
>>
>>
>

Re: What can be causing NotSerializableException ?

Posted by I PVP <ip...@hotmail.com>.
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. <do...@gmail.com>
Reply: user@storm.apache.org <us...@storm.apache.org>
Date: March 26, 2016 at 11:48:38 AM
To: user@storm.apache.org <us...@storm.apache.org>
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 <ip...@hotmail.com>>:
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



Re: What can be causing NotSerializableException ?

Posted by "Dominik V." <do...@gmail.com>.
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 <ip...@hotmail.com>:

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