workers. fix inv relaying.
This commit is contained in:
parent
c71e7646d3
commit
e8f5be9830
@ -218,6 +218,9 @@ Miner.prototype.stop = function stop() {
|
|||||||
this.attempt.destroy();
|
this.attempt.destroy();
|
||||||
this.attempt = null;
|
this.attempt = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.workerPool)
|
||||||
|
this.workerPool.destroy();
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -1098,8 +1098,8 @@ Peer.prototype._handleGetData = function handleGetData(items) {
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
utils.forEachSerial(check, function(item, next) {
|
utils.forEachSerial(check, function(item, next) {
|
||||||
var witness = item.type & constants.WITNESS_MASK;
|
var type = item.type & ~constants.WITNESS_MASK;
|
||||||
var type = (item.type & ~constants.WITNESS_MASK) !== 0;
|
var witness = (item.type & constants.WITNESS_MASK) !== 0;
|
||||||
var hash = item.hash;
|
var hash = item.hash;
|
||||||
var i, tx, data;
|
var i, tx, data;
|
||||||
|
|
||||||
|
|||||||
@ -50,6 +50,24 @@ utils.inherits(Workers, EventEmitter);
|
|||||||
|
|
||||||
Workers.CORES = getCores();
|
Workers.CORES = getCores();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Global list of workers.
|
||||||
|
* @type {Array}
|
||||||
|
*/
|
||||||
|
|
||||||
|
Workers.children = [];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Cleanup all workers on exit.
|
||||||
|
*/
|
||||||
|
|
||||||
|
Workers.cleanup = function cleanup() {
|
||||||
|
while (Workers.children.length > 0)
|
||||||
|
Workers.children.pop().destroy();
|
||||||
|
};
|
||||||
|
|
||||||
|
Workers._exitBound = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Spawn a new worker.
|
* Spawn a new worker.
|
||||||
* @param {Number} id - Worker ID.
|
* @param {Number} id - Worker ID.
|
||||||
@ -58,7 +76,7 @@ Workers.CORES = getCores();
|
|||||||
|
|
||||||
Workers.prototype.spawn = function spawn(id) {
|
Workers.prototype.spawn = function spawn(id) {
|
||||||
var self = this;
|
var self = this;
|
||||||
var child;
|
var i, child;
|
||||||
|
|
||||||
bcoin.debug('Spawning worker process: %d', id);
|
bcoin.debug('Spawning worker process: %d', id);
|
||||||
|
|
||||||
@ -72,6 +90,9 @@ Workers.prototype.spawn = function spawn(id) {
|
|||||||
bcoin.debug('Worker %d exited: %s', child.id, code);
|
bcoin.debug('Worker %d exited: %s', child.id, code);
|
||||||
if (self.children[child.id] === child)
|
if (self.children[child.id] === child)
|
||||||
self.children[child.id] = null;
|
self.children[child.id] = null;
|
||||||
|
i = Workers.children.indexOf(child);
|
||||||
|
if (i !== -1)
|
||||||
|
Workers.children.splice(i, 1);
|
||||||
});
|
});
|
||||||
|
|
||||||
child.on('packet', function(job, body) {
|
child.on('packet', function(job, body) {
|
||||||
@ -87,6 +108,13 @@ Workers.prototype.spawn = function spawn(id) {
|
|||||||
self.emit('error', new Error('Unknown packet: ' + body.name));
|
self.emit('error', new Error('Unknown packet: ' + body.name));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Workers.children.push(child);
|
||||||
|
|
||||||
|
if (!Workers._exitBound) {
|
||||||
|
process.once('exit', Workers.cleanup);
|
||||||
|
Workers._exitBound = true;
|
||||||
|
}
|
||||||
|
|
||||||
return child;
|
return child;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user