Enforce that clients set the priority. Remove the initialize methods which did not have priority as a param.

Make initializePersistenceManager in StorageService abstract to enforce in concrete class to define priority.

Change priorities for future renaming to a different meaning. instead of priority we want to describe the category: private data, public data,.... will come in next commit
This commit is contained in:
chimp1984 2020-10-02 15:33:57 -05:00
parent 18f64d53ca
commit 137b5e81d1
No known key found for this signature in database
GPG key ID: 9801B4EC591F90E3
13 changed files with 32 additions and 24 deletions

View file

@ -94,7 +94,7 @@ public class PersistenceManager<T extends PersistableEnvelope> {
// 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.priority == Priority.HIGH || persistenceManager.persistenceRequested) {
if (persistenceManager.priority.flushAtShutDown || persistenceManager.persistenceRequested) {
// We don't know from which thread we are called so we map back to user thread when calling persistNow
UserThread.execute(() -> {
// We always get our completeHandler called even if exceptions happen. In case a file write fails
@ -125,18 +125,21 @@ public class PersistenceManager<T extends PersistableEnvelope> {
///////////////////////////////////////////////////////////////////////////////////////////
public enum Priority {
LOW(1, TimeUnit.HOURS.toSeconds(1)),
MID(4, TimeUnit.MINUTES.toSeconds(30)),
HIGH(10, TimeUnit.SECONDS.toSeconds(30));
LOW(1, TimeUnit.HOURS.toSeconds(1), false),
MID(4, TimeUnit.MINUTES.toSeconds(30), false),
HIGH(10, TimeUnit.SECONDS.toSeconds(30), true);
@Getter
private final int numMaxBackupFiles;
@Getter
private final long delayInSec;
@Getter
private final boolean flushAtShutDown;
Priority(int numMaxBackupFiles, long delayInSec) {
Priority(int numMaxBackupFiles, long delayInSec, boolean flushAtShutDown) {
this.numMaxBackupFiles = numMaxBackupFiles;
this.delayInSec = delayInSec;
this.flushAtShutDown = flushAtShutDown;
}
}
@ -176,18 +179,10 @@ public class PersistenceManager<T extends PersistableEnvelope> {
// API
///////////////////////////////////////////////////////////////////////////////////////////
public void initialize(T persistable) {
this.initialize(persistable, persistable.getDefaultStorageFileName(), Priority.MID);
}
public void initialize(T persistable, Priority priority) {
this.initialize(persistable, persistable.getDefaultStorageFileName(), priority);
}
public void initialize(T persistable, String fileName) {
this.initialize(persistable, fileName, Priority.MID);
}
public void initialize(T persistable, String fileName, Priority priority) {
this.persistable = persistable;
this.fileName = fileName;

View file

@ -57,7 +57,7 @@ public final class AddressEntryList implements PersistableEnvelope, PersistedDat
public AddressEntryList(PersistenceManager<AddressEntryList> persistenceManager) {
this.persistenceManager = persistenceManager;
persistenceManager.initialize(this, PersistenceManager.Priority.HIGH);
this.persistenceManager.initialize(this, PersistenceManager.Priority.HIGH);
}
@Override

View file

@ -73,7 +73,7 @@ public class BallotListService implements PersistedDataHost, DaoSetupService {
this.validatorProvider = validatorProvider;
this.persistenceManager = persistenceManager;
this.persistenceManager.initialize(ballotList);
this.persistenceManager.initialize(ballotList, PersistenceManager.Priority.LOW);
}

View file

@ -63,6 +63,11 @@ public class BlindVoteStorageService extends MapStoreService<BlindVoteStore, Per
return FILE_NAME;
}
@Override
protected void initializePersistenceManager() {
persistenceManager.initialize(store, PersistenceManager.Priority.LOW);
}
@Override
public Map<P2PDataStorage.ByteArray, PersistableNetworkPayload> getMap() {
return store.getMap();

View file

@ -57,6 +57,11 @@ public class ProposalStorageService extends MapStoreService<ProposalStore, Persi
return FILE_NAME;
}
@Override
protected void initializePersistenceManager() {
persistenceManager.initialize(store, PersistenceManager.Priority.LOW);
}
@Override
public Map<P2PDataStorage.ByteArray, PersistableNetworkPayload> getMap() {
return store.getMap();

View file

@ -57,6 +57,11 @@ public class TempProposalStorageService extends MapStoreService<TempProposalStor
return FILE_NAME;
}
@Override
protected void initializePersistenceManager() {
persistenceManager.initialize(store, PersistenceManager.Priority.LOW);
}
@Override
public Map<P2PDataStorage.ByteArray, ProtectedStorageEntry> getMap() {
return store.getMap();

View file

@ -56,7 +56,7 @@ public class ClosedTradableManager implements PersistedDataHost {
this.dumpDelayedPayoutTx = dumpDelayedPayoutTx;
this.persistenceManager = persistenceManager;
this.persistenceManager.initialize(closedTradables, "ClosedTrades");
this.persistenceManager.initialize(closedTradables, "ClosedTrades", PersistenceManager.Priority.HIGH);
}
@Override

View file

@ -66,7 +66,7 @@ public class FailedTradesManager implements PersistedDataHost {
this.dumpDelayedPayoutTx = dumpDelayedPayoutTx;
this.persistenceManager = persistenceManager;
this.persistenceManager.initialize(failedTrades, "FailedTrades");
this.persistenceManager.initialize(failedTrades, "FailedTrades", PersistenceManager.Priority.HIGH);
}
@Override

View file

@ -75,7 +75,7 @@ public final class Navigation implements PersistedDataHost {
public Navigation(PersistenceManager<NavigationPath> persistenceManager) {
this.persistenceManager = persistenceManager;
persistenceManager.initialize(navigationPath, PersistenceManager.Priority.LOW);
persistenceManager.initialize(navigationPath, PersistenceManager.Priority.MID);
}
@Override

View file

@ -215,7 +215,7 @@ public class GUIUtil {
if (!directory.isEmpty()) {
PersistenceManager<PersistableEnvelope> persistenceManager = new PersistenceManager<>(new File(directory), persistenceProtoResolver, corruptedStorageFileHandler);
PaymentAccountList paymentAccounts = new PaymentAccountList(accounts);
persistenceManager.initialize(paymentAccounts, fileName);
persistenceManager.initialize(paymentAccounts, fileName, PersistenceManager.Priority.HIGH);
persistenceManager.persistNow(() -> {
persistenceManager.shutdown();
new Popup().feedback(Res.get("guiUtil.accountExport.savedToPath",

View file

@ -138,7 +138,7 @@ public class PeerManager implements ConnectionListener, PersistedDataHost {
this.clockWatcher = clockWatcher;
this.persistenceManager = persistenceManager;
this.persistenceManager.initialize(peerList, PersistenceManager.Priority.LOW);
this.persistenceManager.initialize(peerList, PersistenceManager.Priority.MID);
this.networkNode.addConnectionListener(this);
setConnectionLimits(maxConnections);

View file

@ -167,7 +167,7 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers
networkNode.addMessageListener(this);
networkNode.addConnectionListener(this);
this.persistenceManager.initialize(sequenceNumberMap, PersistenceManager.Priority.LOW);
this.persistenceManager.initialize(sequenceNumberMap, PersistenceManager.Priority.HIGH);
}
@Override

View file

@ -134,9 +134,7 @@ public abstract class StoreService<T extends PersistableEnvelope> {
initializePersistenceManager();
}
protected void initializePersistenceManager() {
persistenceManager.initialize(store);
}
protected abstract void initializePersistenceManager();
protected abstract T createStore();
}