"caught_up" status in walsender

Поиск
Список
Период
Сортировка
От Tom Lane
Тема "caught_up" status in walsender
Дата
Msg-id 9893.1275504283@sss.pgh.pa.us
обсуждение исходный текст
Ответ на Re: Keepalive for max_standby_delay  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: "caught_up" status in walsender  (Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>)
Re: "caught_up" status in walsender  (Dimitri Fontaine <dfontaine@hi-media.com>)
Re: "caught_up" status in walsender  (Robert Haas <robertmhaas@gmail.com>)
Re: "caught_up" status in walsender  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
I wrote:
> I'm still inclined to apply the part of Simon's patch that adds a
> transmit timestamp to each SR send chunk.  That would actually be
> completely unused by the slave given my proposal above, but I think that
> it is an important step to take to future-proof the SR protocol against
> possible changes in the slave-side timing logic.

On further contemplation, it seems like the protocol needs another field
besides that: each record should also carry a boolean indicating whether
walsender.c thinks it is currently "caught up", ie the record carries
all WAL data up to the current end of WAL.  If the sender is not caught
up, then the receiver should apply max_archive_delay not
max_streaming_delay.  In this way, WAL chunks that are a little bit
behind current time will be treated the same way whether they come
across the SR link or via the archive.

In conjunction with that, I think there's a logic bug in XLogSend;
it ought to be changed like so:
/* if we went beyond SendRqstPtr, back off */if (XLByteLT(SendRqstPtr, endptr))
+    {    endptr = SendRqstPtr;
+        *caughtup = true;
+    }

In the current coding, the effect of not setting *caughtup here is just
that we uselessly call XLogSend an extra time for each transmission
(because the main loop won't ever delay immediately after a
transmission).  But without this, we'd never send caughtup = true
to the slave.
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Keepalive for max_standby_delay
Следующее
От: Alvaro Herrera
Дата:
Сообщение: Re: Idea for getting rid of VACUUM FREEZE on cold pages