summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrad Bishop <bradleyb@fuzziesquirrel.com>2017-07-29 22:43:40 -0400
committerBrad Bishop <bradleyb@fuzziesquirrel.com>2017-07-29 22:45:29 -0400
commit062403dbf1e8ff3f7cbc20501ba4f7de812c0b17 (patch)
tree9c14357bb1612d4061acf7e77773b69bcce82fe2
parent99b8bc81a1330a6cadabfab7738b31263d9165d5 (diff)
downloadphosphor-objmgr-062403dbf1e8ff3f7cbc20501ba4f7de812c0b17.tar.gz
phosphor-objmgr-062403dbf1e8ff3f7cbc20501ba4f7de812c0b17.zip
server: Handle short lived bus name owners
A short lived process may claim a name and then exit before the mapper calls GetNameOwner on it. Add code to tolerate this. Change-Id: I2cf81713da4c83605c636d09087a18c651187aec Signed-off-by: Brad Bishop <bradleyb@fuzziesquirrel.com>
-rw-r--r--obmc/mapper/server.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/obmc/mapper/server.py b/obmc/mapper/server.py
index 2944ddf..cf05866 100644
--- a/obmc/mapper/server.py
+++ b/obmc/mapper/server.py
@@ -487,12 +487,17 @@ class ObjectMapper(dbus.service.Object):
return match
def discover(self, owners=[]):
+ def get_owner(name):
+ try:
+ return (name, self.bus.get_name_owner(name))
+ except:
+ traceback.print_exception(*sys.exc_info())
+
if not owners:
owned_names = filter(
lambda x: not obmc.dbuslib.bindings.is_unique(x),
self.bus.list_names())
- owners = [self.bus.get_name_owner(x) for x in owned_names]
- owners = zip(owned_names, owners)
+ owners = filter(bool, [get_owner(name) for name in owned_names])
for owned_name, o in owners:
self.bus_map[o] = owned_name
self.defer_signals[o] = []
OpenPOWER on IntegriCloud