From b2b4bd07268958f2bf557ef2bcc254edcb8549bb Mon Sep 17 00:00:00 2001 From: Peter Silva Date: Mon, 27 Jan 2025 11:45:57 -0500 Subject: [PATCH] permanently fail when source file: missing --- sarracenia/flow/__init__.py | 6 +++++- sarracenia/transfer/file.py | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/sarracenia/flow/__init__.py b/sarracenia/flow/__init__.py index cf9b4cf14..0dbbb988f 100644 --- a/sarracenia/flow/__init__.py +++ b/sarracenia/flow/__init__.py @@ -2259,9 +2259,13 @@ def download(self, msg, options) -> int: if accelerated: self.proto[self.scheme].update_file(new_inflight_path) elif len_written < 0: - logger.error("failed to download %s" % new_file) if (self.o.inflight != None) and os.path.isfile(new_inflight_path): os.remove(new_inflight_path) + if len_written == -2: # permanent failure + logger.error("permanent failure to download %s" % new_file) + return -1 + + logger.error("temporary failure to download %s" % new_file) return 0 else: if block_length == 0: diff --git a/sarracenia/transfer/file.py b/sarracenia/transfer/file.py index 1dcc4498a..a74018a10 100755 --- a/sarracenia/transfer/file.py +++ b/sarracenia/transfer/file.py @@ -122,7 +122,7 @@ def get(self, if not os.path.exists(remote_path): logger.warning("file to read not found %s" % (remote_path)) - return -1 + return -2 src = self.local_read_open(remote_path, remote_offset) dst = self.local_write_open(local_file, local_offset) @@ -147,6 +147,11 @@ def getAccelerated(self, msg, remote_file, local_file, length=0, remote_offset=0 arg1 = arg1.replace(' ', '\\ ') arg2 = local_file + try: + isz = os.stat(arg1).st_size + except FileNotFoundError: + return -2 + cmd = self.o.accelCpCommand.replace('%s', arg1) cmd = cmd.replace('%d', arg2).split()