The reason we can't use CountdownLatch (I actually considered this) is that the thread could be interrupted in some cases in Flume, in which case Flume will call process method again, so we'd need to allocate a new CountdownLatch (I don't think it has a reset option).