• Andres Freund's avatar
    Fix and test snapshot behavior on standby. · 7b28913b
    Andres Freund authored
    I (Andres) broke this in 623a9CA79bx, because I didn't think about the
    way snapshots are built on standbys sufficiently. Unfortunately our
    existing tests did not catch this, as they are all just querying with
    psql (therefore ending up with fresh snapshots).
    
    The fix is trivial, we just need to increment the transaction
    completion counter in ExpireTreeKnownAssignedTransactionIds(), which
    is the equivalent of ProcArrayEndTransaction() during recovery.
    
    This commit also adds a new test doing some basic testing of the
    correctness of snapshots built on standbys. To avoid the
    aforementioned issue of one-shot psql's not exercising the snapshot
    caching, the test uses a long lived psqls, similar to
    013_crash_restart.pl. It'd be good to extend the test further.
    Reported-By: default avatarIan Barwick <ian.barwick@2ndquadrant.com>
    Author: Andres Freund <andres@anarazel.de>
    Author: Ian Barwick <ian.barwick@2ndquadrant.com>
    Discussion: https://postgr.es/m/61291ffe-d611-f889-68b5-c298da9fb18f@2ndquadrant.com
    7b28913b
procarray.c 155 KB