From f9e2ed304bd6d58b1b41e6a6b7fb1a162c066345 Mon Sep 17 00:00:00 2001 From: sairajzero Date: Wed, 11 Jan 2023 03:38:38 +0530 Subject: [PATCH 1/3] hotfix for unresponsive header sync --- lib/services/header/index.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/services/header/index.js b/lib/services/header/index.js index 51eae75f..bce9440b 100644 --- a/lib/services/header/index.js +++ b/lib/services/header/index.js @@ -14,6 +14,8 @@ var assert = require('assert'); var constants = require('../../constants'); var bcoin = require('fcoin'); +const SYNC_CHECK_INTERVAL = 1000 * 60 * 15; //15 mins + var HeaderService = function(options) { BaseService.call(this, options); @@ -522,6 +524,7 @@ HeaderService.prototype._saveHeaders = function(dbOps, callback) { HeaderService.prototype._onHeadersSave = function(callback) { var self = this; + self._syncUnresponsive = false; //SZ: got response from peer self._logProgress(); if (!self._syncComplete()) { @@ -529,6 +532,8 @@ HeaderService.prototype._onHeadersSave = function(callback) { return callback(); } + clearInterval(self._syncCheckInterval); //SZ: clear the interval check as sync is completed + self._endHeaderSubscription(); // we don't need headers any more self._startBlockSubscription(); // we need new blocks coming tu us aynchronuously @@ -707,6 +712,16 @@ HeaderService.prototype._startSync = function() { // common case if (numNeeded > 0) { log.info('Header Service: Gathering: ' + numNeeded + ' ' + 'header(s) from the peer-to-peer network.'); + + //SZ: Adding interval check for sync with peer is responsive or not + self._syncUnresponsive = true; + self._syncCheckInterval = setInterval(() => { + if(self._syncUnresponsive) + self._sync(); + else //reset unresponsive as true + self._syncUnresponsive = true; + }, SYNC_CHECK_INTERVAL); + return self._sync(); } From b831cbce7e75de8a7148cc2c7a953df12332fc3f Mon Sep 17 00:00:00 2001 From: sairajzero Date: Sat, 14 Jan 2023 23:56:18 +0530 Subject: [PATCH 2/3] Update .gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 744a842f..b4d08d78 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ coverage/* **/*.config **/*.creator *.log +*.tmp .DS_Store bin/florincoin* bin/SHA256SUMS.asc From ece347c82564aaca3d2c00fbdf7cb0ad8a90639c Mon Sep 17 00:00:00 2001 From: sairajzero Date: Sun, 15 Jan 2023 00:02:25 +0530 Subject: [PATCH 3/3] hotfix: best header not updating for prev fix - updated header service best header from fcoin node directly. - set interval check only if fcoin is started by flocore (else header best height ll not get updated and sync complete incorrectly) --- lib/services/header/index.js | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/lib/services/header/index.js b/lib/services/header/index.js index bce9440b..5a586919 100644 --- a/lib/services/header/index.js +++ b/lib/services/header/index.js @@ -532,7 +532,9 @@ HeaderService.prototype._onHeadersSave = function(callback) { return callback(); } - clearInterval(self._syncCheckInterval); //SZ: clear the interval check as sync is completed + //SZ: clear the interval check as sync is completed + if(self._syncCheckInterval) + clearInterval(self._syncCheckInterval); self._endHeaderSubscription(); // we don't need headers any more self._startBlockSubscription(); // we need new blocks coming tu us aynchronuously @@ -714,13 +716,20 @@ HeaderService.prototype._startSync = function() { log.info('Header Service: Gathering: ' + numNeeded + ' ' + 'header(s) from the peer-to-peer network.'); //SZ: Adding interval check for sync with peer is responsive or not - self._syncUnresponsive = true; - self._syncCheckInterval = setInterval(() => { - if(self._syncUnresponsive) - self._sync(); - else //reset unresponsive as true - self._syncUnresponsive = true; - }, SYNC_CHECK_INTERVAL); + //(only if fcoin is started by flocore) + if(self._p2p._bcoin){ + self._syncUnresponsive = true; + self._syncCheckInterval = setInterval(() => { + //check the best height + if(self._bestHeight < self._p2p._bcoin._bcoin.pool.chain.height) + self._bestHeight = self._p2p._bcoin._bcoin.pool.chain.height; + //call sync again if unresponsive + if(self._syncUnresponsive) + self._sync(); + else //reset unresponsive as true + self._syncUnresponsive = true; + }, SYNC_CHECK_INTERVAL); + } return self._sync(); }