• Heikki Linnakangas's avatar
    Don't archive bogus recycled or preallocated files after timeline switch. · b2a5545b
    Heikki Linnakangas authored
    After a timeline switch, we would leave behind recycled WAL segments that
    are in the future, but on the old timeline. After promotion, and after they
    become old enough to be recycled again, we would notice that they don't have
    a .ready or .done file, create a .ready file for them, and archive them.
    That's bogus, because the files contain garbage, recycled from an older
    timeline (or prealloced as zeros). We shouldn't archive such files.
    
    This could happen when we're following a timeline switch during replay, or
    when we switch to new timeline at end-of-recovery.
    
    To fix, whenever we switch to a new timeline, scan the data directory for
    WAL segments on the old timeline, but with a higher segment number, and
    remove them. Those don't belong to our timeline history, and are most
    likely bogus recycled or preallocated files. They could also be valid files
    that we streamed from the primary ahead of time, but in any case, they're
    not needed to recover to the new timeline.
    b2a5545b
xlogarchive.c 20.8 KB