summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2017-07-29 21:39:52 -0400
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2017-07-29 21:39:52 -0400
commit99b8bc81a1330a6cadabfab7738b31263d9165d5 (patch)
tree0cbc99778d2607fcd040137e6ff118ad73ce9c62
parentcb2e1b308c51036667766a7d6b9b288399470b99 (diff)
downloadphosphor-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.py13
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, {})
OpenPOWER on IntegriCloud