mirror of
https://github.com/postgres/postgres.git
synced 2025-11-24 00:23:06 +03:00
In the pg_upgrade test suite, don't write to src/test/regress.
When this suite runs installcheck, redirect file creations from src/test/regress to src/bin/pg_upgrade/tmp_check/regress. This closes a race condition in "make -j check-world". If the pg_upgrade suite wrote to a given src/test/regress/results file in parallel with the regular src/test/regress invocation writing it, a test failed spuriously. Even without parallelism, in "make -k check-world", the suite finishing second overwrote the other's regression.diffs. This revealed test "largeobject" assuming @abs_builddir@ is getcwd(), so fix that, too. Buildfarm client REL_10, released fifty-four days ago, supports saving regression.diffs from its new location. When an older client reports a pg_upgradeCheck failure, it will no longer include regression.diffs. Back-patch to 9.5, where pg_upgrade moved to src/bin. Reviewed (in earlier versions) by Andrew Dunstan. Discussion: https://postgr.es/m/20181224034411.GA3224776@rfd.leadboat.com
This commit is contained in:
@@ -99,9 +99,9 @@ exit 0;
|
||||
|
||||
########################################################################
|
||||
|
||||
sub installcheck
|
||||
sub installcheck_internal
|
||||
{
|
||||
my $schedule = shift || 'serial';
|
||||
my ($schedule, @EXTRA_REGRESS_OPTS) = @_;
|
||||
my @args = (
|
||||
"../../../$Config/pg_regress/pg_regress",
|
||||
"--dlpath=.",
|
||||
@@ -111,12 +111,20 @@ sub installcheck
|
||||
"--encoding=SQL_ASCII",
|
||||
"--no-locale");
|
||||
push(@args, $maxconn) if $maxconn;
|
||||
push(@args, @EXTRA_REGRESS_OPTS);
|
||||
system(@args);
|
||||
my $status = $? >> 8;
|
||||
exit $status if $status;
|
||||
return;
|
||||
}
|
||||
|
||||
sub installcheck
|
||||
{
|
||||
my $schedule = shift || 'serial';
|
||||
installcheck_internal($schedule);
|
||||
return;
|
||||
}
|
||||
|
||||
sub check
|
||||
{
|
||||
my $schedule = shift || 'parallel';
|
||||
@@ -547,6 +555,13 @@ sub upgradecheck
|
||||
$ENV{PATH} = "$bindir;$ENV{PATH}";
|
||||
my $data = "$tmp_root/data";
|
||||
$ENV{PGDATA} = "$data.old";
|
||||
my $outputdir = "$tmp_root/regress";
|
||||
my @EXTRA_REGRESS_OPTS = ("--outputdir=$outputdir");
|
||||
mkdir "$outputdir" || die $!;
|
||||
mkdir "$outputdir/sql" || die $!;
|
||||
mkdir "$outputdir/expected" || die $!;
|
||||
mkdir "$outputdir/testtablespace" || die $!;
|
||||
|
||||
my $logdir = "$topdir/src/bin/pg_upgrade/log";
|
||||
rmtree($logdir);
|
||||
mkdir $logdir || die $!;
|
||||
@@ -562,7 +577,7 @@ sub upgradecheck
|
||||
generate_db('', 91, 127, '');
|
||||
|
||||
print "\nSetting up data for upgrading\n\n";
|
||||
installcheck();
|
||||
installcheck_internal('serial', @EXTRA_REGRESS_OPTS);
|
||||
|
||||
# now we can chdir into the source dir
|
||||
chdir "$topdir/src/bin/pg_upgrade";
|
||||
|
||||
Reference in New Issue
Block a user