On Jun 19, 2010, at 21:13 , Tom Lane wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> Right now, if the SR master reboots unexpectedly (say, power plug pull
>> and restart), the slave never notices. It just sits there forever
>> waiting for the next byte of data from the master to arrive (which it
>> never will).
>
> This is nonsense --- the slave's kernel *will* eventually notice that
> the TCP connection is dead, and tell walreceiver so. I don't doubt
> that the standard TCP timeout is longer than people want to wait for
> that, but claiming that it will never happen is simply wrong.
No, Robert is correct AFAIK. If you're *waiting* for data, TCP generates no traffic (expect with keepalive enabled).
Fromthe slave's kernel POV, a dead master is therefore indistinguishable from a inactive master.
Things are different from a sender's POV, though. Since sent data is ACK'ed by the receiving end, the TCP stack can
(anddoes) detect a broken connection.
best regards,
Florian Pflug