diff --git a/.gitignore b/.gitignore index 5f9a88d..be77e75 100644 --- a/.gitignore +++ b/.gitignore @@ -2,14 +2,15 @@ package-lock.json node_modules dist/ -baseTrie.js -checkpoint-interface.js -index.js -prioritizedTaskExecutor.js -proof.js -readStream.js -secure-interface.js -secure.js -scratchReadStream.js -trieNode.js -util.js +/baseTrie.js +/checkpointTrie.js +/db.js +/index.js +/prioritizedTaskExecutor.js +/proof.js +/readStream.js +/scratch.js +/scratchReadStream.js +/secure.js +/trieNode.js +/util/ diff --git a/src/baseTrie.js b/src/baseTrie.js index b7a3796..68b79ce 100644 --- a/src/baseTrie.js +++ b/src/baseTrie.js @@ -31,7 +31,7 @@ module.exports = class Trie { this.db = db || new DB() Object.defineProperty(this, 'root', { - set(value) { + set (value) { if (value) { value = ethUtil.toBuffer(value) assert(value.length === 32, 'Invalid root length. Roots are 32 bytes') @@ -41,7 +41,7 @@ module.exports = class Trie { this._root = value }, - get() { + get () { return this._root } }) @@ -132,7 +132,7 @@ module.exports = class Trie { // retrieves a node from dbs by hash _lookupNode (node, cb) { if (TrieNode.isRawNode(node)) { - cb(new TrieNode(node)) + cb(null, new TrieNode(node)) } else { this.db.get(node, (err, value) => { if (err) { @@ -141,9 +141,11 @@ module.exports = class Trie { if (value) { value = new TrieNode(rlp.decode(value)) + } else { + err = new Error('Missing node in DB') } - cb(value) + cb(err, value) }) } } @@ -375,7 +377,10 @@ module.exports = class Trie { return onDone() } - this._lookupNode(root, node => { + this._lookupNode(root, (e, node) => { + if (e) { + return onDone(e, node) + } processNode(root, node, null, err => { if (err) { return onDone(err) @@ -421,7 +426,10 @@ module.exports = class Trie { const childKey = key.concat(keyExtension) const priority = childKey.length taskExecutor.execute(priority, taskCallback => { - self._lookupNode(childRef, childNode => { + self._lookupNode(childRef, (e, childNode) => { + if (e) { + return cb(e, node) + } taskCallback() processNode(childRef, childNode, childKey, cb) }) @@ -434,7 +442,10 @@ module.exports = class Trie { childKey.push(childIndex) const priority = childKey.length taskExecutor.execute(priority, taskCallback => { - self._lookupNode(childRef, childNode => { + self._lookupNode(childRef, (e, childNode) => { + if (e) { + return cb(e, node) + } taskCallback() processNode(childRef, childNode, childKey, cb) }) @@ -585,7 +596,10 @@ module.exports = class Trie { const branchNodeKey = branchNodes[0][0] // look up node - this._lookupNode(branchNode, foundNode => { + this._lookupNode(branchNode, (e, foundNode) => { + if (e) { + return cb(e, foundNode) + } key = processBranchNode(key, branchNodeKey, foundNode, parentNode, stack, opStack) this._saveStack(key, stack, opStack, cb) }) @@ -694,7 +708,7 @@ module.exports = class Trie { */ checkRoot (root, cb) { root = ethUtil.toBuffer(root) - this._lookupNode(root, value => { + this._lookupNode(root, (e, value) => { cb(null, !!value) }) } diff --git a/test/index.js b/test/index.js index c5256f3..e1986e7 100644 --- a/test/index.js +++ b/test/index.js @@ -12,7 +12,9 @@ tape('simple save and retrive', function (tester) { trie.get('test', function (err, value) { t.equal(value, null) - t.end(err) + + t.notEqual(err, null) + t.end() }) }) diff --git a/test/secure.js b/test/secure.js index 4d06570..1c2d5dd 100644 --- a/test/secure.js +++ b/test/secure.js @@ -2,7 +2,6 @@ const Trie = require('../src/secure.js') const async = require('async') const tape = require('tape') - tape('SecureTrie', function (t) { const trie = new Trie() const k = Buffer.from('foo')