Dumb mistakes in WalSndWriteData()

From: Andres Freund <andres(at)anarazel(dot)de>
To: pgsql-hackers(at)postgresql(dot)org, Craig Ringer <craig(at)2ndquadrant(dot)com>
Subject: Dumb mistakes in WalSndWriteData()
Date: 2016-10-31 08:59:40
Message-ID: 20161031085940.q6kyakvukgtpjyks@alap3.anarazel.de
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi,

I^Wsomebody appears to have made a number of dumb mistakes in
WalSndWriteData(), namely:
1) The timestamp is set way too late, after
pq_putmessage_noblock(). That'll sometimes work, sometimes not. I
have no idea how that ended up happening. It's eye-wateringly dumb.

2) We only do WalSndKeepaliveIfNecessary() if we're blocked on socket
IO. But on a long-lived connection that might be a lot of data, we
should really do that once *before* trying to send the payload in the
first place.

3) Similarly to 2) it might be worthwhile checking for interrupts
everytime, not just when blocked on network IO.

See also:
http://archives.postgresql.org/message-id/CAMsr%2BYE2dSfHVr7iEv1GSPZihitWX-PMkD9QALEGcTYa%2Bsdsgg%40mail.gmail.com

Greetings,

Andres Freund

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Gilles Darold 2016-10-31 09:19:18 Re: Patch to implement pg_current_logfile() function
Previous Message Andres Freund 2016-10-31 08:52:23 Re: Logical decoding and walsender timeouts