postgres.git / summary / log / commit / refs
commit e9f15bc9db7564a29460d089c0917590bc13fffc
Author: Andrew Dunstan <andrew@dunslane.net>
Date: Sat Jul 08 16:34:25 2023 +0000
First released in: master (reverted before release), 14.9, 15.4, 16.0
Reverted by: 4b719e15beed (in 14.13), 468b2367d2fe (in 15.8), 4ac08251eb3d (in 16.4), d3e213ae1359 (in 17.0), 5193ca8e155a (in 18.0)
Fix tmpdir issues with commit e213de8e78
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 | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/src/bin/pg_basebackup/t/010_pg_basebackup.pl b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
index 5ac2ba1b17f..b9f5e1266b4 100644
--- a/src/bin/pg_basebackup/t/010_pg_basebackup.pl
+++ b/src/bin/pg_basebackup/t/010_pg_basebackup.pl
@@ -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;
[parent: e213de8e785a]