Issue #9115 has been updated by jeremyevans0 (Jeremy Evans).

Backport deleted (1.9.3: UNKNOWN, 2.0.0: UNKNOWN)
Assignee set to sonots (Naotoshi Seo)
Status changed from Open to Assigned

It makes sense for Logger to handle all exceptions by default, as you don't want Logger breaking otherwise working code.  So the default behavior is expected and not a bug.

I think the best way to handle this is to allow the user to specify exception classes they would like reraised instead of swallowed.  I've added a pull request that implements this: https://github.com/ruby/logger/pull/37

----------------------------------------
Bug #9115: Logger traps all exceptions; breaks Timeout
https://bugs.ruby-lang.org/issues/9115#change-80807

* Author: cphoenix (Chris Phoenix)
* Status: Assigned
* Priority: Normal
* Assignee: sonots (Naotoshi Seo)
* Target version: 
* ruby -v: ruby 2.0.0p247 (2013-06-27) [i386-mingw32]
* Backport: 
----------------------------------------
Line 577-579 of logger.rb

      rescue Exception => ignored
        warn("log writing failed. #{ignored}")
      end

Thus, when the system times out in the middle of writing a log message, it warns "log writing failed. execution expired" and just keeps right on running.

This is true in 1.9.3 as well. I haven't looked at older versions.

Pardon me while I go grep "rescue Exception" in the entire Ruby codebase, and see whether I can reliably use Timeout at all...

OK, you might check out C:\Ruby200\lib\ruby\gems\2.0.0\gems\activerecord-3.2.13\lib\active_record\railties\databases.rake

All the other "rescue Exception" seem to re-raise it, except maybe C:\Ruby200\lib\ruby\2.0.0\xmlrpc\server.rb and C:\Ruby200\lib\ruby\gems\2.0.0\gems\activesupport-3.2.13\lib\active_support\callbacks.rb





-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>