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
