Re: Allow non-superuser to cancel superuser tasks.
Kirill Reshke <reshkekirill@gmail.com>
From: Kirill Reshke <reshkekirill@gmail.com>
To: Nathan Bossart <nathandbossart@gmail.com>
Cc: Andres Freund <andres@anarazel.de>,
Alexander Kukushkin <cyberdemn@gmail.com>, "Andrey M. Borodin" <x4mmm@yandex-team.ru>,
Michael Paquier <michael@paquier.xyz>, "Leung, Anthony" <antholeu@amazon.com>,
pgsql-hackers <pgsql-hackers@postgresql.org>
Date: 2024-11-26T17:11:02Z
Lists: pgsql-hackers
On Sat, 23 Nov 2024, 07:44 Nathan Bossart, <nathandbossart@gmail.com> 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? > > > We don't need the pgstat_begin_read_activity() protocol when just > accessing a > > single 4 byte value - we assume in lots of places that can be read in a > > non-tearable way. > > > >> + if > (pgstat_read_activity_complete(before_changecount, > >> + > after_changecount)) > >> + break; > >> + > >> + CHECK_FOR_INTERRUPTS(); > >> + } > >> + > >> + if (found) > >> + return beentry->st_backendType; > > > > But if we were to follow it, we'd certainly need to use it here too. > > I see. > > -- > nathan > Hi! LGTM >
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