Fix tmpdir issues with commit e213de8e78
authorAndrew Dunstan <[email protected]>
Sat, 8 Jul 2023 16:34:25 +0000 (12:34 -0400)
committerAndrew Dunstan <[email protected]>
Sat, 8 Jul 2023 16:34:25 +0000 (12:34 -0400)
Commit e213de8e78 fixed a problem with path lengths to a tempdir on
Windows, but caused problems on at least some Unix systems where the
system tempdir is on a different file system. To work around this, only
used the system temdir for the destination of pg_replslot on Windows,
and otherwise restore the old behaviour.

Backpatch to relase 14 like the previous patch.

Problem exposed by a myriad of buildfarm animals.

src/bin/pg_basebackup/t/010_pg_basebackup.pl

index 5ac2ba1b17f643ee3398c27fb10891f17f12c95b..b9f5e1266b424ec487d6ce968d45f978e3d15739 100644 (file)
@@ -342,9 +342,13 @@ chmod_recursive("$pgdata", 0750, 0640);
 # Create a temporary directory in the system location.
 my $sys_tempdir = PostgreSQL::Test::Utils::tempdir_short;
 
-rename("$pgdata/pg_replslot", "$sys_tempdir/pg_replslot")
+# On Windows use the short location to avoid path length issues.
+# Elsewhere use $tempdir to avoid file system boundary issues with moving.
+my $tmploc = $windows_os ? $sys_tempdir : $tempdir;
+
+rename("$pgdata/pg_replslot", "$tmploc/pg_replslot")
   or BAIL_OUT "could not move $pgdata/pg_replslot";
-dir_symlink("$sys_tempdir/pg_replslot", "$pgdata/pg_replslot")
+dir_symlink("$tmploc/pg_replslot", "$pgdata/pg_replslot")
   or BAIL_OUT "could not symlink to $pgdata/pg_replslot";
 
 $node->start;