From 05e675ed925a7fc91af5810c0d272e8869781b0d Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 23 Sep 2018 20:10:16 -0500 Subject: [PATCH 1/2] Add check to not duplicate peers The inactives collection contained duplicated peerAddresses after connection loss and reconnect. We add a check to see if the to-get-added peerAddress is not already in the collection and only add it if it is absent. This problem was not discovered when using the public network as the chance that same peerAddress get reported is pretty low. But with our provided nodes we got frequently duplicates. Fixes https://github.com/bisq-network/bisq/issues/1703 --- .../java/org/bitcoinj/core/PeerGroup.java | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/bitcoinj/core/PeerGroup.java b/core/src/main/java/org/bitcoinj/core/PeerGroup.java index 898a5619be5..723d77ad325 100644 --- a/core/src/main/java/org/bitcoinj/core/PeerGroup.java +++ b/core/src/main/java/org/bitcoinj/core/PeerGroup.java @@ -619,7 +619,9 @@ public void go() { if (retryTime > now) { long delay = retryTime - now; log.info("Waiting {} msec before next connect attempt {}", delay, addrToTry == null ? "" : "to " + addrToTry); - inactives.add(addrToTry); + + if (!isAlreadyAdded(addrToTry)) + inactives.add(addrToTry); executor.schedule(this, delay, TimeUnit.MILLISECONDS); return; } @@ -638,6 +640,17 @@ public void go() { } }; + private boolean isAlreadyAdded(PeerAddress peerAddress) { + boolean isAlreadyAdded = false; + for (PeerAddress a : inactives) { + if (a.getHostname().equals(peerAddress.getHostname())) { + isAlreadyAdded = true; + break; + } + } + return isAlreadyAdded; + } + private void triggerConnections() { // Run on a background thread due to the need to potentially retry and back off in the background. if (!executor.isShutdown()) @@ -1038,7 +1051,10 @@ private boolean addInactive(PeerAddress peerAddress) { return false; } backoffMap.put(peerAddress, new ExponentialBackoff(peerBackoffParams)); - inactives.offer(peerAddress); + + if (!isAlreadyAdded(peerAddress)) + inactives.offer(peerAddress); + return true; } finally { lock.unlock(); From d9eed611c45b470a25a04cf53d16eb80d615fd85 Mon Sep 17 00:00:00 2001 From: Manfred Karrer Date: Sun, 23 Sep 2018 20:11:17 -0500 Subject: [PATCH 2/2] Set to version 0.14.4.9 --- core/pom.xml | 2 +- examples/pom.xml | 2 +- pom.xml | 2 +- tools/pom.xml | 2 +- wallettemplate/pom.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/core/pom.xml b/core/pom.xml index b0a627388e8..a9fd4896289 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -22,7 +22,7 @@ org.bitcoinj bitcoinj-parent - 0.14.4.8 + 0.14.4.9 bitcoinj-core diff --git a/examples/pom.xml b/examples/pom.xml index 33d41e22a45..4e38bbc2516 100644 --- a/examples/pom.xml +++ b/examples/pom.xml @@ -21,7 +21,7 @@ org.bitcoinj bitcoinj-parent - 0.14.4.8 + 0.14.4.9 4.0.0 diff --git a/pom.xml b/pom.xml index 12ead509e5e..324848ad16b 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.bitcoinj bitcoinj-parent - 0.14.4.8 + 0.14.4.9 pom diff --git a/tools/pom.xml b/tools/pom.xml index 4ff3e7e0792..f567a3b2eba 100644 --- a/tools/pom.xml +++ b/tools/pom.xml @@ -21,7 +21,7 @@ org.bitcoinj bitcoinj-parent - 0.14.4.8 + 0.14.4.9 4.0.0 diff --git a/wallettemplate/pom.xml b/wallettemplate/pom.xml index 61899bb9ef6..065d79b7e1c 100644 --- a/wallettemplate/pom.xml +++ b/wallettemplate/pom.xml @@ -6,7 +6,7 @@ org.bitcoinj bitcoinj-parent - 0.14.4.8 + 0.14.4.9 wallettemplate