added check for old inactive nodes

This commit is contained in:
cubedro 2015-05-11 21:41:37 +03:00
parent bb3e2b999b
commit e6baedd6ed
2 changed files with 42 additions and 0 deletions

View File

@ -115,9 +115,34 @@ Collection.prototype.getNodeOrNew = function(search, data)
Collection.prototype.all = function() Collection.prototype.all = function()
{ {
this.removeOldNodes();
return this._items; return this._items;
} }
Collection.prototype.removeOldNodes = function()
{
var deleteList = []
for(var i = this._items.length - 1; i >= 0; i--)
{
var node = this._items[i];
if( node.isInactiveAndOld() )
{
deleteList.push(i);
}
}
if(deleteList.length > 0)
{
for(var i = 0; i < deleteList.length; i++)
{
this._items.splice(deleteList[i], 1);
}
}
}
Collection.prototype.blockPropagationChart = function() Collection.prototype.blockPropagationChart = function()
{ {
return this._blockchain.getBlockPropagation(); return this._blockchain.getBlockPropagation();

View File

@ -2,6 +2,7 @@ var geoip = require('geoip-lite');
var _ = require('lodash'); var _ = require('lodash');
var MAX_HISTORY = 40; var MAX_HISTORY = 40;
var MAX_INACTIVE_TIME = 1000;
var Node = function Node(data) var Node = function Node(data)
{ {
@ -180,4 +181,20 @@ Node.prototype.canUpdate = function()
return this.info.canUpdateHistory || false; return this.info.canUpdateHistory || false;
} }
Node.prototype.isInactiveAndOld = function()
{
if(this.stats.active)
return false;
var lastState = this.uptime.history[this.uptime.history.length -1];
if( !_.isUndefined(lastState) && !_.isUndefined(lastState.status) && !_.isUndefined(lastState.time) )
{
if( lastState.status === 'down' && (_.now() - lastState.time) > MAX_INACTIVE_TIME )
return true;
}
return false;
}
module.exports = Node; module.exports = Node;