pgsql: Rework memory contexts in charge of HBA/ident tokenization

From: Michael Paquier <michael(at)paquier(dot)xyz>
To: pgsql-committers(at)lists(dot)postgresql(dot)org
Subject: pgsql: Rework memory contexts in charge of HBA/ident tokenization
Date: 2022-11-23 23:23:11
Message-ID: E1oxz5C-000YTG-EI@gemulon.postgresql.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-committers

Rework memory contexts in charge of HBA/ident tokenization

The list of TokenizedAuthLines generated at parsing for the HBA and
ident files is now stored in a static context called tokenize_context,
where only all the parsed tokens are stored. This context is created
when opening the first authentication file of a HBA/ident set (hba_file
or ident_file), and is cleaned up once we are done all the work around
it through a new routine called free_auth_file(). One call of
open_auth_file() should have one matching call of free_auth_file(), the
creation and deletion of the tokenization context is controlled by the
recursion depth of the tokenization.

Rather than having tokenize_auth_file() return a memory context that
includes all the records, the tokenization logic now creates and deletes
one memory context each time this function is called. This will
simplify recursive calls to this routine for the upcoming inclusion
record logic.

While on it, rename tokenize_inc_file() to tokenize_expand_file() as
this would conflict with the upcoming patch that will add inclusion
records for HBA/ident files. An '@' file has its tokens added to an
existing list.

Reloading HBA/indent configuration in a tight loop shows no leaks, as of
one type of test done (with and without -DEXEC_BACKEND).

Author: Michael Paquier
Reviewed-by: Julien Rouhaud
Discussion: https://postgr.es/m/Y324HvGKiWxW2yxe@paquier.xyz

Branch
------
master

Details
-------
https://git.postgresql.org/pg/commitdiff/efc981627a723d91e86865fb363d793282e473d1

Modified Files
--------------
src/backend/libpq/hba.c | 158 +++++++++++++++++++++++++++++----------
src/backend/utils/adt/hbafuncs.c | 12 +--
src/include/libpq/hba.h | 5 +-
3 files changed, 124 insertions(+), 51 deletions(-)

Browse pgsql-committers by date

  From Date Subject
Next Message Michael Paquier 2022-11-24 00:40:45 Re: pgsql: Expand AclMode to 64 bits
Previous Message Alexander Korotkov 2022-11-23 22:02:02 pgsql: Support for custom slots in the custom executor nodes