Ah, I see what you mean. The “setBolt” method without parallelism hint is not overloaded for stateful bolts so if parallelism hint is not specified it ends up as being normal bolt. Will raise a JIRA for fixing this.
Spico, For now, can you provide parallelism hint while you add stateful bolt to the topology ? Thanks, Arun From: Alexander T Reply-To: "user@storm.apache.org" Date: Friday, April 15, 2016 at 2:38 PM To: "user@storm.apache.org" Subject: Re: initState method not invoked in Storm 1.0 Hi Arun, I meant that it's very easy to use the wrong setBolt method overload by mistake, since stateful bolts are supertypes of stateless ones. Regards Alex On Apr 15, 2016 10:54 AM, "Arun Mahadevan" <ar...@apache.org> wrote: Its the same method (builder.setBolt) that adds stateful bolts to a topology. Heres an example - https://github.com/apache/storm/blob/master/examples/storm-starter/src/jvm/storm/starter/StatefulTopology.java Spico, Do you see any errors in the logs ? You might want to turn on debug logs and see whats happening. Can you also try running the StatefulTopology in the storm-starter and check if you see the same behavior ? Thanks, Arun From: Alexander T Reply-To: "user@storm.apache.org" Date: Friday, April 15, 2016 at 2:06 PM To: "user@storm.apache.org" Subject: Re: initState method not invoked in Storm 1.0 Hi Spico, Are you adding your bolt to the topology with the special methods for stateful bolts? It's quite easy to use the regular addBolt method and it will in that case be treated as a stateless one. Cheers Alex On Apr 15, 2016 10:33 AM, "Spico Florin" <spicoflo...@gmail.com> wrote: Hello! I'm running a topology in LocalCluster that has a stasteful Bolt. Wile debugging, I have observed that the initState method is not invoked at all. The documentation said: "The initState method is invoked by the framework during the bolt initialization with the previously saved state of the bolt. This is invoked after prepare but before the bolt starts processing any tuples". Due to this, the state field remains null and I get NPE when I populate it with state .put Any idea why the initState is not invoked? Regards, Florin Here is my code: public class TimeSeriesStatefulBolt extends BaseStatefulBolt<KeyValueState<Long, Map<String, Float>>> { private KeyValueState<Long, Map<String, Float>> state; @Override public void initState(KeyValueState<Long, Map<String, Float>> state) { this.state = state; }