From 9c2e051c56e1ef6b9c9901f492fb506ee5d16def Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Wed, 30 Jun 2021 11:45:06 +0200 Subject: Handle broken plugin install --- server/lib/plugins/plugin-manager.ts | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) (limited to 'server/lib/plugins') diff --git a/server/lib/plugins/plugin-manager.ts b/server/lib/plugins/plugin-manager.ts index 6b9a255a4..6599bccca 100644 --- a/server/lib/plugins/plugin-manager.ts +++ b/server/lib/plugins/plugin-manager.ts @@ -304,22 +304,28 @@ export class PluginManager implements ServerHook { uninstalled: false, peertubeEngine: packageJSON.engine.peertube }, { returning: true }) - } catch (err) { - logger.error('Cannot install plugin %s, removing it...', toInstall, { err }) + + logger.info('Successful installation of plugin %s.', toInstall) + + await this.registerPluginOrTheme(plugin) + } catch (rootErr) { + logger.error('Cannot install plugin %s, removing it...', toInstall, { err: rootErr }) try { - await removeNpmPlugin(npmName) + await this.uninstall(npmName) } catch (err) { - logger.error('Cannot remove plugin %s after failed installation.', toInstall, { err }) + logger.error('Cannot uninstall plugin %s after failed installation.', toInstall, { err }) + + try { + await removeNpmPlugin(npmName) + } catch (err) { + logger.error('Cannot remove plugin %s after failed installation.', toInstall, { err }) + } } - throw err + throw rootErr } - logger.info('Successful installation of plugin %s.', toInstall) - - await this.registerPluginOrTheme(plugin) - return plugin } @@ -425,8 +431,7 @@ export class PluginManager implements ServerHook { await ensureDir(registerOptions.peertubeHelpers.plugin.getDataDirectoryPath()) - library.register(registerOptions) - .catch(err => logger.error('Cannot register plugin %s.', npmName, { err })) + await library.register(registerOptions) logger.info('Add plugin %s CSS to global file.', npmName) -- cgit v1.2.3