diff options
author | Roeland Jago Douma <rullzer@users.noreply.github.com> | 2020-06-18 08:59:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-18 08:59:45 +0200 |
commit | a915b45190ee1fcfeffa37cd4f2fa2733b16e9ff (patch) | |
tree | 6482fa5fc02bd5a4c5a61f7ec6aeb205094fe2fe | |
parent | 3ac0484dedb0ea494c98bcd5d3ded41118b508c9 (diff) | |
parent | 5ab5a5f89eb81b16be7cac83fab0ba37f45718b4 (diff) | |
download | nextcloud-server-a915b45190ee1fcfeffa37cd4f2fa2733b16e9ff.tar.gz nextcloud-server-a915b45190ee1fcfeffa37cd4f2fa2733b16e9ff.zip |
Merge pull request #21461 from nextcloud/fix/catch-app-register-boot-exceptions
Catch all exceptions when an app is registering or booting
-rw-r--r-- | lib/private/AppFramework/Bootstrap/Coordinator.php | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/lib/private/AppFramework/Bootstrap/Coordinator.php b/lib/private/AppFramework/Bootstrap/Coordinator.php index e713ad7ce91..08951419906 100644 --- a/lib/private/AppFramework/Bootstrap/Coordinator.php +++ b/lib/private/AppFramework/Bootstrap/Coordinator.php @@ -32,6 +32,7 @@ use OCP\AppFramework\QueryException; use OCP\EventDispatcher\IEventDispatcher; use OCP\ILogger; use OCP\IServerContainer; +use Throwable; use function class_exists; use function class_implements; use function in_array; @@ -81,9 +82,17 @@ class Coordinator { try { /** @var IBootstrap|App $application */ $apps[$appId] = $application = $this->serverContainer->query($applicationClassName); - $application->register($context->for($appId)); } catch (QueryException $e) { // Weird, but ok + return; + } + try { + $application->register($context->for($appId)); + } catch (Throwable $e) { + $this->logger->logException($e, [ + 'message' => 'Error during app service registration: ' . $e->getMessage(), + 'level' => ILogger::FATAL, + ]); } } } @@ -125,6 +134,11 @@ class Coordinator { 'message' => "Could not boot $appId" . $e->getMessage(), ]); return; + } catch (Throwable $e) { + $this->logger->logException($e, [ + 'message' => "Could not boot $appId" . $e->getMessage(), + 'level' => ILogger::FATAL, + ]); } } } |