On Thursday, December 20, 2012 5:12 PM Heikki Linnakangas wrote: > On 20.12.2012 12:08, Amit Kapila wrote: > > On Wednesday, December 19, 2012 9:30 PM Heikki Linnakangas wrote: > >> In both checkpointer.c and bgwriter.c, we do this before entering > the > >> main loop: > >> > >> /* > >> * Use the recovery target timeline ID during recovery > >> */ > >> if (RecoveryInProgress()) > >> ThisTimeLineID = GetRecoveryTargetTLI(); > >> > >> That seems reasonable. However, since it's only done once, when the > >> process starts up, ThisTimeLineID is never updated in those > processes, > >> even though the startup process changes recovery target timeline. > >> > >> That actually seems harmless to me, and I also haven't heard of any > >> complaints of misbehavior in 9.1 or 9.2 caused by that. I'm not sure > >> why > >> we bother to set ThisTimeLineID in those processes in the first > place. > > > > This is used in RemoveOldXlogFiles(), so if during recovery when it's > not > > set and > > this function gets called, it might have some problem. > > I think it could get called from CreateRestartPoint() during > recovery. > > Hmm, right, it's used for this: > > XLogFileName(lastoff, ThisTimeLineID, segno); > > > So I think we're good on that front. But I'll add a comment there, and > use 0 explicitly instead of ThisTimeLineID, for clarity.
True, it might not have any functionality effect in RemoveOldXlogFiles(). However it can be used in PreallocXlogFiles()->XLogFileInit() as well. With Regards, Amit Kapila. -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers