diff --git a/scripts/sync.js b/scripts/sync.js index 8b85892..f2e7f46 100644 --- a/scripts/sync.js +++ b/scripts/sync.js @@ -21,6 +21,7 @@ function usage() { console.log('reindex Clears index then resyncs from genesis to current block'); console.log('reindex-rich Clears and recreates the richlist data'); console.log('reindex-txcount Rescan and flatten the tx count value for faster access'); + console.log('reindex-last Rescan and flatten the last blockindex value for faster access'); console.log('market Updates market summaries, orderbooks, trade history + charts'); console.log('peers Updates peer info based on local wallet connections'); console.log('masternodes Updates the list of active masternodes on the network'); @@ -56,6 +57,9 @@ if (process.argv[2] == 'index') { case 'reindex-txcount': mode = 'reindex-txcount'; break; + case 'reindex-last': + mode = 'reindex-last'; + break; default: usage(); } @@ -368,16 +372,27 @@ if (database == 'peers') { }); }); } else if (mode == 'reindex-last') { - console.log('calculating last tx.. please wait..'); - // Resetting the last counter requires a single lookup on the txes collection to find all txes that have a positive or zero total and 1 or more vout - Tx.find({'total': {$gte: 0}, 'vout': { $gte: { $size: 1 }}}).countDocuments(function(err, count) { - console.log('found tx count: ' + count.toString()); - Stats.updateOne({coin: settings.coin.name}, { - txes: count - }, function() { - console.log('tx count update complete'); - exit(); - }); + console.log('finding last blockindex.. please wait..'); + // Resetting the last blockindex counter requires a single lookup on the txes collection to find the last indexed blockindex + Tx.find({}, {blockindex:1, _id:0}).sort({blockindex: -1}).limit(1).exec(function(err, tx) { + // check if any blocks exists + if (err != null || tx == null || tx.length == 0) { + console.log('no blocks found. setting last blockindex to 0.'); + Stats.updateOne({coin: settings.coin.name}, { + last: 0 + }, function() { + console.log('last blockindex update complete'); + exit(); + }); + } else { + console.log('found last blockindex: ' + tx[0].blockindex.toString()); + Stats.updateOne({coin: settings.coin.name}, { + last: tx[0].blockindex + }, function() { + console.log('last blockindex update complete'); + exit(); + }); + } }); } }); diff --git a/scripts/sync.sh b/scripts/sync.sh index 58caa5c..d8c6407 100755 --- a/scripts/sync.sh +++ b/scripts/sync.sh @@ -26,6 +26,10 @@ if [ -n "${1}" ]; then # Index reindex-txcount MODE="index reindex-txcount" ;; + "reindex-last") + # Index reindex-last + MODE="index reindex-last" + ;; "market") # Market update MODE="market" @@ -72,6 +76,10 @@ if [ -n "${1}" ]; then # Index reindex-txcount MODE="index reindex-txcount" ;; + "reindex-last") + # Index reindex-last + MODE="index reindex-last" + ;; "market") # Market update MODE="market"