The problem causes the disconnection of SQLs made by three parts.
Sequel doesn't auto reconnects when failed.
nio4r returns EOF instead of Exceptions when registering an I/O event repeatedly.
nio4r checks the repeat I/O registration on "Ruby Object" layer, when using IO::open(fd), there would be a new ruby object wouldn't raise error on nio4r. SQL drivers implemented from C extensions with fd as integer but not ruby object, so that the bug happens.
The problem causes the disconnection of SQLs made by three parts.
IO::open(fd)
, there would be a new ruby object wouldn't raise error on nio4r. SQL drivers implemented from C extensions with fd as integer but not ruby object, so that the bug happens.