Thank you. This was helpful. Just to confirm, the RotatingMap is associated 
with the Executor thread of the Spout task. The messages are verified for their 
expiration when rotate() is invoked on the RotatingMap.

And this gets invoked when for every tick tuple received by the Spout. Is this 
correct?

I also see the acker holding on to a rotating Map…so every tuple emitted by the 
spout will be in the rotating Map of both Executor thread for spout task and 
the executor thread of the acker bolt. And in both cases, only for tick tuples 
the rotate method is invoked. Why there are rotating map instances in two 
different threads?

Thanks again,
Srividhya



From: 임정택 [mailto:[email protected]]
Sent: Thursday, May 21, 2015 12:36 AM
To: [email protected]
Subject: Re: RotatingMap and Spout

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]<mailto:[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

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.

Reply via email to