diff options
author | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-07-29 22:43:40 -0400 |
---|---|---|
committer | Brad Bishop <bradleyb@fuzziesquirrel.com> | 2017-07-29 22:45:29 -0400 |
commit | 062403dbf1e8ff3f7cbc20501ba4f7de812c0b17 (patch) | |
tree | 9c14357bb1612d4061acf7e77773b69bcce82fe2 | |
parent | 99b8bc81a1330a6cadabfab7738b31263d9165d5 (diff) | |
download | phosphor-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.py | 9 |
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] = [] |