Re: BUG #18210: libpq: PQputCopyData sometimes fails in non-blocking mode over GSSAPI encrypted connection

Lars Kanis <lars@greiz-reinsdorf.de>

From: Lars Kanis <lars@greiz-reinsdorf.de>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: pgsql-bugs@lists.postgresql.org
Date: 2023-11-22T20:21:47Z
Lists: pgsql-bugs
Am 22.11.23 um 16:11 schrieb Tom Lane:

> A repro script would be really really helpful here.


After fiddling a bit longer I was able to write a reproducer in C. It 
needs a Kerberos enabled environment and it reliably fails as described 
when running over Internet (by VPN connection). Then the output is:

   PQputCopyData text2 command failed: GSSAPI caller failed to 
retransmit all data needing to be retried

The program is here: 
https://gist.github.com/larskanis/5546a20365b0ca64e294a32b138f441e

I wasn't able to reproduce the error on a LAN connection with the above 
program. Even adding a trigger on the copy-table to slow the server down 
or adding PQflush/PQconsumeInput calls didn't work to trigger the GSSAPI 
error. In contrast the original program sometimes fails even on a LAN 
connection.

Regards,
Lars Kanis

Commits

  1. Fix timing-dependent failure in GSSAPI data transmission.

  2. Fix the initial sync tables with no columns.