From 246ed35d948e9b2fe4d8eb38378ba4873bafe2b9 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Thu, 6 Aug 2020 16:48:06 +0200 Subject: [PATCH] only boot apps once in some cases `loadApp` is called more then once which is currently causing apps to be "booted" multiple times which can lead to unexepected behaviour with things like registering hooks Signed-off-by: Robin Appelman --- lib/private/AppFramework/Bootstrap/Coordinator.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/private/AppFramework/Bootstrap/Coordinator.php b/lib/private/AppFramework/Bootstrap/Coordinator.php index 358e71d785..e293ef2998 100644 --- a/lib/private/AppFramework/Bootstrap/Coordinator.php +++ b/lib/private/AppFramework/Bootstrap/Coordinator.php @@ -60,6 +60,9 @@ class Coordinator { /** @var RegistrationContext|null */ private $registrationContext; + /** @var string[] */ + private $bootedApps = []; + public function __construct(IServerContainer $container, Registry $registry, IManager $dashboardManager, @@ -134,6 +137,11 @@ class Coordinator { } public function bootApp(string $appId): void { + if (isset($this->bootedApps[$appId])) { + return; + } + $this->bootedApps[$appId] = true; + $appNameSpace = App::buildAppNamespace($appId); $applicationClassName = $appNameSpace . '\\AppInfo\\Application'; if (!class_exists($applicationClassName)) {