]> source.dussan.org Git - nextcloud-server.git/commitdiff
Catch all exceptions when an app is registering or booting 21461/head
authorChristoph Wurst <christoph@winzerhof-wurst.at>
Wed, 17 Jun 2020 19:07:42 +0000 (21:07 +0200)
committerChristoph Wurst <christoph@winzerhof-wurst.at>
Wed, 17 Jun 2020 19:07:42 +0000 (21:07 +0200)
Signed-off-by: Christoph Wurst <christoph@winzerhof-wurst.at>
lib/private/AppFramework/Bootstrap/Coordinator.php

index e713ad7ce91c9c6458d012461100662ee9973c15..08951419906cc6998e830b15d83ef45d1853583e 100644 (file)
@@ -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,
+                       ]);
                }
        }
 }