make the eviction script call back with accumulated statistics

pull/1/head
ansuz 4 years ago
parent a29c5641b8
commit ac322c8e82

@ -32,6 +32,25 @@ Env = {
module.exports = function (Env, cb) { module.exports = function (Env, cb) {
var complete = Util.once(Util.mkAsync(cb)); var complete = Util.once(Util.mkAsync(cb));
var report = {
// archivedChannelsRemoved,
// archivedAccountsRemoved,
// archivedBlobProofsRemoved,
// archivedBlobsRemoved,
// totalChannels,
// activeChannels,
// totalBlobs,
// activeBlobs,
// totalAccounts,
// activeAccounts,
// channelsArchived,
// runningTime,
};
// the administrator should have set an 'inactiveTime' in their config // the administrator should have set an 'inactiveTime' in their config
// if they didn't, just exit. // if they didn't, just exit.
@ -154,6 +173,8 @@ module.exports = function (Env, cb) {
if (err) { if (err) {
return Log.error('EVICT_ARCHIVED_FINAL_ERROR', err); return Log.error('EVICT_ARCHIVED_FINAL_ERROR', err);
} }
report.archivedChannelsRemoved = removed;
report.archivedAccountsRemoved = accounts;
Log.info('EVICT_ARCHIVED_CHANNELS_REMOVED', removed); Log.info('EVICT_ARCHIVED_CHANNELS_REMOVED', removed);
Log.info('EVICT_ARCHIVED_ACCOUNTS_REMOVED', accounts); Log.info('EVICT_ARCHIVED_ACCOUNTS_REMOVED', accounts);
}; };
@ -183,6 +204,7 @@ module.exports = function (Env, cb) {
next(); next();
})); }));
}, w(function () { }, w(function () {
report.archivedBlobProofsRemoved = removed;
Log.info('EVICT_ARCHIVED_BLOB_PROOFS_REMOVED', removed); Log.info('EVICT_ARCHIVED_BLOB_PROOFS_REMOVED', removed);
})); }));
}; };
@ -209,6 +231,7 @@ module.exports = function (Env, cb) {
next(); next();
}); });
}, w(function () { }, w(function () {
report.archivedBlobsRemoved = removed;
Log.info('EVICT_ARCHIVED_BLOBS_REMOVED', removed); Log.info('EVICT_ARCHIVED_BLOBS_REMOVED', removed);
})); }));
}; };
@ -236,6 +259,8 @@ module.exports = function (Env, cb) {
}; };
var done = function () { var done = function () {
report.activeChannels = active;
report.totalChannels = channels;
Log.info('EVICT_CHANNELS_CATEGORIZED', { Log.info('EVICT_CHANNELS_CATEGORIZED', {
active: active, active: active,
channels: channels, channels: channels,
@ -267,6 +292,8 @@ module.exports = function (Env, cb) {
} }
next(); next();
}, w(function () { }, w(function () {
report.totalBlobs = n_blobs;
report.activeBlobs = active;
Log.info('EVICT_BLOBS_CATEGORIZED', { Log.info('EVICT_BLOBS_CATEGORIZED', {
active: active, active: active,
blobs: n_blobs, blobs: n_blobs,
@ -333,6 +360,10 @@ module.exports = function (Env, cb) {
// we plan to delete them, because it may be interesting information // we plan to delete them, because it may be interesting information
inactive++; inactive++;
if (PRESERVE_INACTIVE_ACCOUNTS) { if (PRESERVE_INACTIVE_ACCOUNTS) {
Log.info('EVICT_INACTIVE_ACCOUNT_PRESERVED', {
id: id,
mtime: mtime,
});
pinAll(pinList); pinAll(pinList);
return void next(); return void next();
} }
@ -362,9 +393,8 @@ module.exports = function (Env, cb) {
"EVICT_COUNT_ACCOUNTS": "EVICT_COUNT_ACCOUNTS":
"EVICT_INACTIVE_ACCOUNTS"; "EVICT_INACTIVE_ACCOUNTS";
// update the number of known active accounts in Env for statistics report.totalAccounts = accounts;
Env.knownActiveAccounts = accounts - inactive; report.activeAccounts = accounts - inactive;
Log.info(label, { Log.info(label, {
accounts: accounts, accounts: accounts,
inactive: inactive, inactive: inactive,
@ -381,7 +411,9 @@ module.exports = function (Env, cb) {
// iterate over blobs and remove them // iterate over blobs and remove them
// if they have not been accessed within the specified retention time // if they have not been accessed within the specified retention time
var removed = 0; var removed = 0;
var total = 0;
blobs.list.blobs(function (err, item, next) { blobs.list.blobs(function (err, item, next) {
next = Util.mkAsync(next, THROTTLE_FACTOR);
if (err) { if (err) {
Log.error("EVICT_BLOB_LIST_BLOBS_ERROR", err); Log.error("EVICT_BLOB_LIST_BLOBS_ERROR", err);
return void next(); return void next();
@ -390,6 +422,7 @@ module.exports = function (Env, cb) {
next(); next();
return void Log.error('EVICT_BLOB_LIST_BLOBS_NO_ITEM', item); return void Log.error('EVICT_BLOB_LIST_BLOBS_NO_ITEM', item);
} }
total++;
if (pinnedDocs.test(item.blobId)) { return void next(); } if (pinnedDocs.test(item.blobId)) { return void next(); }
if (activeDocs.test(item.blobId)) { return void next(); } if (activeDocs.test(item.blobId)) { return void next(); }
@ -398,6 +431,7 @@ 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 (getNewestTime(item) > inactiveTime) { return void next(); } if (getNewestTime(item) > inactiveTime) { return void next(); }
removed++;
blobs.archive.blob(item.blobId, function (err) { blobs.archive.blob(item.blobId, function (err) {
if (err) { if (err) {
Log.error("EVICT_ARCHIVE_BLOB_ERROR", { Log.error("EVICT_ARCHIVE_BLOB_ERROR", {
@ -409,10 +443,11 @@ module.exports = function (Env, cb) {
Log.info("EVICT_ARCHIVE_BLOB", { Log.info("EVICT_ARCHIVE_BLOB", {
item: item, item: item,
}); });
removed++;
next(); next();
}); });
}, w(function () { }, w(function () {
report.totalBlobs = total;
report.activeBlobs = total - removed;
Log.info('EVICT_BLOBS_REMOVED', removed); Log.info('EVICT_BLOBS_REMOVED', removed);
})); }));
}; };
@ -522,6 +557,7 @@ module.exports = function (Env, cb) {
}; };
var done = function () { var done = function () {
report.channelsArchived = archived;
return void Log.info('EVICT_CHANNELS_ARCHIVED', archived); return void Log.info('EVICT_CHANNELS_ARCHIVED', archived);
}; };
@ -547,8 +583,9 @@ module.exports = function (Env, cb) {
.nThen(archiveInactiveBlobProofs) .nThen(archiveInactiveBlobProofs)
.nThen(archiveInactiveChannels) .nThen(archiveInactiveChannels)
.nThen(function () { .nThen(function () {
Log.info("EVICT_TIME_TO_RUN_SCRIPT", msSinceStart()); var runningTime = report.runningTime = msSinceStart();
Log.info("EVICT_TIME_TO_RUN_SCRIPT", runningTime);
}).nThen(function () { }).nThen(function () {
complete(); complete(void 0, report);
}); });
}; };

Loading…
Cancel
Save