Open prognostikos opened 2 months ago
This is a solution, or maybe better characterized as a work-around, for #716
Before this change, in a Rails 7.0.8.4
app using ruby 3.3.4 (2024-07-09 revision be1089c8ec) [arm64-darwin23]
I could trigger the error as follows:
spring server
in one terminalrails c
in a second terminalrails db:migrate:status
in a third terminal - it succeedstouch config/initializers/content_security_policy.rb
in the third terminalrails db:migrate:status
in the third terminal - it hangs with no output and the console running in the second terminal is dead.lib/spring/application_manager.rb:64:in `send_io': Invalid argument - sendmsg(2) (Errno::EINVAL)
I have put the spring server logs for both the error and fixed versions here: https://gist.github.com/prognostikos/0d07e599516e51ddc355134e13c94a95
I would love to get this into a new Spring release, what needs to be done for that to happen? I can see there are some issues with CI, and running the acceptance tests locally with RAILS_VERSION="edge" also seems to hang so there is probably a bit of work to do on the test setup.
This seems to fix the problems I encountered in #716 👍
Before this change, if Errno::EINVAL is thrown when sending IO to the child the server would crash. Now we catch the exception and, assuming the child has problems, we start a new child.