diff options
| author | Noah Misch <noah@leadboat.com> | 2019-05-19 14:36:44 -0700 |
|---|---|---|
| committer | Noah Misch <noah@leadboat.com> | 2019-05-19 14:36:44 -0700 |
| commit | bd1592e8570282b1650af6b8eede0016496daecd (patch) | |
| tree | 8f335da3774f1057e67a01efb04a6372d32da0e7 /src/tools | |
| parent | 9d5c22d28f8c161aa729d841aeec936c646044d4 (diff) | |
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 forty-five 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 by Andrew Dunstan.
Discussion: https://postgr.es/m/20181224034411.GA3224776@rfd.leadboat.com
Diffstat (limited to 'src/tools')
| -rw-r--r-- | src/tools/msvc/vcregress.pl | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/tools/msvc/vcregress.pl b/src/tools/msvc/vcregress.pl index 2aa29ab008c..9fd5f232ec6 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -102,6 +102,13 @@ exit 0; sub installcheck { my $schedule = shift || 'serial'; + installcheck_internal $schedule; + return; +} + +sub installcheck_internal +{ + my ($schedule, @EXTRA_REGRESS_OPTS) = @_; my @args = ( "../../../$Config/pg_regress/pg_regress", "--dlpath=.", @@ -111,6 +118,7 @@ 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; @@ -558,6 +566,14 @@ 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"); + rmtree("$outputdir"); + mkdir "$outputdir" || die $!; + mkdir "$outputdir/sql" || die $!; + mkdir "$outputdir/expected" || die $!; + mkdir "$outputdir/testtablespace" || die $!; + my $logdir = "$topdir/src/bin/pg_upgrade/log"; (mkdir $logdir || die $!) unless -d $logdir; print "\nRunning initdb on old cluster\n\n"; @@ -572,7 +588,7 @@ sub upgradecheck generate_db('', 91, 127, ''); print "\nSetting up data for upgrading\n\n"; - installcheck('parallel'); + installcheck_internal('parallel', @EXTRA_REGRESS_OPTS); # now we can chdir into the source dir chdir "$topdir/src/bin/pg_upgrade"; |
