diff options
| author | Noah Misch | 2019-05-19 21:36:44 +0000 |
|---|---|---|
| committer | Noah Misch | 2019-05-19 21:37:33 +0000 |
| commit | e00b5f090fa04656dd1929786720f500741efbac (patch) | |
| tree | d7009850b62ad36622cf9488ef608d5b6899cadf /src/tools | |
| parent | dd01bbf00cbfd58fae6195070c2440f8f2187045 (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 a3daacacd26..9df8eef77bb 100644 --- a/src/tools/msvc/vcregress.pl +++ b/src/tools/msvc/vcregress.pl @@ -100,6 +100,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=.", @@ -108,6 +115,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; @@ -500,6 +508,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"; @@ -514,7 +530,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"; |
