From f473ddeddde934ee0095dc0b700f60abacd6391c Mon Sep 17 00:00:00 2001 From: Braydon Fuller Date: Wed, 3 Feb 2016 12:28:32 -0500 Subject: [PATCH] Lower and include new concurrency limits --- lib/services/address/constants.js | 2 +- lib/services/db.js | 6 ++++++ lib/transaction.js | 5 ++++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/services/address/constants.js b/lib/services/address/constants.js index 961f6e1f..3653e9cb 100644 --- a/lib/services/address/constants.js +++ b/lib/services/address/constants.js @@ -50,7 +50,7 @@ exports.MAX_HISTORY_QUERY_LENGTH = 100; // The maximum number of addresses that can be queried at once exports.MAX_ADDRESSES_QUERY = 10000; // The maximum number of simultaneous requests -exports.MAX_ADDRESSES_LIMIT = 50; +exports.MAX_ADDRESSES_LIMIT = 5; module.exports = exports; diff --git a/lib/services/db.js b/lib/services/db.js index 22cbadf7..eca15bff 100644 --- a/lib/services/db.js +++ b/lib/services/db.js @@ -51,6 +51,7 @@ function DB(options) { this._setDataPath(); this.maxOpenFiles = options.maxOpenFiles || DB.DEFAULT_MAX_OPEN_FILES; + this.maxTransactionLimit = options.maxTransactionLimit || DB.MAX_TRANSACTION_LIMIT; this.levelupStore = leveldown; if (options.store) { @@ -75,6 +76,11 @@ DB.PREFIXES = { TIP: new Buffer('04', 'hex') }; +// The maximum number of transactions to query at once +// Used for populating previous inputs +DB.MAX_TRANSACTION_LIMIT = 5; + +// The default maxiumum number of files open for leveldb DB.DEFAULT_MAX_OPEN_FILES = 200; /** diff --git a/lib/transaction.js b/lib/transaction.js index bc7bda44..f55df37b 100644 --- a/lib/transaction.js +++ b/lib/transaction.js @@ -5,6 +5,8 @@ var levelup = require('levelup'); var bitcore = require('bitcore-lib'); var Transaction = bitcore.Transaction; +var MAX_TRANSACTION_LIMIT = 5; + Transaction.prototype.populateInputs = function(db, poolTransactions, callback) { var self = this; @@ -12,8 +14,9 @@ Transaction.prototype.populateInputs = function(db, poolTransactions, callback) return setImmediate(callback); } - async.each( + async.eachLimit( this.inputs, + db.maxTransactionLimit || MAX_TRANSACTION_LIMIT, function(input, next) { self._populateInput(db, input, poolTransactions, next); },