Re: don't allow walsender to consume superuser_reserved_connection slots, or during shutdown

Fujii Masao <masao.fujii@gmail.com>

From: Fujii Masao <masao.fujii@gmail.com>
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Robert Haas <robertmhaas@gmail.com>, PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2010-04-22T02:27:26Z
Lists: pgsql-hackers
On Thu, Apr 22, 2010 at 11:01 AM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Robert Haas <robertmhaas@gmail.com> writes:
>> Here's the fine patch.  The actual code changes are simple and seem to
>> work as expected, but I struggled a bit with the phrasing of the
>> messages.  Feel free to suggest improvements.
>
> Stick with the original wording?  I don't really see a need to change it.

How about?:

if ((!am_superuser || am_walsender) &&
	ReservedBackends > 0 &&
	!HaveNFreeProcs(ReservedBackends))
{
	if (am_walsender)
		ereport(FATAL,
			(errcode(ERRCODE_TOO_MANY_CONNECTIONS),
			 errmsg("remaining connection slots are reserved for
non-replication superuser connections")));
	else
		ereport(FATAL,
			(errcode(ERRCODE_TOO_MANY_CONNECTIONS),
			 errmsg("connection limit exceeded for non-superusers")));
}

Regards,

-- 
Fujii Masao
NIPPON TELEGRAPH AND TELEPHONE CORPORATION
NTT Open Source Software Center