pgsql: Avoid palloc in critical section in GiST WAL-logging.
От | Heikki Linnakangas |
---|---|
Тема | pgsql: Avoid palloc in critical section in GiST WAL-logging. |
Дата | |
Msg-id | E1WVhCZ-0003SW-KV@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Avoid palloc in critical section in GiST WAL-logging. Memory allocation can fail if you run out of memory, and inside a critical section that will lead to a PANIC. Use conservatively-sized arrays in stack instead. There was previously no explicit limit on the number of pages a GiST split can produce, it was only limited by the number of LWLocks that can be held simultaneously (100 at the moment). This patch adds an explicit limit of 75 pages. That should be plenty, a typical split shouldn't produce more than 2-3 page halves. The bug has been there forever, but only backpatch down to 9.1. The code was changed significantly in 9.1, and it doesn't seem worth the risk or trouble to adapt this for 9.0 and 8.4. Branch ------ REL9_2_STABLE Details ------- http://git.postgresql.org/pg/commitdiff/003a31a7c9fabed9b247ccd4c4123da017fddf58 Modified Files -------------- src/backend/access/gist/README | 2 +- src/backend/access/gist/gist.c | 14 ++++++++++++++ src/backend/access/gist/gistxlog.c | 16 ++++++++-------- src/include/access/gist_private.h | 15 +++++++++++++++ 4 files changed, 38 insertions(+), 9 deletions(-)
В списке pgsql-committers по дате отправления: