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