On Thu, Dec 10, 2015 at 6:46 AM, Haribabu Kommi <kommi.harib...@gmail.com> wrote: > > On Thu, Dec 10, 2015 at 4:22 AM, Alvaro Herrera > <alvhe...@2ndquadrant.com> wrote: > > Haribabu Kommi wrote: > > > >> Reverting the context release patch is already provided in the first > >> mail of this > >> thread [1]. Forgot to mention about the same in further mails. > >> > >> Here I attached the same patch. This patch needs to be applied first before > >> pg_hba_lookup patch. I tested it in windows version also. > > > > So if you change the file and reload repeatedly, we leak all the memory > > allocated for HBA lines in TopMemoryContext? This doesn't sound great. > > Perhaps we need a dedicated context which can be reset at will so that > > it can be refilled with the right info when we reload the file. > > No. There is no leaks associated with pg_hba.conf parsing. we already have > a memory context called "hba parser context" allocated from Postmaster > context. The "revert_hba_context_release_in_backend" patch changes it to > TopMemoryContext. The memory required for parsing and storing parsed > hba lines is obtained from this context. >
tokenize_file() is called before creation of hba parser context, so below change would be problem. *** 386,392 **** tokenize_file(const char *filename, FILE *file, MemoryContext linecxt; MemoryContext oldcxt; ! linecxt = AllocSetContextCreate(CurrentMemoryContext, "tokenize file cxt", ALLOCSET_DEFAULT_MINSIZE, ALLOCSET_DEFAULT_INITSIZE, --- 386,392 ---- MemoryContext linecxt; MemoryContext oldcxt; ! linecxt = AllocSetContextCreate(TopMemoryContext, "tokenize file cxt", ALLOCSET_DEFAULT_MINSIZE, ALLOCSET_DEFAULT_INITSIZE, How about creating "hba parser context" and "ident parser context" at the beginning of their respective functions and don't change anything in tokenize_file()? With Regards, Amit Kapila. EnterpriseDB: http://www.enterprisedb.com