Просмотр исходного кода

Improve error message when fsync'ing files fails

Unrud 8 лет назад
Родитель
Сommit
ba5fe590c9
1 измененных файлов с 10 добавлено и 2 удалено
  1. 10 2
      radicale/storage.py

+ 10 - 2
radicale/storage.py

@@ -736,7 +736,11 @@ class Collection(BaseCollection):
             newline=newline, encoding=None if "b" in mode else self._encoding)
         try:
             yield tmp
-            self._fsync(tmp.fileno())
+            try:
+                self._fsync(tmp.fileno())
+            except OSError as e:
+                raise RuntimeError("Fsync'ing file %r failed: %s" %
+                                   (path, e)) from e
             tmp.close()
             os.replace(tmp.name, path)
         except:
@@ -952,7 +956,11 @@ class Collection(BaseCollection):
                 fs[-1].write(text)
             # sync everything at once because it's slightly faster.
             for f in fs:
-                self._fsync(f.fileno())
+                try:
+                    self._fsync(f.fileno())
+                except OSError as e:
+                    raise RuntimeError("Fsync'ing file %r failed: %s" %
+                                       (f.name, e)) from e
         self._sync_directory(self._filesystem_path)
 
     @classmethod