I've got a couple of specific questions about tuple ordering and failing 
tuples. Given a topology like so - spout S outputting to both B1 and B2, B2 
outputs to B3:

/> B1
S
\> B2 -> B3

If a tuple is emitted to both B1 and B2, and it is explicitly failed at B1 
before the same tuple is processed by B2, will the tuple tree be entirely 
processed before the tuple is failed at the spout? In other words, is the 
following sequence of events possible?


1.       S emits T to B1 and B2

2.       B1 calls collector.fail(T)

3.       S.fail() called for T

4.       B2 processes T, emits T' anchored on T

5.       B3 processes T'

And on a somewhat related note, if a spout is outputting several streams, all 
going to the same bolt (spout S outputting streams St1 and St2 to bolt B), can 
tuples on different streams be received in a different order to the order they 
were emitted by the spout? If a spout emits the following tuples:

1.       T1-T100 to St1

2.       T101 to St2

Can a bolt subscribing to both St1 and St2 receive T101 before T100, or will 
the tuples be ordered according to the emit order at the spout? And will this 
apply throughout the topology?

Thanks,
SimonC

Reply via email to