walletdb: cleanup wipe method.

This commit is contained in:
Christopher Jeffrey 2016-11-04 09:58:15 -07:00
parent 5b43f76307
commit 704d9e1783
No known key found for this signature in database
GPG Key ID: 8962AB9DE6666BBD

View File

@ -470,115 +470,43 @@ WalletDB.prototype.backup = function backup(path) {
WalletDB.prototype.wipe = co(function* wipe() { WalletDB.prototype.wipe = co(function* wipe() {
var batch = this.db.batch(); var batch = this.db.batch();
var dummy = new Buffer(0); var total = 0;
var i, keys, key, gte, lte; var iter, item;
this.logger.warning('Wiping WalletDB TXDB...'); this.logger.warning('Wiping WalletDB TXDB...');
this.logger.warning('I hope you know what you\'re doing.'); this.logger.warning('I hope you know what you\'re doing.');
// All TXDB records iter = db.iterator({
keys = yield this.db.keys({ gte: new Buffer([0x00]),
gte: TXDB.layout.prefix(0x00000000, dummy), lte: new Buffer([0xff])
lte: TXDB.layout.prefix(0xffffffff, dummy)
}); });
for (i = 0; i < keys.length; i++) { for (;;) {
key = keys[i]; item = yield iter.next();
batch.del(key);
if (!item)
break;
try {
switch (item.key[0]) {
case 0x62: // b
case 0x63: // c
case 0x65: // e
case 0x74: // t
case 0x6f: // o
case 0x68: // h
case 0x52: // R
batch.del(item.key);
total++;
break;
}
} catch (e) {
yield iter.end();
throw e;
}
} }
// All recent block hashes this.logger.warning('Wiped %d txdb records.', total);
keys = yield this.db.keys({
gte: layout.h(0),
lte: layout.h(0xffffffff)
});
for (i = 0; i < keys.length; i++) {
key = keys[i];
batch.del(key);
}
// The state record
batch.del(layout.R);
// All block maps
keys = yield this.db.keys({
gte: layout.b(0),
lte: layout.b(0xffffffff)
});
for (i = 0; i < keys.length; i++) {
key = keys[i];
batch.del(key);
}
// All outpoint maps
keys = yield this.db.keys({
gte: layout.o(constants.NULL_HASH, 0),
lte: layout.o(constants.HIGH_HASH, 0xffffffff)
});
for (i = 0; i < keys.length; i++) {
key = keys[i];
batch.del(key);
}
// All TX maps (e -- old)
gte = new Buffer(33);
gte.fill(0);
gte[0] = 0x65;
lte = new Buffer(33);
lte.fill(255);
lte[0] = 0x65;
keys = yield this.db.keys({
gte: gte,
lte: lte
});
for (i = 0; i < keys.length; i++) {
key = keys[i];
batch.del(key);
}
// All block maps (b -- 32 byte old)
gte = new Buffer(33);
gte.fill(0);
gte[0] = 0x62;
lte = new Buffer(33);
lte.fill(255);
lte[0] = 0x62;
keys = yield this.db.keys({
gte: gte,
lte: lte
});
for (i = 0; i < keys.length; i++) {
key = keys[i];
batch.del(key);
}
// All block records (c -- old)
gte = new Buffer(5);
gte.fill(0);
gte[0] = 0x63;
lte = new Buffer(5);
lte.fill(255);
lte[0] = 0x63;
keys = yield this.db.keys({
gte: gte,
lte: lte
});
for (i = 0; i < keys.length; i++) {
key = keys[i];
batch.del(key);
}
yield batch.write(); yield batch.write();
}); });