Rename writeCompleted to onWriteCompleted

Add comment
Use decrementAndGet instead of getAndDecrement

Tested cases when there is an exception at write to disk, but as we call the result handler in the finally clause we get always called onWriteCompleted, so it cannot happen that we get stuck.
This commit is contained in:
chimp1984 2020-10-02 15:00:49 -05:00
parent 232fa8ddee
commit 10e9b054a0
No known key found for this signature in database
GPG key ID: 9801B4EC591F90E3

View file

@ -94,20 +94,22 @@ public class PersistenceManager<T extends PersistableEnvelope> {
if (persistenceManager.persistenceRequested) { if (persistenceManager.persistenceRequested) {
// We don't know from which thread we are called so we map back to user thread when calling persistNow // We don't know from which thread we are called so we map back to user thread when calling persistNow
UserThread.execute(() -> { UserThread.execute(() -> {
// We always get our completeHandler called even if exceptions happen. In case a file write fails
// we still call our shutdown and count down routine as the completeHandler is triggered in any case.
persistenceManager.persistNow(() -> persistenceManager.persistNow(() ->
writeCompleted(completeHandler, openInstances, persistenceManager)); onWriteCompleted(completeHandler, openInstances, persistenceManager));
}); });
} else { } else {
writeCompleted(completeHandler, openInstances, persistenceManager); onWriteCompleted(completeHandler, openInstances, persistenceManager);
} }
}); });
} }
protected static void writeCompleted(ResultHandler completeHandler, private static void onWriteCompleted(ResultHandler completeHandler,
AtomicInteger openInstances, AtomicInteger openInstances,
PersistenceManager<?> persistenceManager) { PersistenceManager<?> persistenceManager) {
persistenceManager.shutdown(); persistenceManager.shutdown();
openInstances.getAndDecrement(); openInstances.decrementAndGet();
if (openInstances.get() == 0) { if (openInstances.get() == 0) {
log.info("flushAllDataToDisk completed"); log.info("flushAllDataToDisk completed");
UserThread.execute(completeHandler::handleResult); UserThread.execute(completeHandler::handleResult);