checkAllPads: Increase performance/resilience

Performance: Don't preload pads. Check for pool only once per pad.
Resilience: Handle missing revision.
This commit is contained in:
Claas Augner 2018-03-09 14:02:22 +01:00 committed by GitHub
parent 5c864ec47d
commit 5c915062e1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 79 additions and 72 deletions

View File

@ -1,5 +1,5 @@
/*
This is a debug tool. It checks all revisions of all pads for data corruption
This is a debug tool. It checks all revisions for data corruption
*/
if(process.argv.length != 2)
@ -35,20 +35,27 @@ async.series([
padManager.listAllPads(function(err, res)
{
var padIds = res.padIDs;
pads = [];
async.forEach(padIds, function(padId, callback) {
padManager.getPad(padId, function(err, pad) {
pads.push(pad);
padIds = res.padIDs;
callback(err);
})
}, callback);
});
},
function (callback)
{
async.forEach(pads, function(pad, callback)
async.forEach(padIds, function(padId, callback)
{
padManager.getPad(padId, function(err, pad) {
if (err) {
callback(err);
}
//check if the pad has a pool
if(pad.pool === undefined )
{
console.error("[" + pad.id + "] Missing attribute pool");
callback();
return;
}
//create an array with key kevisions
//key revisions always save the full pad atext
var head = pad.getHeadRevisionNumber();
@ -87,18 +94,17 @@ async.series([
return;
}
//check if the pad has a pool
if(pad.pool === undefined )
{
console.error("[" + pad.id + "] Attribute pool is missing");
//check if the revision exists
if (revisions[keyRev] == null) {
console.error("[" + pad.id + "] Missing revision " + keyRev);
callback();
return;
}
//check if there is a atext in the keyRevisions
if(revisions[keyRev] == null || revisions[keyRev].meta === undefined || revisions[keyRev].meta.atext === undefined)
if(revisions[keyRev].meta === undefined || revisions[keyRev].meta.atext === undefined)
{
console.error("[" + pad.id + "] No atext in key revision " + keyRev);
console.error("[" + pad.id + "] Missing atext in revision " + keyRev);
callback();
return;
}
@ -110,7 +116,7 @@ async.series([
{
try
{
//console.log("check revision " + i);
//console.log("[" + pad.id + "] check revision " + i);
var cs = revisions[i].changeset;
atext = Changeset.applyToAText(cs, atext, apool);
}
@ -125,6 +131,7 @@ async.series([
callback();
});
}, callback);
});
}, callback);
}
], function (err)