Special exception for EMFILE / ENFILE when using sockets.

David M. Lloyd david.lloyd at redhat.com
Mon Dec 5 17:48:55 UTC 2016


On 12/05/2016 06:29 AM, Norman Maurer wrote:
> Hi all,
>
> I wonder if it would be possible to add a new public exception time for the situation of an SocketChannel.accept(…) or SocketChannel.open(…)  (and the same for ServerSocket / Socket) failing because of too many open files.
> The reason is because especially when acting as a server such an exception may be something you can easily recover from. At there is basically no way to detect if this was the cause of an IOException or not.
>
> On unix / linux this are the errno values:
>
> [EMFILE]           The per-process descriptor table is full.
> [ENFILE]           The system file table is full.
>
> For netty we would love to be able to know if this was the case of the problem and if so just stop accepting for a period of time to help the system to recover.
>
> What others think about this ?

I like the idea, but maybe it should be a general IOException since this 
same error can happen on file open, selector creation (sometimes), pipe 
creation, etc.

-- 
- DML


More information about the net-dev mailing list