diff --git a/lib/blockchain/chaindb.js b/lib/blockchain/chaindb.js index 02a2af98..525fce08 100644 --- a/lib/blockchain/chaindb.js +++ b/lib/blockchain/chaindb.js @@ -748,6 +748,8 @@ ChainDB.prototype.prune = co(function* prune(tip) { throw e; } + yield this.db.compactRange(); + return true; }); diff --git a/lib/db/lowlevelup.js b/lib/db/lowlevelup.js index 1ecfa89d..d750e480 100644 --- a/lib/db/lowlevelup.js +++ b/lib/db/lowlevelup.js @@ -401,14 +401,20 @@ LowlevelUp.prototype.approximateSize = function approximateSize(start, end) { /** * Compact range of keys. - * @param {String|Buffer} start - Start key. - * @param {String|Buffer} end - End key. + * @param {String|Buffer|null} start - Start key. + * @param {String|Buffer|null} end - End key. * @returns {Promise} */ LowlevelUp.prototype.compactRange = function compactRange(start, end) { var self = this; + if (!start) + start = new Buffer([0x00]); + + if (!end) + end = new Buffer([0xff]); + return new Promise(function(resolve, reject) { if (!self.loaded) { reject(new Error('Database is closed.')); @@ -416,7 +422,7 @@ LowlevelUp.prototype.compactRange = function compactRange(start, end) { } if (!self.binding.compactRange) { - reject(new Error('Cannot compact range.')); + resolve(); return; }