aboutsummaryrefslogtreecommitdiff
path: root/src/backend/utils/adt/ruleutils.c
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2024-05-12 19:42:26 +0900
committerMichael Paquier <michael@paquier.xyz>2024-05-12 19:42:26 +0900
commit267d41dc4f4184525353db4069709cfb3df02ceb (patch)
tree1ca1a9849074a56b5b531d898ec78d8dd6a2fbaa /src/backend/utils/adt/ruleutils.c
parent33181b48fd0ee62bc0a9e39291d5a5c4f8540354 (diff)
downloadpostgresql-267d41dc4f4184525353db4069709cfb3df02ceb.tar.gz
postgresql-267d41dc4f4184525353db4069709cfb3df02ceb.zip
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
Diffstat (limited to 'src/backend/utils/adt/ruleutils.c')
0 files changed, 0 insertions, 0 deletions