mirror of
https://github.com/home-assistant/supervisor.git
synced 2025-07-27 11:06:32 +00:00
Ignore disappearing network devices while querying them (#3249)
Sometimes NetworkManager network devices disappear while we are query them. Presumably those are network interfaces generated by Docker. Skip them and print a warning.
This commit is contained in:
parent
e5817e9445
commit
d2b706df05
@ -13,6 +13,7 @@ from ...exceptions import (
|
|||||||
DBusError,
|
DBusError,
|
||||||
DBusFatalError,
|
DBusFatalError,
|
||||||
DBusInterfaceError,
|
DBusInterfaceError,
|
||||||
|
DBusInterfaceMethodError,
|
||||||
HostNotSupportedError,
|
HostNotSupportedError,
|
||||||
)
|
)
|
||||||
from ...utils.dbus import DBus
|
from ...utils.dbus import DBus
|
||||||
@ -162,7 +163,10 @@ class NetworkManager(DBusInterface):
|
|||||||
# Connect to interface
|
# Connect to interface
|
||||||
try:
|
try:
|
||||||
await interface.connect()
|
await interface.connect()
|
||||||
except DBusFatalError as err:
|
except (DBusFatalError, DBusInterfaceMethodError) as err:
|
||||||
|
# Docker creates and deletes interfaces quite often, sometimes
|
||||||
|
# this causes a race condition: A device disappears while we
|
||||||
|
# try to query it. Ignore those cases.
|
||||||
_LOGGER.warning("Can't process %s: %s", device, err)
|
_LOGGER.warning("Can't process %s: %s", device, err)
|
||||||
continue
|
continue
|
||||||
except Exception as err: # pylint: disable=broad-except
|
except Exception as err: # pylint: disable=broad-except
|
||||||
|
@ -162,11 +162,10 @@ class DBus:
|
|||||||
)
|
)
|
||||||
|
|
||||||
if reply.message_type == MessageType.ERROR:
|
if reply.message_type == MessageType.ERROR:
|
||||||
if reply.error_name in (
|
if reply.error_name == "org.freedesktop.DBus.Error.ServiceUnknown":
|
||||||
"org.freedesktop.DBus.Error.ServiceUnknown",
|
|
||||||
"org.freedesktop.DBus.Error.UnknownMethod",
|
|
||||||
):
|
|
||||||
raise DBusInterfaceError(reply.body[0])
|
raise DBusInterfaceError(reply.body[0])
|
||||||
|
if reply.error_name == "org.freedesktop.DBus.Error.UnknownMethod":
|
||||||
|
raise DBusInterfaceMethodError(reply.body[0])
|
||||||
if reply.error_name == "org.freedesktop.DBus.Error.Disconnected":
|
if reply.error_name == "org.freedesktop.DBus.Error.Disconnected":
|
||||||
raise DBusNotConnectedError()
|
raise DBusNotConnectedError()
|
||||||
if reply.body and len(reply.body) > 0:
|
if reply.body and len(reply.body) > 0:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user