• Andres Freund's avatar
    Properly re-initialize replication slot shared memory upon creation. · 2d7e5910
    Andres Freund authored
    Slot creation did not clear all fields upon creation. After start the
    memory is zeroed, but when a physical replication slot was created in
    the shared memory of a previously existing logical slot, catalog_xmin
    would not be cleared. That in turn would prevent vacuum from doing its
    duties.
    
    To fix initialize all the fields. To make similar future bugs less
    likely, zero all of ReplicationSlotPersistentData, and re-order the
    rest of the initialization to be in struct member order.
    
    Analysis: Andrew Gierth
    Reported-By: md@chewy.com
    Author: Michael Paquier
    Discussion: <20160705173502.1398.70934@wrigleys.postgresql.org>
    Backpatch: 9.4, where replication slots were introduced
    2d7e5910
slot.c 35.2 KB