Browse Source

Added a few checks for Controller.isStopping() in synchronizer loops, to try and speed up the shutdown time.

blockminter-updates
CalDescent 4 years ago
parent
commit
c3e5298ecd
  1. 12
      src/main/java/org/qortal/controller/Synchronizer.java

12
src/main/java/org/qortal/controller/Synchronizer.java

@ -257,9 +257,13 @@ public class Synchronizer {
// Currently we work forward from common block until we hit a block we don't have // Currently we work forward from common block until we hit a block we don't have
// TODO: rewrite as modified binary search! // TODO: rewrite as modified binary search!
int i; int i;
for (i = 1; i < blockSummariesFromCommon.size(); ++i) for (i = 1; i < blockSummariesFromCommon.size(); ++i) {
if (Controller.isStopping())
return SynchronizationResult.SHUTTING_DOWN;
if (!repository.getBlockRepository().exists(blockSummariesFromCommon.get(i).getSignature())) if (!repository.getBlockRepository().exists(blockSummariesFromCommon.get(i).getSignature()))
break; break;
}
// Note: index i - 1 isn't cleared: List.subList is fromIndex inclusive to toIndex exclusive // Note: index i - 1 isn't cleared: List.subList is fromIndex inclusive to toIndex exclusive
blockSummariesFromCommon.subList(0, i - 1).clear(); blockSummariesFromCommon.subList(0, i - 1).clear();
@ -308,6 +312,9 @@ public class Synchronizer {
// Check peer sent valid heights // Check peer sent valid heights
for (int i = 0; i < moreBlockSummaries.size(); ++i) { for (int i = 0; i < moreBlockSummaries.size(); ++i) {
if (Controller.isStopping())
return SynchronizationResult.SHUTTING_DOWN;
++lastSummaryHeight; ++lastSummaryHeight;
BlockSummaryData blockSummary = moreBlockSummaries.get(i); BlockSummaryData blockSummary = moreBlockSummaries.get(i);
@ -645,6 +652,9 @@ public class Synchronizer {
final int firstBlockHeight = blockSummaries.get(0).getHeight(); final int firstBlockHeight = blockSummaries.get(0).getHeight();
for (int i = 0; i < blockSummaries.size(); ++i) { for (int i = 0; i < blockSummaries.size(); ++i) {
if (Controller.isStopping())
return;
BlockSummaryData blockSummary = blockSummaries.get(i); BlockSummaryData blockSummary = blockSummaries.get(i);
// Qortal: minter is always a reward-share, so find actual minter and get their effective minting level // Qortal: minter is always a reward-share, so find actual minter and get their effective minting level

Loading…
Cancel
Save