diff --git a/ATxService/AutoTx.cs b/ATxService/AutoTx.cs index b85f3c62e3a8b80ee073481f8c48e6f57efa5748..1bfd61b1297ad80aaad8e337456a9b949f00665d 100644 --- a/ATxService/AutoTx.cs +++ b/ATxService/AutoTx.cs @@ -689,6 +689,33 @@ namespace ATxService } if (_status.CurrentTransferSrc.Length > 0) { + if (_transferredFiles.Count == 0) { + var msg = "FinalizeTransfers: CurrentTransferSrc is set to " + + $"[{_status.CurrentTransferSrc}], but the list of transferred " + + "files is empty!\nThis indicates something went wrong during the " + + "transfer, maybe a local permission problem?"; + Log.Warn(msg); + SendAdminEmail(msg, "Error in FinalizeTransfers()"); + try { + var preserve = _status.CurrentTransferSrc + .Replace(_config.ManagedPath, "") + .Replace(@"\", "___"); + preserve = Path.Combine(_config.ErrorPath, preserve); + var stale = new DirectoryInfo(_status.CurrentTransferSrc); + stale.MoveTo(preserve); + Log.Warn("Moved stale transfer source to [{0}]!", preserve); + } + catch (Exception ex) { + Log.Error("Preserving the stale transfer source [{0}] in [{1}] failed: {2}", + _status.CurrentTransferSrc, _config.ErrorPath, ex.Message); + } + + // reset current transfer variables: + _status.CurrentTransferSrc = ""; + _status.CurrentTransferSize = 0; + + return; + } Log.Debug("Finalizing transfer, moving local data to grace location..."); MoveToGraceLocation(); SendTransferCompletedMail();