On 2012-12-20 14:45:05 +0200, Heikki Linnakangas wrote:
> On 17.12.2012 15:05, Thom Brown wrote:
> >I just set up 120 chained standbys, and for some reason I'm seeing these
> >errors:
> >
> >LOG: replication terminated by primary server
> >DETAIL: End of WAL reached on timeline 1
> >LOG: record with zero length at 0/301EC10
> >LOG: fetching timeline history file for timeline 2 from primary server
> >LOG: restarted WAL streaming at 0/3000000 on timeline 1
> >LOG: replication terminated by primary server
> >DETAIL: End of WAL reached on timeline 1
> >LOG: new target timeline is 2
> >LOG: restarted WAL streaming at 0/3000000 on timeline 2
> >LOG: replication terminated by primary server
> >DETAIL: End of WAL reached on timeline 2
> >FATAL: error reading result of streaming command: ERROR: requested WAL
> >segment 000000020000000000000003 has already been removed
> >
> >ERROR: requested WAL segment 000000020000000000000003 has already been
> >removed
> >LOG: started streaming WAL from primary at 0/3000000 on timeline 2
> >ERROR: requested WAL segment 000000020000000000000003 has already been
> >removed
>
> I just committed a patch that should make the "requested WAL segment
> 000000020000000000000003 has already been removed" errors go away. The trick
> was for walsenders to not switch to the new timeline until at least one
> record has been replayed on it. That closes the window where the walsender
> already considers the new timeline to be the latest, but the WAL file has
> not been created yet.
I vote for introducing InvalidTimeLineID soon... 0 as a invalid
TimeLineID seems to spread and is annoying to grep for.
Greetings,
Andres Freund
--Andres Freund http://www.2ndQuadrant.com/PostgreSQL Development, 24x7 Support, Training &
Services