From: | "Bossart, Nathan" <bossartn(at)amazon(dot)com> |
---|---|
To: | Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com>, "wangsh(dot)fnst(at)fujitsu(dot)com" <wangsh(dot)fnst(at)fujitsu(dot)com> |
Cc: | Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Bharath Rupireddy <bharath(dot)rupireddyforpostgres(at)gmail(dot)com>, "Greg Sabino Mullane" <htamfids(at)gmail(dot)com>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "pgsql-hackers(at)lists(dot)postgresql(dot)org" <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: make MaxBackends available in _PG_init |
Date: | 2022-01-07 18:09:23 |
Message-ID: | 7239E4F9-A46D-4A61-9200-8B1366D03ADB@amazon.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 1/7/22, 8:54 AM, "Fujii Masao" <masao(dot)fujii(at)oss(dot)nttdata(dot)com> wrote:
> The patch handles only MaxBackends. But isn't there other variable having the same issue?
I wouldn't be surprised to learn of other cases, but I've only
encountered this specific issue with MaxBackends. I think MaxBackends
is notable because it is more likely to be used by preloaded libraries
but is intentionally initialized after loading them. As noted in
an earlier message on this thread [0], using MaxBackends in a call to
RequestAddinShmemSpace() in _PG_init() may not reliably cause
problems, too.
> It seems overkill to remove "extern" from MaxBackends and replace MaxBackends with GetMaxBackends() in the existing PostgreSQL codes. I'm not sure how much it's actually worth doing that. Instead, isn't it enough to just add the comment like "Use GetMaxBackends() if you want to treat the lookup for uninitialized MaxBackends as an error" in the definition of MaxBackends?
While that approach would provide a way to safely retrieve the value,
I think it would do little to prevent the issue in practice. If the
size of the patch is a concern, we could also convert MaxBackends into
a macro for calling GetMaxBackends(). This could also be a nice way
to avoid breaking extensions that are using it correctly while
triggering ERRORs for extensions that are using it incorrectly. I've
attached a new version of the patch that does it this way.
Nathan
[0] https://postgr.es/m/8499D41B-628A-4CE0-9139-00D718F9D06B%40amazon.com
Attachment | Content-Type | Size |
---|---|---|
v5-0001-Disallow-external-access-to-MaxBackends.patch | application/octet-stream | 6.7 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Bossart, Nathan | 2022-01-07 18:17:29 | Re: Postgres restart in the middle of exclusive backup and the presence of backup_label file |
Previous Message | Euler Taveira | 2022-01-07 17:50:23 | Re: row filtering for logical replication |