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

Reply via email to