try {
if (batching.compareAndSet(false, true)) {
try {
Future result = null;
if (nextWriteBatch != null) {
result = new WriteFuture(nextWriteBatch.getLatch());
batchQueue.put(nextWriteBatch);
nextWriteBatch = null;
} else {
result = new WriteFuture(new CountDownLatch(0));
}
return result;
} finally {
batching.set(false);
}