From 532c697026db2d85dbf85c66b0c4157faf633044 Mon Sep 17 00:00:00 2001 From: catbref Date: Fri, 2 Oct 2020 12:58:23 +0100 Subject: [PATCH] Moved AT State & online signatures trimming intervals, batch sizes, limits, etc. to Settings --- .../qortal/controller/AtStatesTrimmer.java | 14 ++------ .../OnlineAccountsSignaturesTrimmer.java | 10 ++---- .../java/org/qortal/settings/Settings.java | 34 +++++++++++++++++++ 3 files changed, 40 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/qortal/controller/AtStatesTrimmer.java b/src/main/java/org/qortal/controller/AtStatesTrimmer.java index a0db9650..5b663865 100644 --- a/src/main/java/org/qortal/controller/AtStatesTrimmer.java +++ b/src/main/java/org/qortal/controller/AtStatesTrimmer.java @@ -13,14 +13,6 @@ public class AtStatesTrimmer implements Runnable { private static final Logger LOGGER = LogManager.getLogger(AtStatesTrimmer.class); - private static final long TRIM_INTERVAL = 2 * 1000L; // ms - - // This has a significant effect on execution time - private static final int TRIM_BATCH_SIZE = 200; // blocks - - // Not so significant effect on execution time - private static final int TRIM_LIMIT = 4000; // rows - @Override public void run() { Thread.currentThread().setName("AT States trimmer"); @@ -32,7 +24,7 @@ public class AtStatesTrimmer implements Runnable { while (!Controller.isStopping()) { repository.discardChanges(); - Thread.sleep(TRIM_INTERVAL); + Thread.sleep(Settings.getInstance().getAtStatesTrimInterval()); BlockData chainTip = Controller.getInstance().getChainTip(); if (chainTip == null || NTP.getTime() == null) @@ -47,13 +39,13 @@ public class AtStatesTrimmer implements Runnable { int trimStartHeight = repository.getATRepository().getAtTrimHeight(); - int upperBatchHeight = trimStartHeight + TRIM_BATCH_SIZE; + int upperBatchHeight = trimStartHeight + Settings.getInstance().getAtStatesTrimBatchSize(); int upperTrimHeight = Math.min(upperBatchHeight, upperTrimmableHeight); if (trimStartHeight >= upperTrimHeight) continue; - int numAtStatesTrimmed = repository.getATRepository().trimAtStates(trimStartHeight, upperTrimHeight, TRIM_LIMIT); + int numAtStatesTrimmed = repository.getATRepository().trimAtStates(trimStartHeight, upperTrimHeight, Settings.getInstance().getAtStatesTrimLimit()); repository.saveChanges(); if (numAtStatesTrimmed > 0) { diff --git a/src/main/java/org/qortal/controller/OnlineAccountsSignaturesTrimmer.java b/src/main/java/org/qortal/controller/OnlineAccountsSignaturesTrimmer.java index 9b0ffe20..cca8d611 100644 --- a/src/main/java/org/qortal/controller/OnlineAccountsSignaturesTrimmer.java +++ b/src/main/java/org/qortal/controller/OnlineAccountsSignaturesTrimmer.java @@ -7,6 +7,7 @@ import org.qortal.data.block.BlockData; import org.qortal.repository.DataException; import org.qortal.repository.Repository; import org.qortal.repository.RepositoryManager; +import org.qortal.settings.Settings; import org.qortal.utils.NTP; public class OnlineAccountsSignaturesTrimmer implements Runnable { @@ -15,11 +16,6 @@ public class OnlineAccountsSignaturesTrimmer implements Runnable { private static final long INITIAL_SLEEP_PERIOD = 5 * 60 * 1000L + 1234L; // ms - private static final long TRIM_INTERVAL = 2 * 1000L; // ms - - // This has a significant effect on execution time - private static final int TRIM_BATCH_SIZE = 200; // blocks - public void run() { Thread.currentThread().setName("Online Accounts trimmer"); @@ -30,7 +26,7 @@ public class OnlineAccountsSignaturesTrimmer implements Runnable { while (!Controller.isStopping()) { repository.discardChanges(); - Thread.sleep(TRIM_INTERVAL); + Thread.sleep(Settings.getInstance().getOnlineSignaturesTrimInterval()); BlockData chainTip = Controller.getInstance().getChainTip(); if (chainTip == null || NTP.getTime() == null) @@ -42,7 +38,7 @@ public class OnlineAccountsSignaturesTrimmer implements Runnable { int trimStartHeight = repository.getBlockRepository().getOnlineAccountsSignaturesTrimHeight(); - int upperBatchHeight = trimStartHeight + TRIM_BATCH_SIZE; + int upperBatchHeight = trimStartHeight + Settings.getInstance().getOnlineSignaturesTrimBatchSize(); int upperTrimHeight = Math.min(upperBatchHeight, upperTrimmableHeight); if (trimStartHeight >= upperTrimHeight) diff --git a/src/main/java/org/qortal/settings/Settings.java b/src/main/java/org/qortal/settings/Settings.java index 9a12e880..94ffe839 100644 --- a/src/main/java/org/qortal/settings/Settings.java +++ b/src/main/java/org/qortal/settings/Settings.java @@ -83,8 +83,22 @@ public class Settings { private long repositoryBackupInterval = 0; // ms /** Whether to show a notification when we backup repository. */ private boolean showBackupNotification = false; + /** How long to keep old, full, AT state data (ms). */ private long atStatesMaxLifetime = 2 * 7 * 24 * 60 * 60 * 1000L; // milliseconds + /** How often to attempt AT state trimming (ms). */ + private long atStatesTrimInterval = 5678L; // milliseconds + /** Block height range to scan for trimmable AT states.
+ * This has a significant effect on execution time. */ + private int atStatesTrimBatchSize = 100; // blocks + /** Max number of AT states to trim in one go. */ + private int atStatesTrimLimit = 4000; // records + + /** How often to attempt online accounts signatures trimming (ms). */ + private long onlineSignaturesTrimInterval = 9876L; // milliseconds + /** Block height range to scan for trimmable online accounts signatures.
+ * This has a significant effect on execution time. */ + private int onlineSignaturesTrimBatchSize = 100; // blocks // Peer-to-peer related private boolean isTestNet = false; @@ -420,4 +434,24 @@ public class Settings { return this.atStatesMaxLifetime; } + public long getAtStatesTrimInterval() { + return this.atStatesTrimInterval; + } + + public int getAtStatesTrimBatchSize() { + return this.atStatesTrimBatchSize; + } + + public int getAtStatesTrimLimit() { + return this.atStatesTrimLimit; + } + + public long getOnlineSignaturesTrimInterval() { + return this.onlineSignaturesTrimInterval; + } + + public int getOnlineSignaturesTrimBatchSize() { + return this.onlineSignaturesTrimBatchSize; + } + }