Francesco Romani has uploaded a new change for review. Change subject: WIP: collectors: avoid to abort if wrong pid given ......................................................................
WIP: collectors: avoid to abort if wrong pid given FIXME: still WIP. May be caused by a VDSM bug. Change-Id: Ie2c7bfee5607d12c3f682ad3031c9de6e7020c83 Signed-off-by: Francesco Romani <[email protected]> --- M mom/Collectors/Collector.py M mom/Collectors/GuestQemuProc.py 2 files changed, 18 insertions(+), 4 deletions(-) git pull ssh://gerrit.ovirt.org:29418/mom refs/changes/87/39187/1 diff --git a/mom/Collectors/Collector.py b/mom/Collectors/Collector.py index c2417ab..86aea01 100644 --- a/mom/Collectors/Collector.py +++ b/mom/Collectors/Collector.py @@ -121,7 +121,7 @@ # # Collector utility functions # -def open_datafile(filename): +def open_datafile(filename, abort=True): """ Open a data file for reading. """ @@ -130,7 +130,10 @@ except IOError, (errno, strerror): logger = logging.getLogger('mom.Collector') logger.error("Cannot open %s: %s" % (filename, strerror)) - sys.exit(1) + if abort: + sys.exit(1) + else: + return None return filevar def parse_int(regex, src): diff --git a/mom/Collectors/GuestQemuProc.py b/mom/Collectors/GuestQemuProc.py index 378efb4..dc4250a 100644 --- a/mom/Collectors/GuestQemuProc.py +++ b/mom/Collectors/GuestQemuProc.py @@ -14,7 +14,10 @@ # License along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +import os.path + from mom.Collectors.Collector import * + class GuestQemuProc(Collector): """ @@ -31,16 +34,24 @@ def __init__(self, properties): self.pid = properties['pid'] self.pid_stat_file = None - if self.pid is not None: - self.pid_stat_file = open_datafile("/proc/" + str(self.pid) + "/stat") self.prev_minor_faults = None self.prev_major_faults = None + self._open_stat() + + def _open_stat(self): + if self.pid: + if self.pid_stat_file is None: + self.pid_stat_file = open_datafile( + os.path.join("/proc", str(self.pid), "stat"), + abort=False) def __del__(self): if self.pid_stat_file is not None: self.pid_stat_file.close() def collect(self, stats=None): + self._open_stat() + if self.pid_stat_file is None: return {} -- To view, visit https://gerrit.ovirt.org/39187 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie2c7bfee5607d12c3f682ad3031c9de6e7020c83 Gerrit-PatchSet: 1 Gerrit-Project: mom Gerrit-Branch: master Gerrit-Owner: Francesco Romani <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
