Re: BUG #15964: vacuumdb.c:187:10: error: use of undeclared identifier 'FD_SETSIZE'

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Alvaro Herrera <alvherre@2ndquadrant.com>
Cc: Andres Freund <andres@anarazel.de>, Tom Lane <tgl@sss.pgh.pa.us>, Dilip Kumar <dilipbalaut@gmail.com>, jungleboogie0@gmail.com, pgsql-bugs@lists.postgresql.org
Date: 2019-08-21T07:36:19Z
Lists: pgsql-bugs
On Tue, Aug 20, 2019 at 10:40:05PM -0400, Alvaro Herrera wrote:
> On 2019-Aug-21, Michael Paquier wrote:
> 
> > +			if (PQsocket(conn) >= FD_SETSIZE)
> > +			{
> > +				fprintf(stderr, "too many jobs for this platform's select()\n");
> > +				exit(1);
> > +			}
> 
> BTW why fprintf?  Since you can get into this by careless use of -j,
> ISTM that this should be a translatable string.  I'd consider
> pg_log_fatal().  Maybe something like "Argument of -j too large for this
> platform -- try %d", numslots - i.

If giving a recommendation, shouldn't that be linked only to "i"
instead?  If for example numslots = 1024, but that we get an error
after allocating 128 slots because of a lack of fds in the range, then
we would recommend 896, which would still result in an error.  I quite
like the suggestion from Andres to keep the message simple with "too
many jobs for this platform's select()".  You are indeed right about
the pg_log_fatal() part here, I have changed the patch to do that on
my local branch.
--
Michael

Commits

  1. Fix error handling of vacuumdb when running out of fds

  2. Fix error handling of vacuumdb and reindexdb when running out of fds

  3. Fix compilation failure of vacuumdb and reindexdb with OpenBSD

  4. Improve Assert output

  5. Refactor parallelization processing code in src/bin/scripts/

  6. vacuumdb: enable parallel mode