Преглед на файлове

Merge pull request #20 from Ernest0x/empty_segment_fix

Consider segment incomplete if segment file is empty or too small
Jonas Borgström преди 11 години
родител
ревизия
57dfe372f6
променени са 1 файла, в които са добавени 8 реда и са изтрити 1 реда
  1. 8 1
      attic/repository.py

+ 8 - 1
attic/repository.py

@@ -1,5 +1,6 @@
 from configparser import RawConfigParser
 from binascii import hexlify
+import errno
 import os
 import re
 import shutil
@@ -314,7 +315,13 @@ class LoggedIO(object):
 
     def is_complete_segment(self, filename):
         with open(filename, 'rb') as fd:
-            fd.seek(-self.header_fmt.size, 2)
+            try:
+                fd.seek(-self.header_fmt.size, os.SEEK_END)
+            except Exception as e:
+                # return False if segment file is empty or too small
+                if e.errno == errno.EINVAL:
+                    return False
+                raise e
             return fd.read(self.header_fmt.size) == self.COMMIT
 
     def segment_filename(self, segment):