Re: Misleading "epoll_create1 failed: Too many open files"

Tom Lane <tgl@sss.pgh.pa.us>

From: Tom Lane <tgl@sss.pgh.pa.us>
To: Andres Freund <andres@anarazel.de>
Cc: pgsql-hackers@postgresql.org
Date: 2024-11-26T16:35:56Z
Lists: pgsql-hackers
Andres Freund <andres@anarazel.de> writes:
> I think it's rather confusing to claim that epoll_create1() failed when we
> didn't even call it.
> Why are we misattributing the failure to a system call that we didn't make?

I think the idea was that this mechanism is equivalent to an EMFILE
limit.  But if you feel a need to make a distinction, this seems fine:

>                 elog(ERROR, "AcquireExternalFD, for epoll_create1, failed: %m");

You should probably check all of 3d475515a, because I think
I applied the same idea in more than one place.

			regards, tom lane



Commits

  1. Distinguish between AcquireExternalFD and epoll_create1 / kqueue failing

  2. Account explicitly for long-lived FDs that are allocated outside fd.c.