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

View File

@@ -28,6 +28,8 @@ Collection.prototype.update = function(id, stats, callback)
}
else
{
this._blockchain.clean(this.getBestBlockFromItems());
var block = this._blockchain.add(stats.block, id);
if (!block)
@@ -57,6 +59,8 @@ Collection.prototype.addBlock = function(id, stats, callback)
}
else
{
this._blockchain.clean(this.getBestBlockFromItems());
var block = this._blockchain.add(stats, id);
if (!block)
@@ -113,6 +117,8 @@ Collection.prototype.addHistory = function(id, blocks, callback)
{
blocks = blocks.reverse();
this._blockchain.clean(this.getBestBlockFromItems());
for (var i = 0; i <= blocks.length - 1; i++)
{
this._blockchain.add(blocks[i], id);
@@ -254,6 +260,13 @@ Collection.prototype.getHistory = function()
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)
{
var node = this.getNode({id: id});

View File

@@ -126,20 +126,6 @@ History.prototype.add = function(block, id)
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;
}
}
@@ -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)
{
var index = _.findIndex( this._items, { height: number } );