Skip to content

Commit

Permalink
Merge pull request #4907 from chimp1984/avoid-persistence-write-call-…
Browse files Browse the repository at this point in the history
…before-read

Prevent that we write data at shutdown before we have read the data.
  • Loading branch information
ripcurlx authored Dec 8, 2020
2 parents 6431d63 + 15ed165 commit 6adf850
Showing 1 changed file with 8 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,11 @@ public static void flushAllDataToDisk(ResultHandler completeHandler) {
// For Priority.HIGH data we want to write to disk in any case to be on the safe side if we might have missed
// a requestPersistence call after an important state update. Those are usually rather small data stores.
// Otherwise we only persist if requestPersistence was called since the last persist call.
if (persistenceManager.source.flushAtShutDown || persistenceManager.persistenceRequested) {
// We also check if we have called read already to avoid a very early write attempt before we have ever
// read the data, which would lead to a write of empty data
// (fixes https://github.com/bisq-network/bisq/issues/4844).
if (persistenceManager.readCalled.get() &&
(persistenceManager.source.flushAtShutDown || persistenceManager.persistenceRequested)) {
// 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.

Expand Down Expand Up @@ -184,6 +188,7 @@ public enum Source {
private Timer timer;
private ExecutorService writeToDiskExecutor;
public final AtomicBoolean initCalled = new AtomicBoolean(false);
public final AtomicBoolean readCalled = new AtomicBoolean(false);


///////////////////////////////////////////////////////////////////////////////////////////
Expand Down Expand Up @@ -303,6 +308,8 @@ public T getPersisted(String fileName) {
return null;
}

readCalled.set(true);

File storageFile = new File(dir, fileName);
if (!storageFile.exists()) {
return null;
Expand Down

0 comments on commit 6adf850

Please sign in to comment.