1
0
Fork 0

scheduler: do not traceback if process dissapears during enumeration

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
This commit is contained in:
Jaroslav Škarvada 2017-04-12 15:52:52 +02:00
parent 3023c9e860
commit cdefe91ee1
No known key found for this signature in database
GPG key ID: D8E1C00E076E840B

View file

@ -343,15 +343,20 @@ class SchedulerPlugin(base.Plugin):
if not threads and objs[obj].has_key("threads"):
self._set_all_obj_affinity(dict(objs[obj]["threads"].items()), affinity, True, intersect)
def _get_stat_comm(self, o):
try:
return o["stat"]["comm"]
except (OSError, IOError, KeyError):
return ""
def _set_ps_affinity(self, affinity, intersect = False):
_affinity = affinity
affinity_hex = self._cmd.cpulist2hex(_affinity)
ps = procfs.pidstats()
ps.reload_threads()
psl = filter(lambda v: re.search(self._ps_whitelist, v["stat"]["comm"]) is not None, ps.values())
psl = filter(lambda v: re.search(self._ps_whitelist, self._get_stat_comm(v)) is not None, ps.values())
if self._ps_blacklist != "":
psl = filter(lambda v: re.search(self._ps_blacklist, v["stat"]["comm"]) is None, psl)
psl = filter(lambda v: re.search(self._ps_blacklist, self._get_stat_comm(v)) is None, psl)
psd = dict(map(lambda v: (v.pid, v), psl))
self._set_all_obj_affinity(psd, affinity, False, intersect)