Project

General

Profile

Actions

Feature #5980

closed

Trying to Load File When Too Many Files Open Should Raise Something Other Than Plain LoadError

Added by rue (Eero Saynatkari) over 10 years ago. Updated almost 4 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:42419]

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]


Related issues 1 (1 open0 closed)

Related to Ruby master - Feature #13613: Prefer that require/require_relative/load to tell us permission error if the target file is unreadableFeedbackActions
Actions

Also available in: Atom PDF