]> glassweightruler.freedombox.rocks Git - waydroid.git/commitdiff
Make session more resilient to start failures
authorAlessandro Astone <ales.astone@gmail.com>
Sun, 15 Jan 2023 15:34:02 +0000 (16:34 +0100)
committerAlessandro Astone <ales.astone@gmail.com>
Sun, 15 Jan 2023 15:35:10 +0000 (16:35 +0100)
tools/actions/container_manager.py
tools/actions/session_manager.py

index 29ba55268b64a1c6b3397828927dc71906150282..cbd62988b6a0d61d8cc8a2b120287228fe2449d8 100644 (file)
@@ -123,10 +123,7 @@ def start(args):
 
 def do_start(args, session):
     if "session" in args:
-        logging.info("Already tracking a session")
-        return
-
-    args.session = session
+        raise RuntimeError("Already tracking a session")
 
     # Networking
     command = [tools.config.tools_src +
@@ -140,12 +137,12 @@ def do_start(args, session):
 
     # Mount rootfs
     cfg = tools.config.load(args)
-    helpers.images.mount_rootfs(args, cfg["waydroid"]["images_path"], args.session)
+    helpers.images.mount_rootfs(args, cfg["waydroid"]["images_path"], session)
 
     helpers.protocol.set_aidl_version(args)
 
     # Mount data
-    helpers.mount.bind(args, args.session["waydroid_data"],
+    helpers.mount.bind(args, session["waydroid_data"],
                        tools.config.defaults["data"])
 
     # Cgroup hacks
@@ -167,6 +164,8 @@ def do_start(args, session):
     helpers.lxc.start(args)
     services.hardware_manager.start(args)
 
+    args.session = session
+
 def stop(args):
     try:
         services.hardware_manager.stop(args)
index cfcd267988eafaf699c5f4c12e5728d7113f7490..abb4f35a080fee5edebbbab90ed823e493988751 100644 (file)
@@ -69,11 +69,13 @@ def start(args, unlocked_cb=None):
     GLib.unix_signal_add(GLib.PRIORITY_HIGH, signal.SIGUSR1, sigusr_handler, None)
     try:
         tools.helpers.ipc.DBusContainerService().Start(session)
-    except dbus.DBusException:
-        logging.error("WayDroid container is not listening")
+    except dbus.DBusException as e:
+        if e.get_dbus_name().startswith("org.freedesktop.DBus.Python"):
+            logging.error(e.get_dbus_message().splitlines()[-1])
+        else:
+            logging.error("WayDroid container is not listening")
         sys.exit(0)
 
-
     services.user_manager.start(args, session, unlocked_cb)
     services.clipboard_manager.start(args)
     service(args, mainloop)