mirror of
https://github.com/ether/etherpad-lite.git
synced 2025-04-21 16:06:16 -04:00
Add code for revision cleanup (#6442)
* Add initial code for revision cleanup * Some improvements - code cleanup * Cleanup logging * Add button in admin backend to cleanup revisions of a specific pad * Disable cleanup by default and show errors in admin area * Improve cleanup code * Load revisions for cleanup in parallel * Consider saved revisions during pad cleanup
This commit is contained in:
parent
08f199178d
commit
1ad9418a6f
10 changed files with 283 additions and 3 deletions
|
@ -13,6 +13,7 @@ const settings = require('../../utils/Settings');
|
|||
const UpdateCheck = require('../../utils/UpdateCheck');
|
||||
const padManager = require('../../db/PadManager');
|
||||
const api = require('../../db/API');
|
||||
const cleanup = require('../../utils/Cleanup');
|
||||
|
||||
|
||||
const queryPadLimit = 12;
|
||||
|
@ -252,6 +253,40 @@ exports.socketio = (hookName: string, {io}: any) => {
|
|||
}
|
||||
})
|
||||
|
||||
socket.on('cleanupPadRevisions', async (padId: string) => {
|
||||
if (!settings.cleanup.enabled) {
|
||||
socket.emit('results:cleanupPadRevisions', {
|
||||
error: 'Cleanup disabled. Enable cleanup in settings.json: cleanup.enabled => true',
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const padExists = await padManager.doesPadExists(padId);
|
||||
if (padExists) {
|
||||
logger.info(`Cleanup pad revisions: ${padId}`);
|
||||
try {
|
||||
const result = await cleanup.deleteRevisions(padId, settings.cleanup.keepRevisions)
|
||||
if (result) {
|
||||
socket.emit('results:cleanupPadRevisions', {
|
||||
padId: padId,
|
||||
keepRevisions: settings.cleanup.keepRevisions,
|
||||
});
|
||||
logger.info('successful cleaned up pad: ', padId)
|
||||
} else {
|
||||
socket.emit('results:cleanupPadRevisions', {
|
||||
error: 'Error cleaning up pad',
|
||||
});
|
||||
}
|
||||
} catch (err: any) {
|
||||
logger.error(`Error in pad ${padId}: ${err.stack || err}`);
|
||||
socket.emit('results:cleanupPadRevisions', {
|
||||
error: err.toString(),
|
||||
});
|
||||
return;
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
socket.on('restartServer', async () => {
|
||||
logger.info('Admin request to restart server through a socket on /admin/settings');
|
||||
settings.reloadSettings();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue