8123: Fix crunchstat formatting error and resulting crunchstat-summary crash.
authorTom Clegg <tom@curoverse.com>
Wed, 13 Jan 2016 15:18:17 +0000 (10:18 -0500)
committerTom Clegg <tom@curoverse.com>
Wed, 13 Jan 2016 15:18:17 +0000 (10:18 -0500)
services/crunchstat/crunchstat.go
tools/crunchstat-summary/crunchstat_summary/summarizer.py
tools/crunchstat-summary/tests/crunchstat_error_messages.txt [new file with mode: 0644]
tools/crunchstat-summary/tests/test_examples.py

index e14912423db73483ef2623149e23d3ca63b3dabb..6bce3258d9857808f24e677ce5374f0f2de61a23 100644 (file)
@@ -142,7 +142,7 @@ func GetContainerNetStats(cgroup Cgroup) (io.Reader, error) {
                statsFilename := fmt.Sprintf("/proc/%s/net/dev", taskPid)
                stats, err := ioutil.ReadFile(statsFilename)
                if err != nil {
-                       statLog.Printf("read %s: %s\n", statsFilename, err)
+                       statLog.Printf("error reading %s: %s\n", statsFilename, err)
                        continue
                }
                return strings.NewReader(string(stats)), nil
@@ -409,7 +409,7 @@ func run(logger *log.Logger) error {
                        if cmd.Process != nil {
                                cmd.Process.Signal(catch)
                        }
-                       statLog.Println("caught signal:", catch)
+                       statLog.Println("notice: caught signal:", catch)
                }(sigChan)
                signal.Notify(sigChan, syscall.SIGTERM)
                signal.Notify(sigChan, syscall.SIGINT)
index ccee1e24d20e045c2f6cfd9b171167a182e57c96..f648e9b6b65aa47a24ca19a1f1d4f1a30d16a4a7 100644 (file)
@@ -93,10 +93,14 @@ class Summarizer(object):
                 self.label = m.group('job_uuid')
                 logger.debug('%s: using job uuid as label', self.label)
             if m.group('category').endswith(':'):
-                # "notice:" etc.
+                # "stderr crunchstat: notice: ..."
                 continue
             elif m.group('category') == 'error':
                 continue
+            elif m.group('category') == 'read':
+                # "stderr crunchstat: read /proc/1234/net/dev: ..."
+                # (crunchstat formatting fixed, but old logs still say this)
+                continue
             task_id = self.seq_to_uuid[int(m.group('seq'))]
             task = self.tasks[task_id]
 
diff --git a/tools/crunchstat-summary/tests/crunchstat_error_messages.txt b/tools/crunchstat-summary/tests/crunchstat_error_messages.txt
new file mode 100644 (file)
index 0000000..131e985
--- /dev/null
@@ -0,0 +1,6 @@
+2016-01-07_00:15:33 tb05z-8i9sb-khsk5rmf4xjdcbl 20819 0 stderr 
+2016-01-07_00:15:33 tb05z-8i9sb-khsk5rmf4xjdcbl 20819 0 stderr old error message:
+2016-01-07_00:15:33 tb05z-8i9sb-khsk5rmf4xjdcbl 20819 0 stderr crunchstat: read /proc/3305/net/dev: open /proc/3305/net/dev: no such file or directory
+2016-01-07_00:15:34 tb05z-8i9sb-khsk5rmf4xjdcbl 20819 0 stderr 
+2016-01-07_00:15:34 tb05z-8i9sb-khsk5rmf4xjdcbl 20819 0 stderr new error message:
+2016-01-07_00:15:34 tb05z-8i9sb-khsk5rmf4xjdcbl 20819 0 stderr crunchstat: error reading /proc/3305/net/dev: open /proc/3305/net/dev: no such file or directory
index d35e81e8cd7dbe7af67613954afd45eb904f8a56..4fe7b27070747162a2a7778af5aa47d6a7774489 100644 (file)
@@ -34,6 +34,13 @@ class SummarizeFile(ReportDiff):
             self.diff_known_report(logfile, cmd)
 
 
+class SummarizeEdgeCases(unittest.TestCase):
+    def test_error_messages(self):
+        logfile = open(os.path.join(TESTS_DIR, 'crunchstat_error_messages.txt'))
+        s = crunchstat_summary.summarizer.Summarizer(logfile)
+        s.run()
+
+
 class SummarizeJob(ReportDiff):
     fake_job_uuid = '4xphq-8i9sb-jq0ekny1xou3zoh'
     fake_log_id = 'fake-log-collection-id'