diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-07-29 21:39:52 -0400 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-07-29 21:39:52 -0400 |
commit | 99b8bc81a1330a6cadabfab7738b31263d9165d5 (patch) | |
tree | 0cbc99778d2607fcd040137e6ff118ad73ce9c62 | |
parent | cb2e1b308c51036667766a7d6b9b288399470b99 (diff) | |
download | phosphor-objmgr-99b8bc81a1330a6cadabfab7738b31263d9165d5.tar.gz phosphor-objmgr-99b8bc81a1330a6cadabfab7738b31263d9165d5.zip |
server: Improve discovery failure handling
Display the failing service and path.
Display the traceback of the original error.
Don't wait forever to claim a bus name after a failure.
Change-Id: I2bf0f0ee29d4fe838eae215590fad7d4b2ef0c7c
Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
-rw-r--r-- | obmc/mapper/server.py | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/obmc/mapper/server.py b/obmc/mapper/server.py index 07830e3..2944ddf 100644 --- a/obmc/mapper/server.py +++ b/obmc/mapper/server.py @@ -24,6 +24,8 @@ import obmc.utils.pathtree import obmc.mapper import obmc.dbuslib.bindings import obmc.dbuslib.enums +import sys +import traceback class MapperBusyException(dbus.exceptions.DBusException): @@ -293,8 +295,17 @@ class ObjectMapper(dbus.service.Object): self.IntrospectionComplete(owner) def discovery_error(self, owner, path, e): + '''Log a message and remove all traces of the service + we were attempting to introspect.''' + if owner in self.defer_signals: - raise e + sys.stderr.write( + '{} discovery failure on {}\n'.format( + self.bus_map.get(owner, owner), + path)) + traceback.print_exception(*sys.exc_info()) + del self.defer_signals[owner] + del self.bus_map[owner] def cache_get(self, path): cache_entry = self.cache.get(path, {}) |