incubator-s4-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jiaan Zeng <l.alle...@gmail.com>
Subject throttling vs blocking
Date Wed, 17 Jul 2013 15:16:30 GMT
Hi,

1)
I wonder what is the main difference between
org.apache.s4.comm.staging.ThrottlingThreadPoolExecutorService and
org.apache.s4.comm.staging.BlockingThreadPoolExecutorService

I understand ThrottlingThreadPoolExecutorService uses RateLimiter to
control the rate while BlockingThreadPoolExecutorService uses
Semaphore. I guess ThrottlingThreadPoolExecutorService is supposed to
drop events while BlockingThreadPoolExecutorService is supposed to
block until thread pool can handle events.

However, in ThrottlingThreadPoolExecutorService -> submit(Runnable
task), rateLimitedPermits.acquire() is called which means the
invocation is blocked until permit is acquired. It seems to me that
ThrottlingThreadPoolExecutorService never drops events and works in
the same way as BlockingThreadPoolExecutorService does. And there is
no unit test for event drop on this.

2)
Too what is the the main difference between
org.apache.s4.core.staging.LoadSheddingSenderExecutorServiceFactory
and org.apache.s4.core.staging.ThrottlingSenderExecutorServiceFactory

They both claim they will drop event.


Thanks.

--
Regards,
Jiaan

Mime
View raw message