Feature #5980
closedTrying to Load File When Too Many Files Open Should Raise Something Other Than Plain LoadError
Description
Currently encountering too many open file handles when trying to load/require a file simply raises a LoadError. It's not easy to determine that the root cause is exhaustion (see below for demonstration).
The error should be changed either to an actual EMFILE, a wrapper error, or at least alter the LoadError message to indicate the actual cause.
$ echo "p 1" > /tmp/test.rb
$ ruby -e 'fs = []; 250.times {|i| fs << File.open("/tmp/tst#{i}", "w") }; require "/tmp/test.rb"'
1
$ ruby -e 'fs = []; 252.times {|i| fs << File.open("/tmp/tst#{i}", "w") }'
-e:1:in initialize': Too many open files - /tmp/tst251 (Errno::EMFILE) from -e:1:in
open'
from -e:1:in block in <main>' from -e:1:in
times'
from -e:1:in `'
$ ruby -e 'fs = []; 251.times {|i| fs << File.open("/tmp/tst#{i}", "w") }; require "/tmp/test.rb"'
/Users/rue/.rvm/rubies/ruby-head/lib/ruby/site_ruby/2.0.0/rubygems.rb:203:in try_activate': cannot load such file -- rubygems/specification (LoadError) from /Users/rue/.rvm/rubies/ruby-head/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:58:in
rescue in require'
from /Users/rue/.rvm/rubies/ruby-head/lib/ruby/site_ruby/2.0.0/rubygems/custom_require.rb:35:in require' from -e:1:in
'
$ ruby -v
ruby 2.0.0dev (2012-02-07 trunk 34462) [x86_64-darwin11.3.0]
Updated by naruse (Yui NARUSE) over 12 years ago
If it raises other than LoadError, it breaks codes which uses LoadError.
Changing additional message can be accepted.
Updated by ko1 (Koichi Sasada) over 12 years ago
- Tracker changed from Bug to Feature
Updated by mame (Yusuke Endoh) over 12 years ago
- Status changed from Open to Feedback
Someone has to volunteer to write a patch.
--
Yusuke Endoh mame@tsg.ne.jp
Updated by mame (Yusuke Endoh) almost 12 years ago
- Target version set to 2.6
Updated by rhenium (Kazuki Yamaguchi) over 7 years ago
- Related to Feature #13613: Prefer that require/require_relative/load to tell us permission error if the target file is unreadable added
Updated by mame (Yusuke Endoh) over 6 years ago
- Status changed from Feedback to Rejected
No volunteer.