[feat] load gc params from runtime.json

This commit is contained in:
PauI Ostrovckij
2025-06-25 13:43:31 +03:00
parent 9e101b7e43
commit e380fec22e

View File

@ -53,7 +53,7 @@ var cfgExpFilesCron = config.get('services.CoAuthoring.expire.filesCron');
var cfgExpDocumentsCron = config.get('services.CoAuthoring.expire.documentsCron'); var cfgExpDocumentsCron = config.get('services.CoAuthoring.expire.documentsCron');
var cfgExpFiles = config.get('services.CoAuthoring.expire.files'); var cfgExpFiles = config.get('services.CoAuthoring.expire.files');
var cfgExpFilesRemovedAtOnce = config.get('services.CoAuthoring.expire.filesremovedatonce'); var cfgExpFilesRemovedAtOnce = config.get('services.CoAuthoring.expire.filesremovedatonce');
var cfgForceSaveStep = ms(config.get('services.CoAuthoring.autoAssembly.step')); var cfgForceSaveStep = config.get('services.CoAuthoring.autoAssembly.step');
function getCronStep(cronTime){ function getCronStep(cronTime){
let cronJob = new cron.CronJob(cronTime, function(){}); let cronJob = new cron.CronJob(cronTime, function(){});
@ -73,7 +73,10 @@ var checkFileExpire = function(expireSeconds) {
var currentRemovedCount; var currentRemovedCount;
do { do {
currentRemovedCount = 0; currentRemovedCount = 0;
expired = yield taskResult.getExpired(ctx, cfgExpFilesRemovedAtOnce, expireSeconds ?? cfgExpFiles); yield ctx.initTenantCache();
const expFiles = ctx.getCfg('services.CoAuthoring.expire.files', cfgExpFiles);
const expFilesRemovedAtOnce = ctx.getCfg('services.CoAuthoring.expire.filesremovedatonce', cfgExpFilesRemovedAtOnce);
expired = yield taskResult.getExpired(ctx, expFilesRemovedAtOnce, expireSeconds ?? expFiles);
for (var i = 0; i < expired.length; ++i) { for (var i = 0; i < expired.length; ++i) {
let tenant = expired[i].tenant; let tenant = expired[i].tenant;
let docId = expired[i].id; let docId = expired[i].id;
@ -99,7 +102,10 @@ var checkFileExpire = function(expireSeconds) {
} catch (e) { } catch (e) {
ctx.logger.error('checkFileExpire error: %s', e.stack); ctx.logger.error('checkFileExpire error: %s', e.stack);
} finally { } finally {
setTimeout(checkFileExpire, expFilesStep); yield ctx.initTenantCache();
const currentFilesCron = ctx.getCfg('services.CoAuthoring.expire.filesCron', cfgExpFilesCron);
const currentExpFilesStep = getCronStep(currentFilesCron);
setTimeout(checkFileExpire, currentExpFilesStep);
} }
}); });
}; };
@ -147,7 +153,10 @@ var checkDocumentExpire = function() {
} catch (e) { } catch (e) {
ctx.logger.error('checkDocumentExpire error: %s', e.stack); ctx.logger.error('checkDocumentExpire error: %s', e.stack);
} }
setTimeout(checkDocumentExpire, expDocumentsStep); yield ctx.initTenantCache();
const currentDocumentsCron = ctx.getCfg('services.CoAuthoring.expire.documentsCron', cfgExpDocumentsCron);
const currentExpDocumentsStep = getCronStep(currentDocumentsCron);
setTimeout(checkDocumentExpire, currentExpDocumentsStep);
} }
}); });
}; };
@ -198,15 +207,26 @@ let forceSaveTimeout = function() {
} catch (e) { } catch (e) {
ctx.logger.error('checkDocumentExpire error: %s', e.stack); ctx.logger.error('checkDocumentExpire error: %s', e.stack);
} }
setTimeout(forceSaveTimeout, cfgForceSaveStep); yield ctx.initTenantCache();
const currentForceSaveStep = ctx.getCfg('services.CoAuthoring.autoAssembly.step', cfgForceSaveStep);
setTimeout(forceSaveTimeout, ms(currentForceSaveStep));
} }
}); });
}; };
exports.startGC = function() { exports.startGC = async function() {
setTimeout(checkDocumentExpire, expDocumentsStep); const ctx = new operationContext.Context();
setTimeout(checkFileExpire, expFilesStep); await ctx.initTenantCache();
setTimeout(forceSaveTimeout, cfgForceSaveStep); const currentDocumentsCron = ctx.getCfg('services.CoAuthoring.expire.documentsCron', cfgExpDocumentsCron);
const currentExpDocumentsStep = getCronStep(currentDocumentsCron);
setTimeout(checkDocumentExpire, currentExpDocumentsStep);
const currentFilesCron = ctx.getCfg('services.CoAuthoring.expire.filesCron', cfgExpFilesCron);
const currentExpFilesStep = getCronStep(currentFilesCron);
setTimeout(checkFileExpire, currentExpFilesStep);
const currentForceSaveStep = ctx.getCfg('services.CoAuthoring.autoAssembly.step', cfgForceSaveStep);
setTimeout(forceSaveTimeout, ms(currentForceSaveStep));
}; };
exports.getCronStep = getCronStep; exports.getCronStep = getCronStep;
exports.checkFileExpire = checkFileExpire; exports.checkFileExpire = checkFileExpire;