소스 검색

Catch race condition; if the file is already deleted, don't crash.

Chris McDonough 17 년 전
부모
커밋
f70ec89331
1개의 변경된 파일12개의 추가작업 그리고 2개의 파일을 삭제
  1. 12 2
      src/supervisor/loggers.py

+ 12 - 2
src/supervisor/loggers.py

@@ -210,11 +210,21 @@ class RotatingFileHandler(FileHandler):
                 dfn = "%s.%d" % (self.baseFilename, i + 1)
                 dfn = "%s.%d" % (self.baseFilename, i + 1)
                 if os.path.exists(sfn):
                 if os.path.exists(sfn):
                     if os.path.exists(dfn):
                     if os.path.exists(dfn):
-                        os.remove(dfn)
+                        try:
+                            os.remove(dfn)
+                        except OSError, why:
+                            # catch race condition (already deleted)
+                            if why[0] != errno.ENOENT:
+                                raise
                     os.rename(sfn, dfn)
                     os.rename(sfn, dfn)
             dfn = self.baseFilename + ".1"
             dfn = self.baseFilename + ".1"
             if os.path.exists(dfn):
             if os.path.exists(dfn):
-                os.remove(dfn)
+                try:
+                    os.remove(dfn)
+                except OSError, why:
+                    # catch race condition (already deleted)
+                    if why[0] != errno.ENOENT:
+                        raise
             os.rename(self.baseFilename, dfn)
             os.rename(self.baseFilename, dfn)
         self.stream = open(self.baseFilename, 'w')
         self.stream = open(self.baseFilename, 'w')