Re: "caught_up" status in walsender
Tom Lane <tgl@sss.pgh.pa.us>
From: Tom Lane <tgl@sss.pgh.pa.us>
To: Heikki Linnakangas <heikki.linnakangas@enterprisedb.com>
Cc: Fujii Masao <masao.fujii@gmail.com>, pgsql-hackers@postgreSQL.org
Date: 2010-06-02T19:21:36Z
Lists: pgsql-hackers
Heikki Linnakangas <heikki.linnakangas@enterprisedb.com> writes: > On 02/06/10 21:44, Tom Lane wrote: >> 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. > That's intentional. It could take some time for the WAL to be sent, if > the network is busy, so by the time XLogSend returns you might well not > be caught up anymore. It may have been intentional, but it's still wrong. If you were able to pull all of WAL into the record-to-be-sent, you should sleep afterwards, not send an extra record containing a few more bytes. regards, tom lane