pgsql: injection_points: Store runtime conditions in private area
От | Michael Paquier |
---|---|
Тема | pgsql: injection_points: Store runtime conditions in private area |
Дата | |
Msg-id | E1s66hm-000d2b-Au@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
injection_points: Store runtime conditions in private area This commit fixes a race condition between injection point run and detach, where a point detached by a backend and concurrently running in a second backend could cause the second backend to do an incorrect condition check. This issue happens because the second backend retrieves the callback information in a first step in the shmem hash table for injection points, and the condition in a second step within the callback. If the point is detached between these two steps, the condition would be removed, causing the point to run while it should not. Storing the condition in the new private_data area introduced in 33181b48fd0e ensures that the condition retrieved is consistent with its callback. This commit leads to a lot of simplifications in the module injection_points, as there is no need to handle the runtime conditions inside it anymore. Runtime conditions have no more a maximum number. Per discussion with Noah Misch. Reviewed-by: Noah Misch Discussion: https://postgr.es/m/20240509031553.47@rfd.leadboat.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/267d41dc4f4184525353db4069709cfb3df02ceb Modified Files -------------- .../modules/injection_points/injection_points.c | 173 +++++++-------------- src/tools/pgindent/typedefs.list | 1 + 2 files changed, 61 insertions(+), 113 deletions(-)
В списке pgsql-committers по дате отправления: