issue #364: clarify logged error when incorrect file size detected

This commit is contained in:
David Wilson 2018-11-06 22:14:15 +00:00
parent 65d9eec353
commit 4267014ca6
1 changed files with 13 additions and 4 deletions

View File

@ -772,7 +772,7 @@ class FileService(Service):
def register(self, path):
"""
Authorize a path for access by children. Repeat calls with the same
path is harmless.
path has no effect.
:param str path:
File path.
@ -949,6 +949,7 @@ class FileService(Service):
sender=recv.to_sender(),
)
received_bytes = 0
for chunk in recv:
s = chunk.unpickle()
LOG.debug('get_file(%r): received %d bytes', path, len(s))
@ -958,11 +959,19 @@ class FileService(Service):
size=len(s),
).close()
out_fp.write(s)
received_bytes += len(s)
ok = out_fp.tell() == metadata['size']
if not ok:
ok = received_bytes == metadata['size']
if received_bytes < metadata['size']:
LOG.error('get_file(%r): receiver was closed early, controller '
'is likely shutting down.', path)
'may be shutting down, or the file was truncated '
'during transfer. Expected %d bytes, received %d.',
path, metadata['size'], received_bytes)
elif received_bytes > metadata['size']:
LOG.error('get_file(%r): the file appears to have grown '
'while transfer was in progress. Expected %d '
'bytes, received %d.',
path, metadata['size'], received_bytes)
LOG.debug('target.get_file(): fetched %d bytes of %r from %r in %dms',
metadata['size'], path, context, 1000 * (time.time() - t0))