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

Alvaro Herrera <alvherre@2ndquadrant.com>

From: Alvaro Herrera <alvherre@2ndquadrant.com>
To: Michael Paquier <michael@paquier.xyz>
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-21T13:49:54Z
Lists: pgsql-bugs
On 2019-Aug-21, Michael Paquier wrote:

> On Tue, Aug 20, 2019 at 10:40:05PM -0400, Alvaro Herrera wrote:
> > 
> > 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 was too tired last night to think this through properly ... the first
few times I wrote that were even more wrong.  "i" seems right.

> 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.

Well, it's a user-facing error, so I'd rather make it user-friendly.
It doesn't seem difficult, or unreliable enough not to try.

-- 
Álvaro Herrera                https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services



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