浏览代码

Don't rely on readable to figure out whether to remove/reopen log files (even if readable returns false, we still may want to reopen or remove the log file).

Chris McDonough 18 年之前
父节点
当前提交
471a5b0da0
共有 2 个文件被更改,包括 11 次插入6 次删除
  1. 2 2
      src/supervisor/process.py
  2. 9 4
      src/supervisor/tests/base.py

+ 2 - 2
src/supervisor/process.py

@@ -75,12 +75,12 @@ class Subprocess:
 
     def removelogs(self):
         for dispatcher in self.dispatchers.values():
-            if dispatcher.readable():
+            if hasattr(dispatcher, 'removelogs'):
                 dispatcher.removelogs()
 
     def reopenlogs(self):
         for dispatcher in self.dispatchers.values():
-            if dispatcher.readable():
+            if hasattr(dispatcher, 'removelogs'):
                 dispatcher.reopenlogs()
 
     def drain(self):

+ 9 - 4
src/supervisor/tests/base.py

@@ -764,6 +764,15 @@ class DummyDispatcher:
         self._writable = writable
         self._error = error
         self.input_buffer = ''
+        if readable:
+            # only readable dispatchers should have these methods
+            def reopenlogs():
+                self.logs_reopened = True
+            self.reopenlogs = reopenlogs
+            def removelogs():
+                self.logs_removed = True
+            self.removelogs = removelogs
+
     def readable(self):
         return self._readable
     def writable(self):
@@ -778,10 +787,6 @@ class DummyDispatcher:
         self.read_event_handled = True
     def handle_error(self):
         self.error_handled = True
-    def reopenlogs(self):
-        self.logs_reopened = True
-    def removelogs(self):
-        self.logs_removed = True
     def close(self):
         self.closed = True
     def flush(self):