diff --git a/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java b/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java index 342205da29..93a152bcd8 100644 --- a/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java +++ b/core/src/main/java/io/bitsquare/trade/offer/OpenOfferManager.java @@ -46,6 +46,7 @@ import javax.inject.Named; import java.io.File; import java.time.Duration; import java.util.Optional; +import java.util.Random; import java.util.Timer; import java.util.TimerTask; import java.util.concurrent.ScheduledThreadPoolExecutor; @@ -166,7 +167,7 @@ public class OpenOfferManager { TimerTask timerTask = new TimerTask() { @Override public void run() { - Thread.currentThread().setName("RepublishOffers-%d"); + Thread.currentThread().setName("RepublishOffers-" + String.valueOf(new Random().nextInt(1000))); rePublishOffers(); try { } catch (Throwable t) { diff --git a/network/src/main/java/io/bitsquare/p2p/network/Connection.java b/network/src/main/java/io/bitsquare/p2p/network/Connection.java index 6b19a409b1..792eadbf01 100644 --- a/network/src/main/java/io/bitsquare/p2p/network/Connection.java +++ b/network/src/main/java/io/bitsquare/p2p/network/Connection.java @@ -71,7 +71,7 @@ public class Connection { uid = UUID.randomUUID().toString(); final ThreadFactory threadFactory = new ThreadFactoryBuilder() - .setNameFormat("Connection-%d") + .setNameFormat("Connection-" + socket.getLocalPort()) .setDaemon(true) .build(); diff --git a/network/src/main/java/io/bitsquare/p2p/routing/Routing.java b/network/src/main/java/io/bitsquare/p2p/routing/Routing.java index 6a522b25de..0629b76e72 100644 --- a/network/src/main/java/io/bitsquare/p2p/routing/Routing.java +++ b/network/src/main/java/io/bitsquare/p2p/routing/Routing.java @@ -39,7 +39,7 @@ public class Routing { private final Map nonceMap = new ConcurrentHashMap<>(); private final List routingListeners = new CopyOnWriteArrayList<>(); private final Map connectedNeighbors = new ConcurrentHashMap<>(); - private final List
reportedNeighborAddresses = new CopyOnWriteArrayList<>(); + private final Set
reportedNeighborAddresses = Collections.synchronizedSet(new HashSet<>()); private final Map authenticationCompleteHandlers = new ConcurrentHashMap<>(); private final Timer maintenanceTimer = new Timer(); private final ExecutorService executorService; @@ -182,8 +182,9 @@ public class Routing { public void broadcast(BroadcastMessage message, @Nullable Address sender) { log.trace("Broadcast message to " + connectedNeighbors.values().size() + " neighbors."); log.trace("message = " + message); - log.trace("connectedNeighbors = " + connectedNeighbors); - connectedNeighbors.values().parallelStream() + printConnectedNeighborsMap(); + + connectedNeighbors.values().stream() .filter(e -> !e.address.equals(sender)) .forEach(neighbor -> { log.trace("Broadcast message from " + getAddress() + " to " + neighbor.address + "."); @@ -459,20 +460,20 @@ public class Routing { int diff = all - 100; List
list = getNotConnectedNeighborAddresses(); for (int i = 0; i < diff; i++) { - Address neighborToRemove = list.remove(new Random().nextInt(list.size())); - reportedNeighborAddresses.remove(neighborToRemove); + Address toRemove = list.remove(new Random().nextInt(list.size())); + reportedNeighborAddresses.remove(toRemove); } } } private List
getNotConnectedNeighborAddresses() { - ArrayList
reportedNeighborsList = new ArrayList<>(getAllNeighborAddresses()); + ArrayList
list = new ArrayList<>(getAllNeighborAddresses()); log.debug("## getNotConnectedNeighborAddresses "); - log.debug("## reportedNeighborsList=" + reportedNeighborsList); - connectedNeighbors.values().stream().forEach(e -> reportedNeighborsList.remove(e.address)); + log.debug("## reportedNeighborsList=" + list); + connectedNeighbors.values().stream().forEach(e -> list.remove(e.address)); log.debug("## connectedNeighbors=" + connectedNeighbors); - log.debug("## reportedNeighborsList=" + reportedNeighborsList); - return reportedNeighborsList; + log.debug("## reportedNeighborsList=" + list); + return list; } private void authenticateToNextRandomNeighbor() { @@ -610,6 +611,10 @@ public class Routing { if (disconnectedNeighbor != null) UserThread.execute(() -> routingListeners.stream().forEach(e -> e.onNeighborRemoved(peerAddress))); + log.trace("removeNeighbor [post]"); + printConnectedNeighborsMap(); + printReportedNeighborsMap(); + log.trace("removeNeighbor nonceMap=" + nonceMap + " / peerAddress=" + peerAddress); nonceMap.remove(peerAddress); } @@ -626,6 +631,9 @@ public class Routing { if (connectedNeighbors.size() > MAX_CONNECTIONS) disconnectOldConnections(); + + log.trace("addConnectedNeighbor [post]"); + printConnectedNeighborsMap(); } private Address getAddress() {