Symlink pg_replslot robustly on Windows in pg_basebackup test
This reverts commit e9f15bc9. Instead of a hacky solution that didn't work on Windows, we avoid trying to move the directory possibly across drives, and instead remove it and recreate it in the new location. Discussion: https://postgr.es/m/20240707070243.sb77kp4ubowauctz@awork3.anarazel.de Backpatch to release 14 like the previous patch.
This commit is contained in:
parent
64f34eb2e2
commit
5193ca8e15
@ -359,13 +359,13 @@ chmod_recursive("$pgdata", 0750, 0640);
|
||||
# Create a temporary directory in the system location.
|
||||
my $sys_tempdir = PostgreSQL::Test::Utils::tempdir_short;
|
||||
|
||||
# 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("$tmploc/pg_replslot", "$pgdata/pg_replslot")
|
||||
# pg_replslot should be empty. We remove it and recreate it in $sys_tempdir
|
||||
# before symlinking, in order to avoid possibly trying to move things across
|
||||
# drives.
|
||||
rmdir("$pgdata/pg_replslot")
|
||||
or BAIL_OUT "could not remove $pgdata/pg_replslot";
|
||||
mkdir("$sys_tempdir/pg_replslot"); # if this fails the symlink will fail
|
||||
dir_symlink("$sys_tempdir/pg_replslot", "$pgdata/pg_replslot")
|
||||
or BAIL_OUT "could not symlink to $pgdata/pg_replslot";
|
||||
|
||||
$node->start;
|
||||
|
Loading…
x
Reference in New Issue
Block a user