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

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: lars@greiz-reinsdorf.de
Cc: pgsql-bugs@lists.postgresql.org
Date: 2023-11-22T15:11:26Z
Lists: pgsql-bugs
PG Bug reporting form <noreply@postgresql.org> writes:
> The error "GSSAPI caller failed to retransmit all data needing to be
> retried" is raised here:
> https://github.com/postgres/postgres/blob/eeb0ebad79d9350305d9e111fbac76e20fa4b2fe/src/interfaces/libpq/fe-secure-gssapi.c#L110
> It happens only in non-blocking mode over GSSAPI encrypted connections. It
> isn't reliable and depends on the network timing. When sending a 7MB file in
> alternating pieces of 27KB and 180 Byte per PQputCopyData() there is a 50%
> chance to get the failure over the local network. It doesn't happen if TLS
> is used instead.

Hmm.

> The issue is fixed if I change libpq at either pqPutMsgEnd() or at
> pg_GSS_write().

Both of those seem like pretty obviously wrong "fixes".  However,
I'm not quite sure I see the problem clearly enough to propose
a fix I'd believe in.

> Unfortunately so far I'm unable to provide a repro script. Maybe the above
> information is enough to understand the problem.

A repro script would be really really helpful here.

			regards, tom lane



Commits

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

  2. Fix the initial sync tables with no columns.