From bd54b42dc40deae45abdef13bd83cbd713becc3e Mon Sep 17 00:00:00 2001 From: Christopher Jeffrey Date: Sat, 19 Mar 2016 09:36:16 -0700 Subject: [PATCH] fixing memleak. so far so good. --- lib/bcoin/chaindb.js | 18 +++++------------- lib/bcoin/datastore.js | 2 +- lib/bcoin/ldb.js | 1 + lib/bcoin/txdb.js | 24 ++++++------------------ lib/bcoin/walletdb.js | 3 +-- 5 files changed, 14 insertions(+), 34 deletions(-) diff --git a/lib/bcoin/chaindb.js b/lib/bcoin/chaindb.js index a78748fd..a296bf09 100644 --- a/lib/bcoin/chaindb.js +++ b/lib/bcoin/chaindb.js @@ -215,8 +215,7 @@ ChainDB.prototype.getHash = function getHash(height, callback) { ChainDB.prototype.dump = function dump(callback) { var records = {}; - return callback(); - var iter = this.db.db.iterator({ + var iter = this.db.iterator({ gte: 'c', lte: 'c~', keys: true, @@ -840,8 +839,6 @@ ChainDB.prototype.getCoinsByAddress = function getCoinsByAddress(addresses, opti var ids = []; var coins = []; - return callback(null, coins); - if (!callback) { callback = options; options = {}; @@ -853,7 +850,7 @@ ChainDB.prototype.getCoinsByAddress = function getCoinsByAddress(addresses, opti addresses = utils.uniqs(addresses); utils.forEach(addresses, function(address, done) { - var iter = self.db.db.iterator({ + var iter = self.db.iterator({ gte: 'u/a/' + address + '/', lte: 'u/a/' + address + '/~', keys: true, @@ -939,8 +936,6 @@ ChainDB.prototype.getTXByAddress = function getTXByAddress(addresses, options, c var txs = []; var have = {}; - return callback(null, txs); - if (!callback) { callback = options; options = {}; @@ -952,7 +947,7 @@ ChainDB.prototype.getTXByAddress = function getTXByAddress(addresses, options, c addresses = utils.uniqs(addresses); utils.forEach(addresses, function(address, done) { - var iter = self.db.db.iterator({ + var iter = self.db.iterator({ gte: 't/a/' + address + '/', lte: 't/a/' + address + '/~', keys: true, @@ -1246,9 +1241,7 @@ ChainDB.prototype.isSpentTX = function isSpentTX(hash, callback) { if (hash.hash) hash = hash.hash('hex'); - return callback(null, false); - - var iter = this.db.db.iterator({ + var iter = this.db.iterator({ gte: 'u/t/' + hash, lte: 'u/t/' + hash + '~', keys: true, @@ -1351,8 +1344,7 @@ ChainDB.prototype._pruneQueue = function _pruneQueue(block, batch, callback) { }; ChainDB.prototype._pruneCoinQueue = function _pruneQueue(block, batch, callback) { - return callback(); - var iter = this.db.db.iterator({ + var iter = this.db.iterator({ gte: 'u/q/' + pad32(block.height), lte: 'u/q/' + pad32(block.height) + '~', keys: true, diff --git a/lib/bcoin/datastore.js b/lib/bcoin/datastore.js index 005f8ed7..75e6b5e2 100644 --- a/lib/bcoin/datastore.js +++ b/lib/bcoin/datastore.js @@ -334,7 +334,7 @@ function Iterator(store, options) { if (options.keys === false) options.keys = true; this.options = options; - this.iterator = this._db.db.iterator(options); + this.iterator = this._db.iterator(options); } Iterator.prototype.seek = function seek(key) { diff --git a/lib/bcoin/ldb.js b/lib/bcoin/ldb.js index 05bd42ef..0a75dd50 100644 --- a/lib/bcoin/ldb.js +++ b/lib/bcoin/ldb.js @@ -148,6 +148,7 @@ LowlevelUp.prototype.batch = function batch(ops, options, callback) { }; LowlevelUp.prototype.iterator = function iterator(options) { + console.log(Error().stack); return this.db.iterator(options); }; diff --git a/lib/bcoin/txdb.js b/lib/bcoin/txdb.js index a40bbd83..23334db0 100644 --- a/lib/bcoin/txdb.js +++ b/lib/bcoin/txdb.js @@ -119,8 +119,6 @@ TXPool.prototype.mapAddresses = function mapAddresses(address, callback) { var map = {}; var iter; - return callback(null, map); - if (Array.isArray(address)) { return utils.forEachSerial(address, function(address, next) { self.mapAddresses(address, function(err, res) { @@ -140,7 +138,7 @@ TXPool.prototype.mapAddresses = function mapAddresses(address, callback) { }); } - iter = this.db.db.iterator({ + iter = this.db.iterator({ gte: prefix + 'a/' + address, lte: prefix + 'a/' + address + '~', keys: true, @@ -806,8 +804,6 @@ TXPool.prototype.getTXHashes = function getTXHashes(address, callback) { var txs = []; var iter; - return callback(null, txs); - callback = utils.ensure(callback); if (Array.isArray(address)) { @@ -830,7 +826,7 @@ TXPool.prototype.getTXHashes = function getTXHashes(address, callback) { }); } - iter = this.db.db.iterator({ + iter = this.db.iterator({ gte: address ? prefix + 't/a/' + address : prefix + 't/t', lte: address ? prefix + 't/a/' + address + '~' : prefix + 't/t~', keys: true, @@ -871,8 +867,6 @@ TXPool.prototype.getPendingHashes = function getPendingHashes(address, callback) var txs = []; var iter; - return callback(null, txs); - callback = utils.ensure(callback); if (Array.isArray(address)) { @@ -896,7 +890,7 @@ TXPool.prototype.getPendingHashes = function getPendingHashes(address, callback) }); } - iter = this.db.db.iterator({ + iter = this.db.iterator({ gte: address ? prefix + 't/p/a/' + address : prefix + 't/p/t', lte: address ? prefix + 't/p/a/' + address + '~' : prefix + 't/p/t~', keys: true, @@ -937,8 +931,6 @@ TXPool.prototype.getCoinIDs = function getCoinIDs(address, callback) { var coins = []; var iter; - return callback(null, coins); - callback = utils.ensure(callback); if (Array.isArray(address)) { @@ -961,7 +953,7 @@ TXPool.prototype.getCoinIDs = function getCoinIDs(address, callback) { }); } - iter = this.db.db.iterator({ + iter = this.db.iterator({ gte: address ? prefix + 'u/a/' + address : prefix + 'u/t', lte: address ? prefix + 'u/a/' + address + '~' : prefix + 'u/t~', keys: true, @@ -1001,11 +993,9 @@ TXPool.prototype.getHeightRangeHashes = function getHeightRangeHashes(address, o var txs = []; var iter; - return callback(null, txs); - callback = utils.ensure(callback); - iter = this.db.db.iterator({ + iter = this.db.iterator({ gte: address ? prefix + 't/h/a/' + address + '/' + pad32(options.start) + '/' : prefix + 't/h/h/' + pad32(options.start) + '/', @@ -1055,11 +1045,9 @@ TXPool.prototype.getRangeHashes = function getRangeHashes(address, options, call var txs = []; var iter; - return callback(null, txs); - callback = utils.ensure(callback); - iter = this.db.db.iterator({ + iter = this.db.iterator({ gte: address ? prefix + 't/s/a/' + address + '/' + pad32(options.start) + '/' : prefix + 't/s/s/' + pad32(options.start) + '/', diff --git a/lib/bcoin/walletdb.js b/lib/bcoin/walletdb.js index 8ebb3db8..ef4c7d5c 100644 --- a/lib/bcoin/walletdb.js +++ b/lib/bcoin/walletdb.js @@ -43,8 +43,7 @@ WalletDB._db = {}; WalletDB.prototype.dump = function dump(callback) { var records = {}; - return callback(); - var iter = this.db.db.iterator({ + var iter = this.db.iterator({ gte: 'w', lte: 'w~', keys: true,