Thread

  1. Re: BUG #18944: Assertion Failure in psql with idle_session_timeout Set

    Anthonin Bonnefoy <anthonin.bonnefoy@datadoghq.com> — 2025-06-03T09:56:51Z

    On Tue, Jun 3, 2025 at 1:31 AM Michael Paquier <michael@paquier.xyz> wrote:
    > Hmm.  This stuff stands as it is in the backend COPY code since
    > c01641f8aed0 from 2003, so there's not much we can do in the backend
    > or libpq.  Adding some specific logic in psql to avoid piped_syncs
    > seems like the correct move seen from here.
    >
    > Most of that should be close to ExecQueryAndProcessResults(), don't
    > you think?  That's where we count the number of piped syncs.
    
    I've tried to adjust the piped syncs counter, but that's not enough.
    libpq's internal command queue still has the Syncs queued and will
    stay in a busy pipeline state if the backend doesn't send the expected
    ReadyForQuery. It could be possible to remove them from the queue with
    pqCommandQueueAdvance, but that would require psql to include
    libpq-int.h which is probably something we want to avoid.
    
    It doesn't seem like this case can be handled gracefully. The provided
    patch just aborts the connection from the frontend when excessive
    piped syncs are detected to avoid staying stuck in this inconsistent
    protocol state.