mirror of https://github.com/xwiki-labs/cryptpad
Add DRY_RUN option to the eviction script
This commit is contained in:
parent
0e918643ce
commit
70d84838df
|
@ -200,6 +200,11 @@ var evictArchived = function (Env, cb) {
|
||||||
|
|
||||||
// but if it's been stored for the configured time...
|
// but if it's been stored for the configured time...
|
||||||
// expire it
|
// expire it
|
||||||
|
if (Env.DRY_RUN) {
|
||||||
|
if (item.channel.length === 32) { removed++; }
|
||||||
|
else if (item.channel.length === 44) { accounts++; }
|
||||||
|
return void Log.info("EVICT_ARCHIVED_CHANNEL_DRY_RUN", item.channel, next);
|
||||||
|
}
|
||||||
store.removeArchivedChannel(item.channel, w(function (err) {
|
store.removeArchivedChannel(item.channel, w(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return Log.error('EVICT_ARCHIVED_CHANNEL_REMOVAL_ERROR', {
|
return Log.error('EVICT_ARCHIVED_CHANNEL_REMOVAL_ERROR', {
|
||||||
|
@ -246,6 +251,10 @@ var evictArchived = function (Env, cb) {
|
||||||
return void next();
|
return void next();
|
||||||
}
|
}
|
||||||
if (item && item.mtime > retentionTime) { return void next(); }
|
if (item && item.mtime > retentionTime) { return void next(); }
|
||||||
|
if (Env.DRY_RUN) {
|
||||||
|
removed++;
|
||||||
|
return void Log.info("EVICT_ARCHIVED_BLOB_PROOF_DRY_RUN", item, next);
|
||||||
|
}
|
||||||
blobs.remove.archived.proof(item.safeKey, item.blobId, (function (err) {
|
blobs.remove.archived.proof(item.safeKey, item.blobId, (function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
Log.error("EVICT_ARCHIVED_BLOB_PROOF_ERROR", item);
|
Log.error("EVICT_ARCHIVED_BLOB_PROOF_ERROR", item);
|
||||||
|
@ -273,6 +282,10 @@ var evictArchived = function (Env, cb) {
|
||||||
return void next();
|
return void next();
|
||||||
}
|
}
|
||||||
if (item && item.mtime > retentionTime) { return void next(); }
|
if (item && item.mtime > retentionTime) { return void next(); }
|
||||||
|
if (Env.DRY_RUN) {
|
||||||
|
removed++;
|
||||||
|
return void Log.info("EVICT_ARCHIVED_BLOB_DRY_RUN", item, next);
|
||||||
|
}
|
||||||
blobs.remove.archived.blob(item.blobId, function (err) {
|
blobs.remove.archived.blob(item.blobId, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
Log.error("EVICT_ARCHIVED_BLOB_ERROR", item);
|
Log.error("EVICT_ARCHIVED_BLOB_ERROR", item);
|
||||||
|
@ -288,6 +301,7 @@ var evictArchived = function (Env, cb) {
|
||||||
}));
|
}));
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (Env.DRY_RUN) { Env.Log.info('DRY RUN'); }
|
||||||
nThen(loadStorage)
|
nThen(loadStorage)
|
||||||
.nThen(migrateIncorrectBlobs)
|
.nThen(migrateIncorrectBlobs)
|
||||||
.nThen(removeArchivedChannels)
|
.nThen(removeArchivedChannels)
|
||||||
|
@ -544,6 +558,9 @@ module.exports = function (Env, cb) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// remove the pin logs of inactive accounts if inactive account removal is configured
|
// remove the pin logs of inactive accounts if inactive account removal is configured
|
||||||
|
if (Env.DRY_RUN) {
|
||||||
|
return void Log.info("EVICT_INACTIVE_ACCOUNT_DRY_RUN", id, cb);
|
||||||
|
}
|
||||||
pinStore.archiveChannel(id, undefined, function (err) {
|
pinStore.archiveChannel(id, undefined, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return Log.error('EVICT_INACTIVE_ACCOUNT_PIN_LOG', err, next);
|
return Log.error('EVICT_INACTIVE_ACCOUNT_PIN_LOG', err, next);
|
||||||
|
@ -602,7 +619,12 @@ module.exports = function (Env, cb) {
|
||||||
// unless we address this race condition with this last-minute double-check
|
// unless we address this race condition with this last-minute double-check
|
||||||
if (item.mtime > inactiveTime) { return void next(); }
|
if (item.mtime > inactiveTime) { return void next(); }
|
||||||
|
|
||||||
removed++;
|
if (Env.DRY_RUN) {
|
||||||
|
removed++;
|
||||||
|
return void Log.info("EVICT_ARCHIVE_BLOB_DRY_RUN", {
|
||||||
|
item: item,
|
||||||
|
}, next);
|
||||||
|
}
|
||||||
blobs.archive.blob(item.blobId, 'INACTIVE', function (err) {
|
blobs.archive.blob(item.blobId, 'INACTIVE', function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return Log.error("EVICT_ARCHIVE_BLOB_ERROR", {
|
return Log.error("EVICT_ARCHIVE_BLOB_ERROR", {
|
||||||
|
@ -610,6 +632,7 @@ module.exports = function (Env, cb) {
|
||||||
item: item,
|
item: item,
|
||||||
}, next);
|
}, next);
|
||||||
}
|
}
|
||||||
|
removed++;
|
||||||
Log.info("EVICT_ARCHIVE_BLOB", {
|
Log.info("EVICT_ARCHIVE_BLOB", {
|
||||||
item: item,
|
item: item,
|
||||||
}, next);
|
}, next);
|
||||||
|
@ -658,6 +681,10 @@ module.exports = function (Env, cb) {
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}).nThen(function () {
|
}).nThen(function () {
|
||||||
|
if (Env.DRY_RUN) {
|
||||||
|
removed++;
|
||||||
|
return void Log.info("EVICT_BLOB_PROOF_LONELY_DRY_RUN", item, next);
|
||||||
|
}
|
||||||
blobs.remove.proof(item.safeKey, item.blobId, function (err) {
|
blobs.remove.proof(item.safeKey, item.blobId, function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return Log.error("EVICT_BLOB_PROOF_LONELY_ERROR", item, next);
|
return Log.error("EVICT_BLOB_PROOF_LONELY_ERROR", item, next);
|
||||||
|
@ -698,6 +725,9 @@ module.exports = function (Env, cb) {
|
||||||
// check if the database has any ephemeral channels
|
// check if the database has any ephemeral channels
|
||||||
// if it does it's because of a bug, and they should be removed
|
// if it does it's because of a bug, and they should be removed
|
||||||
if (item.channel.length === 34) {
|
if (item.channel.length === 34) {
|
||||||
|
if (Env.DRY_RUN) {
|
||||||
|
return void Log.info("EVICT_EPHEMERAL_DRY_RUN", item.channel, cb);
|
||||||
|
}
|
||||||
return void store.removeChannel(item.channel, w(function (err) {
|
return void store.removeChannel(item.channel, w(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
return Log.error('EVICT_EPHEMERAL_CHANNEL_REMOVAL_ERROR', {
|
return Log.error('EVICT_EPHEMERAL_CHANNEL_REMOVAL_ERROR', {
|
||||||
|
@ -728,6 +758,10 @@ module.exports = function (Env, cb) {
|
||||||
// else fall through to the archival
|
// else fall through to the archival
|
||||||
}));
|
}));
|
||||||
}).nThen(function (w) {
|
}).nThen(function (w) {
|
||||||
|
if (Env.DRY_RUN) {
|
||||||
|
archived++;
|
||||||
|
return void Log.info("EVICT_CHANNEL_ARCHIVAL_DRY_RUN", item.channel, cb);
|
||||||
|
}
|
||||||
return void store.archiveChannel(item.channel, 'INACTIVE', w(function (err) {
|
return void store.archiveChannel(item.channel, 'INACTIVE', w(function (err) {
|
||||||
if (err) {
|
if (err) {
|
||||||
Log.error('EVICT_CHANNEL_ARCHIVAL_ERROR', {
|
Log.error('EVICT_CHANNEL_ARCHIVAL_ERROR', {
|
||||||
|
@ -736,8 +770,8 @@ module.exports = function (Env, cb) {
|
||||||
}, w());
|
}, w());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Log.info('EVICT_CHANNEL_ARCHIVAL', item.channel, w());
|
|
||||||
archived++;
|
archived++;
|
||||||
|
Log.info('EVICT_CHANNEL_ARCHIVAL', item.channel, w());
|
||||||
}));
|
}));
|
||||||
}).nThen(cb);
|
}).nThen(cb);
|
||||||
};
|
};
|
||||||
|
@ -754,6 +788,7 @@ module.exports = function (Env, cb) {
|
||||||
store.listChannels(handler, w(done), true); // using a hacky "fast mode" since we only need the channel id
|
store.listChannels(handler, w(done), true); // using a hacky "fast mode" since we only need the channel id
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (Env.DRY_RUN) { Env.Log.info('DRY RUN'); }
|
||||||
nThen(loadStorage)
|
nThen(loadStorage)
|
||||||
|
|
||||||
// iterate over all documents and add them to a bloom filter if they have been active
|
// iterate over all documents and add them to a bloom filter if they have been active
|
||||||
|
|
|
@ -15,6 +15,10 @@ var config = require("../lib/load-config");
|
||||||
|
|
||||||
var Env = Environment.create(config);
|
var Env = Environment.create(config);
|
||||||
|
|
||||||
|
// Set DRY_RUN to true to run the script without deleting anything. A log file
|
||||||
|
// will be created.
|
||||||
|
Env.DRY_RUN = false;
|
||||||
|
|
||||||
var loadPremiumAccounts = function (Env, cb) {
|
var loadPremiumAccounts = function (Env, cb) {
|
||||||
nThen(function (w) {
|
nThen(function (w) {
|
||||||
// load premium accounts
|
// load premium accounts
|
||||||
|
|
Loading…
Reference in New Issue