Re: Allow non-superuser to cancel superuser tasks.
Andres Freund <andres@anarazel.de>
From: Andres Freund <andres@anarazel.de>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Alexander Kukushkin <cyberdemn@gmail.com>, "Andrey M. Borodin" <x4mmm@yandex-team.ru>,
Michael Paquier <michael@paquier.xyz>, Kirill Reshke <reshkekirill@gmail.com>, "Leung,
Anthony" <antholeu@amazon.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2024-11-26T17:27:33Z
Lists: pgsql-hackers
Hi, On 2024-11-22 20:44:34 -0600, Nathan Bossart wrote: > On Fri, Nov 22, 2024 at 06:13:16PM -0500, Andres Freund wrote: > >> - if (procStatus && procStatus->st_backendType == B_AUTOVAC_WORKER) > >> + if (pgstat_get_backend_type(pid) == B_AUTOVAC_WORKER) > > > > Because we already mapped the pid to a ProcNumber, it'd be cheaper to access > > the backend status via procnumber. > > D'oh, I missed that ProcNumber could be used as an index for the > BackendStatusArray. Is the attached more like what you are imagining? Yes. I'd probably add two function header comments: 1) explicit caution that this is fetching information not from the snapshot but "live" data 2) the return value might be out of date, that the procnumber needs to be valid and that the caller is responsible for permission checking I'd also add a comment do the code saying that it's fine to bypass the changecount mechanism, because we're reading a single 4 byte integer. Greetings, Andres Freund
Commits
-
Look up backend type in pg_signal_backend() more cheaply.
- 61171a632d10 18.0 landed
-
Add tap test for pg_signal_autovacuum role
- d2b74882cab8 18.0 landed
-
Introduce pg_signal_autovacuum_worker.
- ccd38024bc3c 18.0 landed
-
Add a slot synchronization function.
- ddd5f4f54a02 17.0 cited
-
Ban role pg_signal_backend from more superuser backend types.
- 3a9b18b30953 17.0 cited