On 02/06/10 21:44, Tom Lane wrote:
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.

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.

--
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

--
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to