Hello Abhishek, I can try to answer this question as per my knowledge. At first you need to understand that Transactional Topologies are been deprecated. Trident is something which is widely used now days. Now if you have gone through the wiki https://github.com/nathanmarz/storm/wiki/Transactional-topologies#design-3-storms-design It has been explained in detail that Design 3 of Storm works in 2 phases : Processing and Committing phase which helps to avoid starvation of the batches whose work can be done in a parallel way.
Now in case of *WordCount* exp. Batch 2 and 3 can do the partial count in a parallel way (i.e they are not starved) during Processing phase, but when it comes to Committing phase as order is required to be maintain to make an *GlobalCountUpdate* in the database, committing operation should be done in an ordered manner. So in your case if you don't care about *GlobalCountUpdate *or something where order is not required to be maintained, you can simply make your last bolt a normal BaseBatchBolt by avoiding it to implement ICommiter Interface. So now the final bolt will also work in a parallel fashion. To understand it practically checkout this stuff https://github.com/aniketalhat/StatefulBolts I hope that I have answered your query, still any confusion you can revert back to the mail. On Thu, Mar 13, 2014 at 12:22 AM, Abhishek Priya <[email protected]>wrote: > If I have a transactional topology, and lets say I emit 3 batches from my > spout. > > My batch 1 keeps getting some exception and is replayed again and again > but it never reaches committer bolt. > > In that case, my batch 2 and 3 are going to be starved. How do I handle > this case? > > Thanks > -Abhishek > > > -- > ------------------------------------------------------------ > Make a difference by making a micro-loan! > <http://goog_16932267> > <http://rangde.org> > -- *Aniket Alhatlinkedin.com/in/aniketalhat <http://linkedin.com/in/aniketalhat>* *+91 976 603 9317*
