pgsql: Fix snapshot reference leak if lo_export fails.
От | Heikki Linnakangas |
---|---|
Тема | pgsql: Fix snapshot reference leak if lo_export fails. |
Дата | |
Msg-id | E1miCof-0006c9-Fz@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Fix snapshot reference leak if lo_export fails. If lo_export() fails to open the target file or to write to it, it leaks the created LargeObjectDesc and its snapshot in the top-transaction context and resource owner. That's pretty harmless, it's a small leak after all, but it gives the user a "Snapshot reference leak" warning. Fix by using a short-lived memory context and no resource owner for transient LargeObjectDescs that are opened and closed within one function call. The leak is easiest to reproduce with lo_export() on a directory that doesn't exist, but in principle the other lo_* functions could also fail. Backpatch to all supported versions. Reported-by: Andrew B Reviewed-by: Alvaro Herrera Discussion: https://www.postgresql.org/message-id/32bf767a-2d65-71c4-f170-122f416bab7e@iki.fi Branch ------ REL9_6_STABLE Details ------- https://git.postgresql.org/pg/commitdiff/8f32afee0179b2050bb1f84ba16fd1d4fba9a3b8 Modified Files -------------- src/backend/libpq/be-fsstubs.c | 147 ++++++++++++++--------------- src/backend/storage/large_object/inv_api.c | 36 ++++--- src/test/regress/input/largeobject.source | 11 +++ src/test/regress/output/largeobject.source | 11 +++ 4 files changed, 109 insertions(+), 96 deletions(-)
В списке pgsql-committers по дате отправления: