miner: workers and mining fixes.

This commit is contained in:
Christopher Jeffrey 2016-10-16 12:42:54 -07:00
parent 5186435f8f
commit e3a6d7f35e
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD
3 changed files with 24 additions and 16 deletions

View File

@ -1921,20 +1921,20 @@ RPC.prototype.getgenerate = function getgenerate(args) {
return Promise.resolve(this.mining); return Promise.resolve(this.mining);
}; };
RPC.prototype.setgenerate = function setgenerate(args) { RPC.prototype.setgenerate = co(function* setgenerate(args) {
if (args.help || args.length < 1 || args.length > 2) if (args.help || args.length < 1 || args.length > 2)
return Promise.reject(new RPCError('setgenerate mine ( proclimit )')); throw new RPCError('setgenerate mine ( proclimit )');
this.mining = toBool(args[0]); this.mining = toBool(args[0]);
this.proclimit = toNumber(args[1], 0); this.proclimit = toNumber(args[1], 0);
if (this.mining) if (this.mining)
this.miner.start(); this.miner.start().catch(utils.nop);
else else
this.miner.stop(); yield this.miner.stop();
return Promise.resolve(this.mining); return this.mining;
}; });
RPC.prototype.generate = co(function* generate(args) { RPC.prototype.generate = co(function* generate(args) {
var unlock = yield this.locker.lock(); var unlock = yield this.locker.lock();
@ -2665,17 +2665,17 @@ RPC.prototype.reconsiderblock = function reconsiderblock(args) {
}; };
RPC.prototype.setmocktime = function setmocktime(args) { RPC.prototype.setmocktime = function setmocktime(args) {
var time, delta; var ts, delta;
if (args.help || args.length !== 1) if (args.help || args.length !== 1)
return Promise.reject(new RPCError('setmocktime timestamp')); return Promise.reject(new RPCError('setmocktime timestamp'));
time = toNumber(args[0]); ts = toNumber(args[0]);
if (time < 0) if (ts < 0)
return Promise.reject(new RPCError('Invalid parameter.')); return Promise.reject(new RPCError('Invalid parameter.'));
delta = time.now() - time; delta = time.now() - ts;
time.offset = -delta; time.offset = -delta;
return Promise.resolve(); return Promise.resolve();

View File

@ -64,6 +64,14 @@ utils.inherits(Miner, AsyncObject);
Miner.prototype._init = function _init() { Miner.prototype._init = function _init() {
var self = this; var self = this;
this.chain.on('tip', function(tip) {
if (!self.attempt)
return;
if (self.attempt.block.prevBlock !== tip.hash)
self.attempt.destroy();
});
this.on('block', function(block) { this.on('block', function(block) {
// Emit the block hex as a failsafe (in case we can't send it) // Emit the block hex as a failsafe (in case we can't send it)
self.logger.info('Found block: %d (%s).', block.height, block.rhash); self.logger.info('Found block: %d (%s).', block.height, block.rhash);

View File

@ -871,19 +871,19 @@ if (utils.isBrowser) {
} }
exports.set = function set(options) { exports.set = function set(options) {
if (typeof options.useWorkerPool === 'boolean') if (typeof options.useWorkers === 'boolean')
this.pool.enabled = options.useWorkerPool; this.pool.enabled = options.useWorkers;
if (utils.isNumber(options.maxWorkerPool)) if (utils.isNumber(options.maxWorkers))
this.pool.size = options.maxWorkerPool; this.pool.size = options.maxWorkers;
if (utils.isNumber(options.workerTimeout)) if (utils.isNumber(options.workerTimeout))
this.pool.timeout = options.workerTimeout; this.pool.timeout = options.workerTimeout;
}; };
exports.set({ exports.set({
useWorkerPool: +process.env.BCOIN_USE_WORKERS === 1, useWorkers: +process.env.BCOIN_USE_WORKERS === 1,
maxWorkerPool: +process.env.BCOIN_MAX_WORKERS, maxWorkers: +process.env.BCOIN_MAX_WORKERS,
workerTimeout: +process.env.BCOIN_WORKER_TIMEOUT workerTimeout: +process.env.BCOIN_WORKER_TIMEOUT
}); });