From: Alessandro Astone Date: Sun, 15 Jan 2023 15:34:02 +0000 (+0100) Subject: Make session more resilient to start failures X-Git-Tag: 1.4.0~45 X-Git-Url: https://glassweightruler.freedombox.rocks/gitweb/waydroid.git/commitdiff_plain/eabe5d6c3b31360a33621284f2dcc98e9d03b81d?ds=sidebyside Make session more resilient to start failures --- diff --git a/tools/actions/container_manager.py b/tools/actions/container_manager.py index 29ba552..cbd6298 100644 --- a/tools/actions/container_manager.py +++ b/tools/actions/container_manager.py @@ -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) diff --git a/tools/actions/session_manager.py b/tools/actions/session_manager.py index cfcd267..abb4f35 100644 --- a/tools/actions/session_manager.py +++ b/tools/actions/session_manager.py @@ -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)