Hi, For fairly obvious reasons I like to run check-world in parallel [1]. In the last few months I've occasionally seen failures during that that I cannot recall seeing before.
--- /home/andres/build/postgres/13-assert/vpath/src/test/regress/expected/tablespace.out 2020-12-07 18:41:23.079235588 -0800 +++ /home/andres/build/postgres/13-assert/vpath/src/test/regress/results/tablespace.out 2020-12-07 18:42:01.892632468 -0800 @@ -209,496 +209,344 @@ ERROR: cannot specify default tablespace for partitioned relations CREATE TABLE testschema.dflt (a int PRIMARY KEY USING INDEX TABLESPACE regress_tblspace) PARTITION BY LIST (a); ERROR: cannot specify default tablespace for partitioned relations -- but these work: CREATE TABLE testschema.dflt (a int PRIMARY KEY USING INDEX TABLESPACE regress_tblspace) PARTITION BY LIST (a) TABLESPACE regress_tblspace; SET default_tablespace TO ''; CREATE TABLE testschema.dflt2 (a int PRIMARY KEY) PARTITION BY LIST (a); DROP TABLE testschema.dflt, testschema.dflt2; -- check that default_tablespace doesn't affect ALTER TABLE index rebuilds CREATE TABLE testschema.test_default_tab(id bigint) TABLESPACE regress_tblspace; +ERROR: could not create directory "pg_tblspc/16387/PG_13_202007201/16384": No such file or directory INSERT INTO testschema.test_default_tab VALUES (1); (many failures follow) I suspect this is related to the pg_upgrade test and the main regression test running at the same time. We have the following in src/test/regress/GNUMakefile # Tablespace setup .PHONY: tablespace-setup tablespace-setup: echo $(realpath ./testtablespace) >> /tmp/tablespace.log rm -rf ./testtablespace mkdir ./testtablespace ... which pg_upgrade triggers. Even though it, as far as I can tell, never actually ends up putting any data in it: # Send installcheck outputs to a private directory. This avoids conflict when # check-world runs pg_upgrade check concurrently with src/test/regress check. # To retrieve interesting files after a run, use pattern tmp_check/*/*.diffs. outputdir="$temp_root/regress" EXTRA_REGRESS_OPTS="$EXTRA_REGRESS_OPTS --outputdir=$outputdir" export EXTRA_REGRESS_OPTS mkdir "$outputdir" mkdir "$outputdir"/testtablespace It's not clear to me why we have this logic in the makefile at all? Somebody taught pg_regress to do so, but only on windows... See convert_sourcefiles_in(). The other thing that confuses me is why I started getting that error in *multiple* branches recently, even though I have used the parallel check-world for ages. Greetings, Andres Freund [1]: make -Otarget -j20 -s check-world && echo success || echo failed