Skip to content
Snippets Groups Projects
Commit 11143f7b authored by Cédric Moreau's avatar Cédric Moreau
Browse files

Fix #245 peers unavailable should be considered DOWN

parent 5aab21c6
No related branches found
No related tags found
No related merge requests found
...@@ -219,6 +219,7 @@ function PeeringService(server, pair, dal) { ...@@ -219,6 +219,7 @@ function PeeringService(server, pair, dal) {
; ;
if (testIt) { if (testIt) {
// We try to reconnect only with peers marked as DOWN // We try to reconnect only with peers marked as DOWN
try {
let node = yield Q.nfcall(p.connect); let node = yield Q.nfcall(p.connect);
let peering = yield Q.nfcall(node.network.peering.get); let peering = yield Q.nfcall(node.network.peering.get);
let sp1 = peering.block.split('-'); let sp1 = peering.block.split('-');
...@@ -229,8 +230,8 @@ function PeeringService(server, pair, dal) { ...@@ -229,8 +230,8 @@ function PeeringService(server, pair, dal) {
let blockHash = sp2[1]; let blockHash = sp2[1];
if (!(currentBlockNumber == blockNumber && currentBlockHash == blockHash)) { if (!(currentBlockNumber == blockNumber && currentBlockHash == blockHash)) {
// The peering changed // The peering changed
try {
yield Q.nfcall(that.submit, peering); yield Q.nfcall(that.submit, peering);
}
} catch (err) { } catch (err) {
// Error: we set the peer as DOWN // Error: we set the peer as DOWN
logger.warn("Peer record %s: %s", p.pubkey, err.code || err.message || err); logger.warn("Peer record %s: %s", p.pubkey, err.code || err.message || err);
...@@ -239,7 +240,6 @@ function PeeringService(server, pair, dal) { ...@@ -239,7 +240,6 @@ function PeeringService(server, pair, dal) {
} }
} }
} }
}
done(); done();
}) })
.catch(done); .catch(done);
...@@ -254,7 +254,7 @@ function PeeringService(server, pair, dal) { ...@@ -254,7 +254,7 @@ function PeeringService(server, pair, dal) {
peers = _.shuffle(peers); peers = _.shuffle(peers);
for (let i = 0, len = peers.length; i < len; i++) { for (let i = 0, len = peers.length; i < len; i++) {
var p = new Peer(peers[i]); var p = new Peer(peers[i]);
logger.info("Try with %s", p.getURL()); logger.info("Try with %s %s", p.getURL(), p.pubkey.substr(0, 6));
let node = yield Q.nfcall(p.connect); let node = yield Q.nfcall(p.connect);
try { try {
let downloaded = yield Q.nfcall(node.blockchain.block, current.number + 1); let downloaded = yield Q.nfcall(node.blockchain.block, current.number + 1);
...@@ -277,6 +277,9 @@ function PeeringService(server, pair, dal) { ...@@ -277,6 +277,9 @@ function PeeringService(server, pair, dal) {
} }
} catch (err) { } catch (err) {
logger.warn(err); logger.warn(err);
if (err && err.code == "EINVAL") {
yield dal.setPeerDown(p.pubkey);
}
try { try {
let nowCurrent = yield dal.getCurrentBlockOrNull(); let nowCurrent = yield dal.getCurrentBlockOrNull();
yield server.BlockchainService.tryToFork(nowCurrent); yield server.BlockchainService.tryToFork(nowCurrent);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment