From ba6397b9638f4741d6955b9c19e4e3ce6b0f5284 Mon Sep 17 00:00:00 2001 From: CalDescent Date: Sat, 24 Apr 2021 19:23:09 +0100 Subject: [PATCH] Improved logging, to give a clearer picture of the peer selection decisions. --- src/main/java/org/qortal/controller/Controller.java | 9 ++++++++- src/main/java/org/qortal/controller/Synchronizer.java | 4 +++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/qortal/controller/Controller.java b/src/main/java/org/qortal/controller/Controller.java index 0d28ccc7..a7d028bc 100644 --- a/src/main/java/org/qortal/controller/Controller.java +++ b/src/main/java/org/qortal/controller/Controller.java @@ -669,11 +669,18 @@ public class Controller extends Thread { final int peersRemoved = peersBeforeComparison - peers.size(); if (peersRemoved > 0) - LOGGER.debug(String.format("Ignoring %d peers on inferior chains. Peers remaining: %d", peersRemoved, peers.size())); + LOGGER.info(String.format("Ignoring %d peers on inferior chains. Peers remaining: %d", peersRemoved, peers.size())); if (peers.isEmpty()) return; + if (peers.size() > 1) { + StringBuilder finalPeersString = new StringBuilder(); + for (Peer peer : peers) + finalPeersString = finalPeersString.length() > 0 ? finalPeersString.append(", ").append(peer) : finalPeersString.append(peer); + LOGGER.info(String.format("Choosing random peer from: [%s]", finalPeersString.toString())); + } + // Pick random peer to sync with int index = new SecureRandom().nextInt(peers.size()); Peer peer = peers.get(index); diff --git a/src/main/java/org/qortal/controller/Synchronizer.java b/src/main/java/org/qortal/controller/Synchronizer.java index 41b0cda7..0cbb9e30 100644 --- a/src/main/java/org/qortal/controller/Synchronizer.java +++ b/src/main/java/org/qortal/controller/Synchronizer.java @@ -334,6 +334,7 @@ public class Synchronizer { ourChainWeight = Block.calcChainWeight(commonBlockSummary.getHeight(), commonBlockSummary.getSignature(), ourBlockSummaries, minChainLength); NumberFormat formatter = new DecimalFormat("0.###E0"); + NumberFormat accurateFormatter = new DecimalFormat("0.################E0"); LOGGER.debug(String.format("Our chain weight based on %d blocks is %s", ourBlockSummaries.size(), formatter.format(ourChainWeight))); LOGGER.debug(String.format("Listing peers with common block %.8s...", Base58.encode(commonBlockSummary.getSignature()))); @@ -383,7 +384,8 @@ public class Synchronizer { for (Peer peer : superiorPeersForComparison) { // Check if we should discard an inferior peer if (peer.getCommonBlockData().getChainWeight().compareTo(bestChainWeight) < 0) { - LOGGER.debug(String.format("Peer %s has a lower chain weight than other peer(s) in this group - removing it from this round.", peer)); + BigInteger difference = bestChainWeight.subtract(peer.getCommonBlockData().getChainWeight()); + LOGGER.debug(String.format("Peer %s has a lower chain weight (difference: %s) than other peer(s) in this group - removing it from this round.", peer, accurateFormatter.format(difference))); peers.remove(peer); } }