• Tom Lane's avatar
    Make stats regression test robust in the face of parallel query. · 60690a6f
    Tom Lane authored
    Historically, the wait_for_stats() function in this test has simply checked
    for a report of an indexscan on tenk2, corresponding to the last command
    issued before we expect stats updates to appear.  However, with parallel
    query that indexscan could be done by a parallel worker that will emit
    its stats counters to the collector before the session's main backend does
    (a full second before, in fact, thanks to the "pg_sleep(1.0)" added by
    commit 957d08c8).  That leaves a sizable window in which an
    autovacuum-triggered write of the stats files would present a state in
    which the indexscan on tenk2 appears to have been done, but none of the
    write updates performed by the test have been.  This is evidently the
    explanation for intermittent failures seen by me and on buildfarm member
    mandrill.
    
    To fix, we should check separately for both the tenk2 seqscan and indexscan
    counts, since those might be reported by different processes that could be
    delayed arbitrarily on an overloaded test machine.  And we need to check
    for at least one update-related count.  If we ever allow parallel workers
    to do writes, this will get even more complicated ... but in view of all
    the other hard problems that will entail, I don't feel a need to solve this
    one today.
    
    Per research by Rahila Syed and myself; part of this patch is Rahila's.
    60690a6f
stats.out 6.67 KB