Subject: Re: bug#68805: 29.2; Tramp: out-of-band copy-file fails when tramp-copy-keep-date is nil

From: Michael Albinus <[email-masked]>
Date: Thu, 01 Feb 2024 14:29:12 +0100

Sean Devlin <[email-masked]> writes:

> Hi folks,

Hi Sean,

> I think the issue is due to caching. Before copying, Tramp checks to see
> if the file exists, and it does not. After the transfer, Tramp tries to
> check again because the keep-date argument was set, tramp-copy-keep-date
> is nil or unset, and Tramp wants to set the file time manually. Instead
> of actually doing this file existence check, Tramp instead gets the
> property from cache that was set just prior to the file transfer. It
> then raises a file-missing error.

Thanks for the report and the analysis. It is correct. Could you please
check, whether this patch fixes it:

diff --git a/lisp/tramp-sh.el b/lisp/tramp-sh.el
index 1301cd63..50a33cc3 100644
--- a/lisp/tramp-sh.el
+++ b/lisp/tramp-sh.el
@@ -2521,6 +2521,10 @@ The method used must be an out-of-band method."
 	    ;; cached password).
 	    (tramp-cleanup-connection v 'keep-debug 'keep-password))))

+      ;; The cached file properties might be wrong if NEWNAME didn't
+      ;; exist.  Flush them.
+      (tramp-flush-file-properties v (tramp-file-local-name newname))
+
       ;; Handle KEEP-DATE argument.
       (when (and keep-date (not copy-keep-date))
 	(tramp-compat-set-file-times

> Thanks,
> Sean

Best regards, Michael.