Re: BackendKeyData is mandatory? - Mailing list pgsql-hackers

From Heikki Linnakangas
Subject Re: BackendKeyData is mandatory?
Date
Msg-id 4838c0a9-c8ab-4a0a-9c91-acb0b752279e@iki.fi
Whole thread Raw
In response to Re: BackendKeyData is mandatory?  (Tatsuo Ishii <ishii@postgresql.org>)
List pgsql-hackers
On 19/06/2025 13:03, Tatsuo Ishii wrote:
>> I think that's fine, if the server does not want to support query
>> cancellation.  The current protocol description certainly does not
>> support the idea that it is a hard error *not* to send BackendKeyData.
> 
> Isn't it scary if the server does not allow a query cancel?  For
> example, if the server charge you per query duration and if you
> accidentally send a long running query, the only escape exit is the
> query cancellation.

Or disconnect. Or pg_cancel_backend().

You can also easily have a stray psql session where the user has gone 
out for lunch. Or an application that doesn't have a timeout. Many other 
scenarios like that.

>> It's also worth thinking about the new protocol 3.2 longer key data.
>> A paranoid server might choose to send key data only if protocol >=3.2
>> is chosen and not if a lower, notionally less secure version is
>> chosen.
> 
> I would say the server does wrong a decision. I think even if the key
> is not long, it's still useful than nothing.

I tend to agree, but people have different priorities. It's also 
reasonable that you'd want to only support long cancellation keys. Or 
maybe you have a proxy that doesn't implement query cancellation, or 
only supports it with long keys because it embeds routing information in 
the key, or something like that.

FWIW my reading of the protocol docs is that BackendKeyData is optional. 
If I was writing a client today, I would accept it missing. But of 
course all PostgreSQL versions today do send it, and I wouldn't be 
surprised if there are clients out there that get confused if they don't 
see it.

- Heikki




pgsql-hackers by date:

Previous
From: Tatsuo Ishii
Date:
Subject: Re: BackendKeyData is mandatory?
Next
From: Amit Kapila
Date:
Subject: Re: Slot's restart_lsn may point to removed WAL segment after hard restart unexpectedly