added clean blocks higher than best block

This commit is contained in:
cubedro 2015-06-09 06:25:34 +03:00
parent c26ba17cd4
commit d9ae085890
5 changed files with 32 additions and 17 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -28,6 +28,8 @@ Collection.prototype.update = function(id, stats, callback)
} }
else else
{ {
this._blockchain.clean(this.getBestBlockFromItems());
var block = this._blockchain.add(stats.block, id); var block = this._blockchain.add(stats.block, id);
if (!block) if (!block)
@ -57,6 +59,8 @@ Collection.prototype.addBlock = function(id, stats, callback)
} }
else else
{ {
this._blockchain.clean(this.getBestBlockFromItems());
var block = this._blockchain.add(stats, id); var block = this._blockchain.add(stats, id);
if (!block) if (!block)
@ -113,6 +117,8 @@ Collection.prototype.addHistory = function(id, blocks, callback)
{ {
blocks = blocks.reverse(); blocks = blocks.reverse();
this._blockchain.clean(this.getBestBlockFromItems());
for (var i = 0; i <= blocks.length - 1; i++) for (var i = 0; i <= blocks.length - 1; i++)
{ {
this._blockchain.add(blocks[i], id); this._blockchain.add(blocks[i], id);
@ -254,6 +260,13 @@ Collection.prototype.getHistory = function()
return this._blockchain; return this._blockchain;
} }
Collection.prototype.getBestBlockFromItems = function()
{
return _.result(_.max(this._items, function(item) {
return item.stats.block.number;
}), 'stats.block.number', 0);
}
Collection.prototype.canNodeUpdate = function(id) Collection.prototype.canNodeUpdate = function(id)
{ {
var node = this.getNode({id: id}); var node = this.getNode({id: id});

View File

@ -126,20 +126,6 @@ History.prototype.add = function(block, id)
this._save(item); this._save(item);
changed = true;
}
else if(this._items.length > 0 && block.arrived - this.bestBlock().arrived > 10*60*1000)
{
this._items.splice(0,1);
item.propagTimes.push({
node: id,
received: now,
propagation: block.propagation
});
this._save(item);
changed = true; changed = true;
} }
} }
@ -165,6 +151,22 @@ History.prototype._save = function(block)
} }
} }
History.prototype.clean = function(max)
{
if(max > 0 && this._items.length > 0 && max < this.bestBlockNumber())
{
console.log("MAX:", max);
console.log("History items before:", this._items.length);
this._items = _(this._items).filter(function(item) {
return item.height <= max;
}).value();
console.log("History items after:", this._items.length);
}
}
History.prototype.search = function(number) History.prototype.search = function(number)
{ {
var index = _.findIndex( this._items, { height: number } ); var index = _.findIndex( this._items, { height: number } );

View File

@ -485,7 +485,7 @@ netStatsApp.controller('StatsCtrl', function($scope, $filter, $localStorage, soc
return parseInt(node.stats.block.number); return parseInt(node.stats.block.number);
}).stats.block.number; }).stats.block.number;
if( bestBlock > $scope.bestBlock ) if( bestBlock !== $scope.bestBlock )
{ {
$scope.bestBlock = bestBlock; $scope.bestBlock = bestBlock;
$scope.bestStats = _.max($scope.nodes, function (node) { $scope.bestStats = _.max($scope.nodes, function (node) {