Reputation: 655
Storm version - 1.0.6.
I have a custom serializer registered for one of my classes. As expected it's write method gets called which runs successfully. However, read method of my custom serializer does not get called at all although execute gets called in downstream bolts. I am testing this in Local cluster with always try to serialize set to true.
My guess is that, for some reason storm is not happy with my custom serialization and passes the tuple as it is to downstream without serialization. The pointer value of the field I see in the downstream bolt is same as the one that was emitted.
I don't see any warnings or errors. How can I know what goes wrong in this situation? I know I can get the source and debug, but any other tips anyone think that would be helpful?
Upvotes: 0
Views: 69
Reputation: 3651
I believe that local mode clusters only test serialization, not deserialization. When all the workers are running in one process, there's no reason to serialize and deserialize tuples because they're not going over the network. The always try serialize setting just makes Storm serialize tuples anyway to test that serialization works, but the tuples aren't transferred in serialized form in the local cluster.
See the serialization check, where the check is called and where deserialization happens in a non-local cluster.
Upvotes: 1