Re: Test to dump and restore objects left behind by regression
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
From: Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>
To: Alvaro Herrera <alvherre@alvh.no-ip.org>
Cc: vignesh C <vignesh21@gmail.com>, Michael Paquier <michael@paquier.xyz>, Daniel Gustafsson <daniel@yesql.se>, Tom Lane <tgl@sss.pgh.pa.us>, Peter Eisentraut <peter@eisentraut.org>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2025-03-21T13:09:11Z
Lists: pgsql-hackers
On Thu, Mar 20, 2025 at 10:09 PM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > On 2025-Mar-20, vignesh C wrote: > > > Will it help the execution time if we use --jobs in case of pg_dump > > and pg_restore wherever supported: > > As I said in another thread, I think we should enable this test to run > without requiring any PG_TEST_EXTRA, because otherwise the only way to > know about problems is to commit a patch and wait for buildfarm to run > it. Furthermore, I think running all 4 dump format modes is a waste of > time; there isn't any extra coverage by running this test in additional > formats. > > Putting those two thoughts together with yours about running with -j, > I propose that what we should do is make this test use -Fc with no > compression (to avoid wasting CPU on that) and use a lowish -j value for > both pg_dump and pg_restore, probably 2, or 3 at most. (Not more, > because this is likely to run in parallel with other tests anyway.) -Fc and -j are not allowed. -j is only allowed for directory format. $ pg_dump -Fc -j2 pg_dump: error: parallel backup only supported by the directory format Using just directory format, on my laptop with dev build (because that's what most developers will use when running the tests) $ meson test -C $BuildDir pg_upgrade/002_pg_upgrade | grep 002_pg_upgrade without dump/restore test 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 33.51s 19 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 34.22s 19 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 34.64s 19 subtests passed without -j, extra ~9 seconds 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 43.33s 28 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 43.25s 28 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 43.10s 28 subtests passed with -j2, extra 7.5 seconds 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 42.77s 28 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 41.67s 28 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 41.88s 28 subtests passed with -j3, extra 7 seconds 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 40.77s 28 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 41.05s 28 subtests passed 1/1 postgresql:pg_upgrade / pg_upgrade/002_pg_upgrade OK 41.28s 28 subtests passed Between -j2 and -j3 there's not much difference so we could use -j2. But it still takes 7.5 extra seconds which almost 20% extra time. Do you think that will be acceptable? I saw somewhere Andres mentioning that he runs this test quite frequently. Please note that I would very much like this test to be run by default, but Tom Lane has expressed a concern about adding even that much time [1] to run the test and mentioned that he would like the test to be opt-in. When I started writing the test one year before, people raised concerns about how useful the test would be. Within a year it has shown 4 bugs. I have similar feeling about the formats - it's doubtful now but will prove useful soon especially with the work happening on dump formats in nearby threads. If we run the test by default, we could run directory with -j by default and leave other formats as opt-in OR just forget those formats for now. But If we are going to make it opt-in, testing all formats gives the extra coverage. About the format coverage, consensus so far is me and Daniel are for including all formats when running test as opt-in. Alvaro and Vignesh are for just one format. We need a tie-breaker or someone amongst us needs to change their vote :D. -- Best Wishes, Ashutosh Bapat
Commits
-
Hide expensive pg_upgrade test behind PG_TEST_EXTRA
- d185161e4739 18.0 landed
- 37fc1803cc12 19 (unreleased) landed
-
Set log_statement=none in t/002_pg_upgrade.pl
- 64fba9c61787 18.0 landed
-
002_pg_upgrade.pl: Move pg_dump test code for better stability
- 8806e4e8deb1 18.0 landed
-
002_pg_upgrade.pl: rename some variables for clarity
- abe56227b2e2 18.0 landed
-
Verify roundtrip dump/restore of regression database
- 172259afb563 18.0 landed
-
Refactor TAP test code for file comparisons into new routine in Utils.pm
- 169208092f5c 18.0 landed
-
Virtual generated columns
- 83ea6c54025b 18.0 cited
-
Put generated_stored test objects in a schema
- 894be11adfa6 18.0 cited
-
Introduce "builtin" collation provider.
- 2d819a08a1cb 17.0 cited
-
Revert "Improve compression and storage support with inheritance"
- 74563f6b9021 17.0 cited