The morning's first result is that during a failing run,
the vacuum in test_setup sees

2022-04-15 16:01:43.064 CEST [4436:75] pg_regress/test_setup LOG:  statement: 
VACUUM ANALYZE tenk1;                             
2022-04-15 16:01:43.064 CEST [4436:76] pg_regress/test_setup LOG:  vacuuming 
"regression.public.tenk1"                          
2022-04-15 16:01:43.064 CEST [4436:77] pg_regress/test_setup STATEMENT:  VACUUM 
ANALYZE tenk1;                                  
2022-04-15 16:01:43.071 CEST [4436:78] pg_regress/test_setup LOG:  finished 
vacuuming "regression.public.tenk1": index scans: 0
        pages: 0 removed, 345 remain, 345 scanned (100.00% of total)            
                                                
        tuples: 0 removed, 10000 remain, 0 are dead but not yet removable       
                                                
        removable cutoff: 724, older by 26 xids when operation ended
        index scan not needed: 0 pages from table (0.00% of total) had 0 dead 
item identifiers removed
        avg read rate: 2.189 MB/s, avg write rate: 2.189 MB/s
        buffer usage: 695 hits, 2 misses, 2 dirtied
        WAL usage: 1 records, 0 full page images, 188 bytes
        system usage: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s
2022-04-15 16:01:43.071 CEST [4436:79] pg_regress/test_setup STATEMENT:  VACUUM 
ANALYZE tenk1;

OldestXmin = 724 is too old to consider tenk1's contents as all-visible:

regression=# select distinct xmin from tenk1;
 xmin 
------
  749
(1 row)

In fact, right after initdb pg_controldata shows
Latest checkpoint's NextXID:          0:724
Latest checkpoint's oldestXID:        716

So there's no longer any doubt that something is holding back OldestXmin.
I will go put some instrumentation into the code that's computing that.

                        regards, tom lane


Reply via email to