You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@storm.apache.org by Navin Ipe <na...@searchlighthealth.com> on 2016/11/30 06:58:22 UTC

Does the bolt in between have the ability to re-emit a failed tuple?

Hi,

Just need a confirmation for this topology:

*Spout* ---emit---> *Bolt1* ---emit---> *Bolt2*

Spout is BaseRichSpout. Bolt1 and Bolt2 are BaseRichBolt.
Spout emits just one tuple per nextTuple() call.
Bolt1 anchors to the tuple it received from Spout and emits many different
tuple objects.

If any of the emits of Bolt1 fails, is there no way for Bolt 1 to re-emit
the tuple? Do I have to wait for the topology to figure out that one of
Bolt1's tuples failed and then do a re-emit from the Spout?

-- 
Regards,
Navin

Re: Does the bolt in between have the ability to re-emit a failed tuple?

Posted by Ambud Sharma <as...@gmail.com>.
Replaying of tuples is done from the Spout and not done on a point to point
basis like Apache Flume.

Either a tuple is completely processed i.e. acked by every single bolt in
the pipeline or it's not; if it's not then it will be replayed by the Spout
(if the Spout implements a replay logic when the fail() method is called)

Acking has to be done at every stage of the pipeline.

Here's a post that will explain you the necessary details of the XoR
Ledger: https://bryantsai.com/fault-tolerant-message-processing-in-storm/

On Wed, Nov 30, 2016 at 9:10 PM, Navin Ipe <na...@searchlighthealth.com>
wrote:

> Apart from the previous question, there's also the question of whether we
> should ack the tuple in execute() of Bolt1? Or is it just sufficient to ack
> it in Bolt2?
>
>
> On Wed, Nov 30, 2016 at 12:28 PM, Navin Ipe <navin.ipe@searchlighthealth.
> com> wrote:
>
>> Hi,
>>
>> Just need a confirmation for this topology:
>>
>> *Spout* ---emit---> *Bolt1* ---emit---> *Bolt2*
>>
>> Spout is BaseRichSpout. Bolt1 and Bolt2 are BaseRichBolt.
>> Spout emits just one tuple per nextTuple() call.
>> Bolt1 anchors to the tuple it received from Spout and emits many
>> different tuple objects.
>>
>> If any of the emits of Bolt1 fails, is there no way for Bolt 1 to re-emit
>> the tuple? Do I have to wait for the topology to figure out that one of
>> Bolt1's tuples failed and then do a re-emit from the Spout?
>>
>> --
>> Regards,
>> Navin
>>
>
>
>
> --
> Regards,
> Navin
>

Re: Does the bolt in between have the ability to re-emit a failed tuple?

Posted by Navin Ipe <na...@searchlighthealth.com>.
Apart from the previous question, there's also the question of whether we
should ack the tuple in execute() of Bolt1? Or is it just sufficient to ack
it in Bolt2?


On Wed, Nov 30, 2016 at 12:28 PM, Navin Ipe <navin.ipe@searchlighthealth.com
> wrote:

> Hi,
>
> Just need a confirmation for this topology:
>
> *Spout* ---emit---> *Bolt1* ---emit---> *Bolt2*
>
> Spout is BaseRichSpout. Bolt1 and Bolt2 are BaseRichBolt.
> Spout emits just one tuple per nextTuple() call.
> Bolt1 anchors to the tuple it received from Spout and emits many different
> tuple objects.
>
> If any of the emits of Bolt1 fails, is there no way for Bolt 1 to re-emit
> the tuple? Do I have to wait for the topology to figure out that one of
> Bolt1's tuples failed and then do a re-emit from the Spout?
>
> --
> Regards,
> Navin
>



-- 
Regards,
Navin