Hi. AFAIK, Spout sets up timer to emit tick tuples each TOPOLOGY-TICK-TUPLE-FREQ-SECS. (Please refer setup-ticks!)
Spout changes TOPOLOGY-TICK-TUPLE-FREQ-SECS to TOPOLOGY-MESSAGEE-TIMEOUT-SECS for the first time, so timer is scheduled to each TOPOLOGY-MESSAGE-TIMEOUT-SECS. (Please refer add-acker!) When Spout receives tick tuple, it calls pending.rotate(). Its size is 2, so actual tuple expiration time is between TOPOLOGY-MESSAGE-TIMEOUT-SECS and (2 * TOPOLOGY-MESSAGE-TIMEOUT-SECS). (Please refer mk-threads :spout) Hope this helps. Thanks! Jungtaek Lim (HeartSaVioR) 2015-05-21 12:40 GMT+09:00 Srividhya Shanmugam <[email protected]> : > Hi, > > > > I have been reading through code and online to find how and where exactly > a tuple gets timed out and therefore the spout’s fail method is invoked. As > I look through the executor.clj class, a RotatingMap is always associated > with a Spout. This is where the emitted tuples pending ack are stored. > > > > Every time the RotatingMap’s rotate() method is called, it invokes the > passed in ExpiryCallback implementation to notify the expired tuple. > > > > What I am trying to understand is who calls the rotate() method? > > I also see a put method in the RotatingMap – I am guessing this is invoked > when the Spout emits a new tuple. > > > > Is my understanding correct? > > > > Thank you very much, > > Srividhya > > This email and any files transmitted with it are confidential, proprietary > and intended solely for the individual or entity to whom they are > addressed. If you have received this email in error please delete it > immediately. > -- Name : 임 정택 Blog : http://www.heartsavior.net / http://dev.heartsavior.net Twitter : http://twitter.com/heartsavior LinkedIn : http://www.linkedin.com/in/heartsavior
