|
@@ -1,5 +1,6 @@
|
|
from configparser import RawConfigParser
|
|
from configparser import RawConfigParser
|
|
from binascii import hexlify
|
|
from binascii import hexlify
|
|
|
|
+import errno
|
|
import os
|
|
import os
|
|
import re
|
|
import re
|
|
import shutil
|
|
import shutil
|
|
@@ -314,7 +315,13 @@ class LoggedIO(object):
|
|
|
|
|
|
def is_complete_segment(self, filename):
|
|
def is_complete_segment(self, filename):
|
|
with open(filename, 'rb') as fd:
|
|
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
|
|
return fd.read(self.header_fmt.size) == self.COMMIT
|
|
|
|
|
|
def segment_filename(self, segment):
|
|
def segment_filename(self, segment):
|