Hi Alexander,

You are right, the acking for the non-stateful bolts in a stateful topology is 
better handled by the bolts themselves. 

I plan to submit a patch soon. You can track it here - 
https://issues.apache.org/jira/browse/STORM-1608

Thanks,
Arun

From:  Alexander T
Reply-To:  "[email protected]"
Date:  Monday, March 7, 2016 at 4:37 PM
To:  "[email protected]"
Subject:  Re: Stateful bolts and acking

Hi Arun, 

After reading your messages a bit more thoroughly (sorry :) ) I managed to get 
the basic case working. If I understand you correctly, one should inherit from 
BaseRichBolt, which normally requires manual acking, but *not* perform any 
manual acking. And one should *not* extends BaseBasicBolt which normally 
auto-acks, since this auto-acking will not work as intended with stateful 
topologies.

This would unfortunately  mean that we cannot use bolts which were written for 
stateless topologies in stateful ones. Are there any plans of adapters or to 
change the interface so that they can interoperate?

Best regards
Alexander

On Fri, Mar 4, 2016 at 7:26 PM, Arun Mahadevan <[email protected]> wrote:
Hi Alexander,

The simple topology like the one you have mentioned with a single spout and a 
stateful bolt with an empty execute works for me. I assume you are anchoring 
the tuple in the spout’s emit. 

For a stateful topology, the acking doesn’t work if a bolt extends from 
BaseBasicBolt or if theres an “ack" call in the bolt’s execute.

You could open a JIRA (https://issues.apache.org/jira/browse/STORM) and share 
the sample topology code where you see this issue.

Thanks,
Arun


From: Alexander T
Reply-To: "[email protected]"
Date: Friday, March 4, 2016 at 11:15 PM
To: "[email protected]"
Subject: Re: Stateful bolts and acking

Hi Arun,

Thank you for your reply. I have tried both manual and automatic acking, and 
neither works. Or rather, the acker is running but my spout is still receiving 
failure callbacks after the message timeout. I have a simple topology with a 
single spout reading from a file and a single empty bolt doing nothing. If I 
change from an empty stateless bolt to an empty  stateful bolt the acking stops 
working.

Should I proceed with sending this in as a reproducing test case? Or is there 
anything else which I might have missed?

Regards,
Alexander

On Mar 4, 2016 5:30 PM, "Arun Mahadevan" <[email protected]> wrote:
Hi Alexander,

For a stateful topology the anchoring and acking is automatically taken care 
of. 

Can you check if any of your bolts inherit BaseBasicBolt or if you are manually 
acking. Your non-stateful bolts could inherit from BaseRichBolt instead.

Thanks,
Arun


From: Alexander T
Reply-To: "[email protected]"
Date: Friday, March 4, 2016 at 8:04 PM
To: "[email protected]"
Subject: Stateful bolts and acking

Hello! 

I'm on the 1.x-branch and trying to use the stateful bolts. But I cannot get it 
to work with acking. No matter what I try acking simply doesn't seem to have 
any effect. I see acking tasks suceeding in the logs (ack tuples forwarded to 
the acker, acker runs successfully), but still acking is not succesful and the 
tuples fail after the message timeout. I've not been successful in debugging 
the acker and the rotating map to figure out why acking is not completing. I 
was wondering if acking is supposed to work with stateful bolts, if so how and 
if there are any examples? Any ideas would be appreciated.

Best regards,

Alexander T


Reply via email to