• Heikki Linnakangas's avatar
    Avoid bogus "out-of-sequence timeline ID" errors in standby-mode. · 24c19e6b
    Heikki Linnakangas authored
    When startup process opens a WAL segment after replaying part of it, it
    validates the first page on the WAL segment, even though the page it's
    really interested in later in the file. As part of the validation, it checks
    that the TLI on the page header is >= the TLI it saw on the last page it
    read. If the segment contains a timeline switch, and we have already
    replayed it, and then re-open the WAL segment (because of streaming
    replication got disconnected and reconnected, for example), the TLI check
    will fail when the first page is validated. Fix that by relaxing the TLI
    check when re-opening a WAL segment.
    
    Backpatch to 9.0. Earlier versions had the same code, but before standby
    mode was introduced in 9.0, recovery never tried to re-read a segment after
    partially replaying it.
    
    Reported by Amit Kapila, while testing a new feature.
    24c19e6b
xlog.c 295 KB