From c4d7335fdd12412a37bb7fb03187c23507ea5b20 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sat, 2 Oct 2021 13:05:16 +0100 Subject: [PATCH] Fixed more issues that could cause transactions to be held open. --- .../org/qortal/controller/repository/AtStatesPruner.java | 1 + .../org/qortal/controller/repository/BlockArchiver.java | 8 +++++--- .../org/qortal/controller/repository/BlockPruner.java | 1 + src/main/java/org/qortal/repository/Bootstrap.java | 1 + 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/qortal/controller/repository/AtStatesPruner.java b/src/main/java/org/qortal/controller/repository/AtStatesPruner.java index 1493f478..446abddb 100644 --- a/src/main/java/org/qortal/controller/repository/AtStatesPruner.java +++ b/src/main/java/org/qortal/controller/repository/AtStatesPruner.java @@ -94,6 +94,7 @@ public class AtStatesPruner implements Runnable { else { // We've pruned up to the upper prunable height // Back off for a while to save CPU for syncing + repository.discardChanges(); Thread.sleep(5*60*1000L); } } diff --git a/src/main/java/org/qortal/controller/repository/BlockArchiver.java b/src/main/java/org/qortal/controller/repository/BlockArchiver.java index 7c6db2b7..2a987d97 100644 --- a/src/main/java/org/qortal/controller/repository/BlockArchiver.java +++ b/src/main/java/org/qortal/controller/repository/BlockArchiver.java @@ -25,18 +25,19 @@ public class BlockArchiver implements Runnable { } try (final Repository repository = RepositoryManager.getRepository()) { + // Don't even start building until initial rush has ended + Thread.sleep(INITIAL_SLEEP_PERIOD); + int startHeight = repository.getBlockArchiveRepository().getBlockArchiveHeight(); // Don't attempt to archive if we have no ATStatesHeightIndex, as it will be too slow boolean hasAtStatesHeightIndex = repository.getATRepository().hasAtStatesHeightIndex(); if (!hasAtStatesHeightIndex) { LOGGER.info("Unable to start block archiver due to missing ATStatesHeightIndex. Bootstrapping is recommended."); + repository.discardChanges(); return; } - // Don't even start building until initial rush has ended - Thread.sleep(INITIAL_SLEEP_PERIOD); - LOGGER.info("Starting block archiver..."); while (!Controller.isStopping()) { @@ -91,6 +92,7 @@ public class BlockArchiver implements Runnable { // that a bootstrap or re-sync is needed. Try again every minute until then. LOGGER.info("Error: block not found when building archive. If this error persists, " + "a bootstrap or re-sync may be needed."); + repository.discardChanges(); Thread.sleep( 60 * 1000L); // 1 minute break; } diff --git a/src/main/java/org/qortal/controller/repository/BlockPruner.java b/src/main/java/org/qortal/controller/repository/BlockPruner.java index 46cf919b..af012b4f 100644 --- a/src/main/java/org/qortal/controller/repository/BlockPruner.java +++ b/src/main/java/org/qortal/controller/repository/BlockPruner.java @@ -99,6 +99,7 @@ public class BlockPruner implements Runnable { else { // We've pruned up to the upper prunable height // Back off for a while to save CPU for syncing + repository.discardChanges(); Thread.sleep(10*60*1000L); } } diff --git a/src/main/java/org/qortal/repository/Bootstrap.java b/src/main/java/org/qortal/repository/Bootstrap.java index a7d9df37..e25a4d39 100644 --- a/src/main/java/org/qortal/repository/Bootstrap.java +++ b/src/main/java/org/qortal/repository/Bootstrap.java @@ -317,6 +317,7 @@ public class Bootstrap { LOGGER.info("Retrying in 5 minutes"); try { + repository.discardChanges(); Thread.sleep(5 * 60 * 1000L); } catch (InterruptedException e2) { break;