что может вызвать IOError (закрытый поток) в jruby?

Я провел последние три дня, пытаясь развернуть приложение jruby/rails/couchdb в среде linux/tomcat. я готов что-то снимать. Моя текущая проблема заключается в следующем: существует специальный гем «simply_stored», который действует как драйвер верхнего уровня для CouchDB. всякий раз, когда я нажимаю код в приложении, которое касается этого драгоценного камня, я получаю эту рубиновую трассировку:

IOError in HomeController#index

closed stream

/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored.rb:7
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored.rb:31:in 'require'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in 'require'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in 'new_constants_in'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:156:in 'require'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored/couch.rb:5
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/simply_stored-0.3.6/lib/simply_stored/couch.rb:380:in 'load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:380:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in 'new_constants_in'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:379:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:259:in 'require_or_load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:425:in 'load_missing_constant'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:80:in 'const_missing_with_dependencies'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/app/models/job.rb:2
/var/lib/tomcat6/webapps/ROOT/WEB-INF/app/models/job.rb:380:in 'load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:380:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:521:in 'new_constants_in'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:379:in 'load_file'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:259:in 'require_or_load'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:425:in 'load_missing_constant'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:80:in 'const_missing_with_dependencies'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:92:in 'const_missing'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:437:in 'load_missing_constant'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:96:in 'const_missing'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/app/controllers/home_controller.rb:3:in 'index'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:1331:in 'perform_action'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/filters.rb:617:in 'call_filters'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/filters.rb:610:in 'perform_action_with_filters'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:68:in 'perform_action_with_benchmark'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:in 'ms'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/activesupport-2.3.8/lib/active_support/core_ext/benchmark.rb:17:in 'ms'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/benchmarking.rb:68:in 'perform_action_with_benchmark'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/rescue.rb:160:in 'perform_action_with_rescue'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/flash.rb:151:in 'perform_action_with_flash'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:532:in 'process'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/filters.rb:606:in 'process_with_filters'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:391:in 'process'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/base.rb:386:in 'call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/routing/route_set.rb:438:in 'call'

трассировка каркаса:

file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.5.2.jar!/META-INF/jruby.home/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in 'require'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-stdlib-1.5.2.jar!/META-INF/jruby.home/lib/ruby/1.8/benchmark.rb:308:in 'realtime'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:87:in 'dispatch'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:121:in '_call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:130:in 'build_middleware_stack'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/head.rb:9:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/methodoverride.rb:24:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/vendor/rack-1.2.1/rack/lock.rb:11:in 'call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:114:in 'call'
/var/lib/tomcat6/webapps/ROOT/WEB-INF/gems/gems/actionpack-2.3.8/lib/action_controller/dispatcher.rb:108:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/rack/adapter/rails.rb:36:in 'serve_rails'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/rack/adapter/rails.rb:41:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/jruby/rack/rails.rb:180:in 'call'
file:/var/lib/tomcat6/webapps/ROOT/WEB-INF/lib/jruby-rack-1.0.3.jar!/rack/handler/servlet.rb:19:in 'call'

теперь моя первоначальная реакция заключается в том, что это как-то связано с общением с CouchDB. это все еще возможно, хотя и маловероятно. указание несуществующего адреса имеет тот же эффект. эта библиотека отлично работает для многих людей (включая меня, в моей среде разработки — os x/WEBRick). Копнув глубже, я нашел несколько (довольно разрозненных) ссылок на похожие проблемы с разными функциями. вот один: что может быть причиной этого закрытого потока rails ioerror? < /а>

интересно то, что обе ошибки, кажется, происходят вскоре после того, как файл был впервые загружен/обработан с помощью active_support. может ли эта проблема с потоком быть связана с загрузкой файлов ruby, а не с соединением tcp?

я совершенно в недоумении здесь, любая помощь будет принята с благодарностью.

изменить: новый интересный момент — эта проблема исчезает в той же конфигурации, если вместо tomcat используется стеклянная рыба. тот же сервер, тот же военный файл.


person kolosy    schedule 14.09.2010    source источник