stop when shutdown

This commit is contained in:
Manfred Karrer 2016-02-01 20:10:40 +01:00
parent 6e1f92a05b
commit 5efd69bad4
2 changed files with 56 additions and 48 deletions

View file

@ -28,6 +28,7 @@ public class PeerExchangeManager implements MessageListener, ConnectionListener
private final ScheduledThreadPoolExecutor executor; private final ScheduledThreadPoolExecutor executor;
private final Map<NodeAddress, PeerExchangeHandshake> peerExchangeHandshakeMap = new HashMap<>(); private final Map<NodeAddress, PeerExchangeHandshake> peerExchangeHandshakeMap = new HashMap<>();
private Timer connectToMorePeersTimer, maintainConnectionsTimer; private Timer connectToMorePeersTimer, maintainConnectionsTimer;
private boolean shutDownInProgress;
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
@ -46,6 +47,7 @@ public class PeerExchangeManager implements MessageListener, ConnectionListener
public void shutDown() { public void shutDown() {
Log.traceCall(); Log.traceCall();
shutDownInProgress = true;
networkNode.removeMessageListener(this); networkNode.removeMessageListener(this);
stopConnectToMorePeersTimer(); stopConnectToMorePeersTimer();
@ -148,6 +150,7 @@ public class PeerExchangeManager implements MessageListener, ConnectionListener
peerExchangeHandshakeMap.remove(nodeAddress); peerExchangeHandshakeMap.remove(nodeAddress);
peerManager.penalizeUnreachablePeer(nodeAddress); peerManager.penalizeUnreachablePeer(nodeAddress);
if (!shutDownInProgress) {
if (!remainingNodeAddresses.isEmpty()) { if (!remainingNodeAddresses.isEmpty()) {
log.info("There are remaining nodes available for requesting peers. " + log.info("There are remaining nodes available for requesting peers. " +
"We will try getReportedPeers again."); "We will try getReportedPeers again.");
@ -161,6 +164,7 @@ public class PeerExchangeManager implements MessageListener, ConnectionListener
PeerExchangeManager.this::connectToMorePeers, 20, 30); PeerExchangeManager.this::connectToMorePeers, 20, 30);
} }
} }
}
}); });
peerExchangeHandshakeMap.put(nodeAddress, peerExchangeHandshake); peerExchangeHandshakeMap.put(nodeAddress, peerExchangeHandshake);
peerExchangeHandshake.requestReportedPeers(nodeAddress); peerExchangeHandshake.requestReportedPeers(nodeAddress);

View file

@ -52,6 +52,7 @@ public class RequestDataManager implements MessageListener {
private Optional<NodeAddress> nodeOfPreliminaryDataRequest = Optional.empty(); private Optional<NodeAddress> nodeOfPreliminaryDataRequest = Optional.empty();
private Timer requestDataTimer; private Timer requestDataTimer;
private boolean dataUpdateRequested; private boolean dataUpdateRequested;
private boolean shutDownInProgress;
/////////////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////////////
@ -72,6 +73,7 @@ public class RequestDataManager implements MessageListener {
public void shutDown() { public void shutDown() {
Log.traceCall(); Log.traceCall();
shutDownInProgress = true;
stopRequestDataTimer(); stopRequestDataTimer();
networkNode.removeMessageListener(this); networkNode.removeMessageListener(this);
requestDataHandshakeMap.values().stream().forEach(RequestDataHandshake::shutDown); requestDataHandshakeMap.values().stream().forEach(RequestDataHandshake::shutDown);
@ -175,6 +177,7 @@ public class RequestDataManager implements MessageListener {
peerManager.penalizeUnreachablePeer(nodeAddress); peerManager.penalizeUnreachablePeer(nodeAddress);
if (!shutDownInProgress) {
if (!remainingNodeAddresses.isEmpty()) { if (!remainingNodeAddresses.isEmpty()) {
log.info("There are remaining nodes available for requesting data. " + log.info("There are remaining nodes available for requesting data. " +
"We will try requestDataFromPeers again."); "We will try requestDataFromPeers again.");
@ -217,6 +220,7 @@ public class RequestDataManager implements MessageListener {
listener.onNoPeersAvailable(); listener.onNoPeersAvailable();
} }
} }
}
}); });
requestDataHandshakeMap.put(nodeAddress, requestDataHandshake); requestDataHandshakeMap.put(nodeAddress, requestDataHandshake);
requestDataHandshake.requestData(nodeAddress); requestDataHandshake.requestData(nodeAddress);