diff sat/core/sat_main.py @ 3989:f5ba7594cced

core (main): log Exception when `bridge_pi` fails
author Goffi <goffi@goffi.org>
date Thu, 24 Nov 2022 12:25:04 +0100
parents 7af29260ecb8
children 7bf7677b893d
line wrap: on
line diff
--- a/sat/core/sat_main.py	Thu Nov 24 10:08:47 2022 +0100
+++ b/sat/core/sat_main.py	Thu Nov 24 12:25:04 2022 +0100
@@ -95,10 +95,10 @@
         try:
             self.bridge = bridge_module.Bridge()
         except exceptions.BridgeInitError:
-            log.error("Bridge can't be initialised, can't start Libervia Backend")
+            log.exception("Bridge can't be initialised, can't start Libervia Backend")
             sys.exit(1)
 
-        defer.ensureDeferred(self._postInit())
+        defer.ensureDeferred(self._post_init())
 
     @property
     def version(self):
@@ -128,13 +128,19 @@
     def bridge_name(self):
         return os.path.splitext(os.path.basename(self.bridge.__file__))[0]
 
-    async def _postInit(self):
+    async def _post_init(self):
         try:
             bridge_pi = self.bridge.postInit
         except AttributeError:
             pass
         else:
-            await bridge_pi()
+            try:
+                await bridge_pi()
+            except Exception:
+                log.exception("Could not initialize bridge")
+                # because init is not complete at this stage, we use callLater
+                reactor.callLater(0, self.stop)
+                return
 
         self.bridge.register_method("getReady", lambda: self.initialised)
         self.bridge.register_method("getVersion", lambda: self.full_version)