• Tom Lane's avatar
    Rewrite async-connection loop in libpqwalreceiver.c, once again. · b5dd50f2
    Tom Lane authored
    The original coding in commit 1e8a8500 didn't use PQconnectPoll per
    spec, and while the rewrite in e434ad39 is closer, it still doesn't
    guarantee to wait until the socket is read-ready or write-ready (as
    appropriate) before calling PQconnectPoll.  It's not clear whether
    that omission is causing the continuing failures on buildfarm member
    bowerbird; but given the lack of other explanations meeting the
    available facts, let's tighten that up and see what happens.
    
    An independent issue in the same loop was that it had a race condition
    whereby it could clear the process's latch without having serviced an
    interrupt request, causing failure to respond to a cancel while waiting
    for connection (the very problem 1e8a8500 was meant to fix).
    
    Discussion: https://postgr.es/m/7295.1489596949@sss.pgh.pa.us
    b5dd50f2
libpqwalreceiver.c 21.2 KB