services: separate volume clear and rm

This commit is contained in:
Girish Ramakrishnan
2025-01-12 18:08:53 +01:00
parent 665f7c849b
commit e34e479c33
5 changed files with 47 additions and 16 deletions
+5 -4
View File
@@ -74,7 +74,8 @@ const NOOP = async function (/*app, options*/) {};
const RMADDONDIR_CMD = path.join(__dirname, 'scripts/rmaddondir.sh');
const RESTART_SERVICE_CMD = path.join(__dirname, 'scripts/restartservice.sh');
const CLEARVOLUME_CMD = path.join(__dirname, 'scripts/clearvolume.sh');
const MKDIRVOLUME_CMD = path.join(__dirname, 'scripts/mkdirvolume.sh');
const RMVOLUME_CMD = path.join(__dirname, 'scripts/rmvolume.sh');
const SETUPVOLUME_CMD = path.join(__dirname, 'scripts/setupvolume.sh');
// setup can be called multiple times for the same app (configure crash restart) and existing data must not be lost
// teardown is destructive. app data stored with the addon is lost
@@ -879,7 +880,7 @@ async function setupLocalStorage(app, options) {
const volumeDataDir = await apps.getStorageDir(app);
const [error] = await safe(shell.promises.sudo([ MKDIRVOLUME_CMD, volumeDataDir ], {}));
const [error] = await safe(shell.promises.sudo([ SETUPVOLUME_CMD, volumeDataDir ], {}));
if (error) throw new BoxError(BoxError.FS_ERROR, `Error creating app storage data dir: ${error.message}`);
}
@@ -890,7 +891,7 @@ async function clearLocalStorage(app, options) {
debug('clearLocalStorage');
const volumeDataDir = await apps.getStorageDir(app);
const [error] = await safe(shell.promises.sudo([ CLEARVOLUME_CMD, 'clear', volumeDataDir ], {}));
const [error] = await safe(shell.promises.sudo([ CLEARVOLUME_CMD, volumeDataDir ], {}));
if (error) throw new BoxError(BoxError.FS_ERROR, error);
}
@@ -901,7 +902,7 @@ async function teardownLocalStorage(app, options) {
debug('teardownLocalStorage');
const volumeDataDir = await apps.getStorageDir(app);
const [error] = await safe(shell.promises.sudo([ CLEARVOLUME_CMD, 'rmdir', volumeDataDir ], {}));
const [error] = await safe(shell.promises.sudo([ RMVOLUME_CMD, volumeDataDir ], {}));
if (error) throw new BoxError(BoxError.FS_ERROR, error);
// sqlite files are automatically cleared