Redmine stops responding when trying to open a subversion repository

Added by Ronie Henrich over 6 years ago

Since I upgraded Redmine from 1.0.2 to 1.1.0, it stops responding everytime I try to open a subversion repository.
I upgraded it today to version 1.2.0, but it did not solve this issue.

It shows nothing in its logs, neither in Apache error log, so I issued a kill SIGABRT to get the folowing full trace:
  • apache-2.2.17
    • APACHE2_MPMS="worker"
  • passenger-3.0.7
    • PassengerSpawnMethod conservative
      • Redmine stopped working with PassengerSpawnMethod set to smart or smart-lv2 after I upgraded postgresql from 8.2.15 to 8.4.4
  • postgresql-8.4.4
  • rails-2.3.11
  • redmine-1.2.0
  • subversion-1.6.16
SignalException in RepositoriesController#show

SIGABRT

RAILS_ROOT: /var/www/redmine
Application Trace | Framework Trace | Full Trace

/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:440:in `install_useful_signal_handlers'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:54:in `call'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:54:in `read'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:54:in `info'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:193:in `call'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:193:in `shellout'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:191:in `popen'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:191:in `shellout'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:177:in `shellout'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:53:in `info'
/var/www/redmine/app/models/repository/subversion.rb:44:in `fetch_changesets'
/var/www/redmine/app/controllers/repositories_controller.rb:77:in `show'

/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:440:in `install_useful_signal_handlers'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_proxy.rb:217:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_proxy.rb:217:in `method_missing'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:1331:in `send'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:1331:in `perform_action_without_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:617:in `call_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/flash.rb:146:in `perform_action'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:532:in `send'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:532:in `process_without_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:606:in `process'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:391:in `process'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:386:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/routing/route_set.rb:437:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:87:in `dispatch'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:121:in `_call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:130:in `build_middleware_stack'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:9:in `cache'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:28:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/string_coercion.rb:25:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/head.rb:9:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/methodoverride.rb:24:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/params_parser.rb:15:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/session/cookie_store.rb:93:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/failsafe.rb:26:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:114:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/reloader.rb:34:in `run'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:108:in `call'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:99:in `spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/utils.rb:479:in `safe_fork'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:84:in `spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:230:in `spawn_rails_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `__send__'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/helper-scripts/passenger-spawn-server:99

/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:440:in `install_useful_signal_handlers'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:54:in `call'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:54:in `read'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:54:in `info'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:193:in `call'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:193:in `shellout'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:191:in `popen'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:191:in `shellout'
/var/www/redmine/lib/redmine/scm/adapters/abstract_adapter.rb:177:in `shellout'
/var/www/redmine/lib/redmine/scm/adapters/subversion_adapter.rb:53:in `info'
/var/www/redmine/app/models/repository/subversion.rb:44:in `fetch_changesets'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_proxy.rb:217:in `send'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/associations/association_proxy.rb:217:in `method_missing'
/var/www/redmine/app/controllers/repositories_controller.rb:77:in `show'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:1331:in `send'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:1331:in `perform_action_without_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:617:in `call_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:610:in `perform_action_without_benchmark'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/core_ext/benchmark.rb:17:in `ms'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/rescue.rb:160:in `perform_action_without_flash'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/flash.rb:146:in `perform_action'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:532:in `send'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:532:in `process_without_filters'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/filters.rb:606:in `process'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:391:in `process'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:386:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/routing/route_set.rb:437:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:87:in `dispatch'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:121:in `_call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:130:in `build_middleware_stack'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:29:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/query_cache.rb:34:in `cache'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:9:in `cache'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/query_cache.rb:28:in `call'
/usr/lib/ruby/gems/1.8/gems/activerecord-2.3.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:361:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/string_coercion.rb:25:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/head.rb:9:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/methodoverride.rb:24:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/params_parser.rb:15:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/session/cookie_store.rb:93:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/failsafe.rb:26:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `synchronize'
/usr/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/lock.rb:11:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:114:in `call'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/reloader.rb:34:in `run'
/usr/lib/ruby/gems/1.8/gems/actionpack-2.3.5/lib/action_controller/dispatcher.rb:108:in `call'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:99:in `spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/utils.rb:479:in `safe_fork'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/classic_rails/application_spawner.rb:84:in `spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:230:in `spawn_rails_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `__send__'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
/usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/helper-scripts/passenger-spawn-server:99

Request

Parameters:

{"id"=>"svnrepo"}

Show session dump

--- 

Response

Headers:

{"Content-Type"=>"",
 "Cache-Control"=>"no-cache"}
  • ENVIRONMENT
RubyGems Environment:
  - RUBYGEMS VERSION: 1.3.7
  - RUBY VERSION: 1.8.7 (2011-02-18 patchlevel 334) [i686-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/bin/ruby18
  - EXECUTABLE DIRECTORY: /usr/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
     - /root/.gem/ruby/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => 1
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

*** LOCAL GEMS ***

actionmailer (2.3.11)
actionpack (2.3.11)
activeldap (1.2.4)
activerecord (2.3.11)
activeresource (2.3.11)
activesupport (2.3.11)
daemon_controller (0.2.6)
fast_gettext (0.5.8)
fastthread (1.0.7)
gettext_i18n_rails (0.2.2)
hoe (2.8.0)
i18n (0.4.2)
json_pure (1.5.1)
locale (2.0.5)
ncurses (0.9.1)
net-ssh (2.1.4)
passenger (3.0.7)
pg (0.11.0)
rack (1.2.2, 1.1.2)
rails (2.3.11)
rake (0.8.7)
RedCloth (4.2.7)
rmagick (2.13.1)
rubyforge (2.0.4)
spruz (0.2.6)

After starting apache and accessing Redmine the first time, I get the folowing processes related to Redmine:

apache   27426     1 61 21:52 ?        00:00:06 Rails: /var/www/redmine
postgres 27427 11862  0 21:52 ?        00:00:00 postgres: postgres redmine 127.0.0.1(33619) idle

Right after I click on the Repository tab, one more Redmine/rails proccess is created:

apache   27426     1 16 21:52 ?        00:00:07 Rails: /var/www/redmine
postgres 27427 11862  0 21:52 ?        00:00:00 postgres: postgres redmine 127.0.0.1(33619) idle
apache   27442 27426  0 21:53 ?        00:00:00 Rails: /var/www/redmine

So, to be able to access the repository tab, I have to do this workaround everytime I start/restart Apache:

  1. Kill both Redmine/rails processes (kill -9 27442 27426);
  2. Open Redmine but not click on the Repository tab;
  3. Restart Redmine (touch /var/www/redmine/tmp/restart.txt);
  4. Open again Redmine but not click on the Repository tab;
  5. Now I can open the Repository tab;

Any ideas on how to fix it to be able to run Redmine without the workaround above?
Can this problem be related to the fact that Redmine stopped working with PassengerSpawnMethod set to smart or smart-lv2 after I upgraded postgresql from 8.2.15 to 8.4.4?

Thanks!

Replies (6)

RE: Redmine stops responding when trying to open a subversion repository - Added by David Skowronski over 6 years ago

I am another user of redmine. I recommend running multiple ruby instances. The repository info is cached in the SQL database. The first time you run it or change it's config, it takes a few minutes to update the SQL database. It gets kicked off after clicking on the Repository tab. The Ruby process will probably go to 100% of one of the CPUs until it is finished. All other ruby requests on that instance will wait until it is finished updating the SQL database.

I have seen the "stop responding" appearance will also be seen when uploading or downloading a large file.

I think it's because ruby is not multithreaded.

RE: Redmine stops responding when trying to open a subversion repository - Added by Ronie Henrich over 6 years ago

Any tips/advice on how to solve this issue?

Thanks!

RE: Redmine stops responding when trying to open a subversion repository - Added by Archie Con over 6 years ago

I think we have the same issue here, we just update
redmine to 1.2.0. The problem won't go away...

Multiple rails threads, cpu goes to 100% useage...

RE: Redmine stops responding when trying to open a subversion repository - Added by Ronie Henrich over 6 years ago

  • Since Redmine version 1.2.0, it also stops responding when trying to open Administration ==> Settings.
    • It shows nothing in its logs, neither in Apache error log, so I issued a kill SIGABRT to get the following full trace:
Processing SettingsController#index (for 10.10.10.10 at 2011-06-12 11:33:24) [GET]
  Parameters: {"action"=>"index", "controller"=>"settings"}
Rendering template within layouts/admin
Rendering settings/edit

ActionView::TemplateError (SIGABRT) on line #28 of app/views/settings/_repositories.rhtml:
25:       <td>
26:          <%=
27:            image_tag(
28:               (scm_class.scm_available ? 'true.png' : 'exclamation.png'),
29:               :style => "vertical-align:bottom;" 
30:            )
31:            %>

    passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:440:in `install_useful_signal_handlers'
    passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:440:in `call'
    passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:440:in `close'
    passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:440:in `popen'
    lib/redmine/scm/adapters/abstract_adapter.rb:213:in `shellout'
    lib/redmine/scm/adapters/subversion_adapter.rb:59:in `scm_version_from_command_line'
    lib/redmine/scm/adapters/subversion_adapter.rb:49:in `svn_binary_version'
    lib/redmine/scm/adapters/subversion_adapter.rb:39:in `client_version'
    lib/redmine/scm/adapters/abstract_adapter.rb:50:in `client_version_above?'
    lib/redmine/scm/adapters/subversion_adapter.rb:45:in `client_available'
    app/models/repository.rb:298:in `scm_available'
    app/views/settings/_repositories.rhtml:28:in `_run_rhtml_app47views47settings47_repositories46rhtml_locals_object_repositories_tab'
    app/views/settings/_repositories.rhtml:11:in `collect'
    app/views/settings/_repositories.rhtml:11:in `_run_rhtml_app47views47settings47_repositories46rhtml_locals_object_repositories_tab'
    app/views/settings/_repositories.rhtml:1:in `_run_rhtml_app47views47settings47_repositories46rhtml_locals_object_repositories_tab'
    app/views/common/_tabs.rhtml:24:in `_run_rhtml_app47views47common47_tabs46rhtml_locals_object_tabs'
    app/views/common/_tabs.rhtml:23:in `each'
    app/views/common/_tabs.rhtml:23:in `_run_rhtml_app47views47common47_tabs46rhtml_locals_object_tabs'
    app/helpers/application_helper.rb:218:in `render_tabs'
    app/views/settings/edit.rhtml:3:in `_run_rhtml_app47views47settings47edit46rhtml'
    app/controllers/settings_controller.rb:25:in `index'
    passenger (3.0.7) lib/phusion_passenger/rack/request_handler.rb:96:in `process_request'
    passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:513:in `accept_and_process_next_request'
    passenger (3.0.7) lib/phusion_passenger/abstract_request_handler.rb:274:in `main_loop'
    passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:321:in `start_request_handler'
    passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:99:in `spawn_application'
    passenger (3.0.7) lib/phusion_passenger/utils.rb:479:in `safe_fork'
    passenger (3.0.7) lib/phusion_passenger/classic_rails/application_spawner.rb:84:in `spawn_application'
    passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:230:in `spawn_rails_application'
    passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:132:in `spawn_application'
    passenger (3.0.7) lib/phusion_passenger/spawn_manager.rb:275:in `handle_spawn_application'
    passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:357:in `__send__'
    passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:357:in `server_main_loop'
    passenger (3.0.7) lib/phusion_passenger/abstract_server.rb:206:in `start_synchronously'
    passenger (3.0.7) helper-scripts/passenger-spawn-server:99

Rendering /var/www/redmine/public/500.html (500 Internal Server Error)
  • scm.stderr.log has the following:
svn: warning: Can't open file '/etc/subversion/servers': Permission denied
sh: darcs: command not found
sh: hg: command not found
sh: cvs: command not found
sh: bzr: command not found
sh: git: command not found
  • I guess the problem is in lib/redmine/scm/adapters/abstract_adapter.rb:213:in `shellout'
        def self.shellout(cmd, &block)
        ...
            IO.popen(cmd, mode) do |io|
              io.close_write
              block.call(io) if block_given?
            end
        ...
        end
  • I thing this explains the problem/solution: Making Ruby threadable: properly handling context switching in native extensions says:
    • Threading basics
      • "As discussed in the previous article, Ruby 1.8 implements userspace threads, meaning that no matter how many Ruby threads you have, only one can run at a time, and only on a single CPU core. The threads are scheduled by Ruby itself, not by the operating system."
      • "With both Ruby 1.8 and 1.9 threads, system calls such as I/O operations can block the thread and preventing Ruby from context switching to another. Thus, system calls require special attention. Expensive calculations that do not involve system calls can also block the thread, but something can be done those as well, as you will read later on."
    • Handling I/O
      • "Suppose that you have a file descriptor on which you want to perform some potentially blocking I/O. The naive approach is to perform the I/O command anyway and risk blocking the entire Ruby process. This is exactly what makes the mysql extension thread-unfriendly: while waiting on MySQL no other threads can run, grinding your multi-threaded Rails web app to a halt."
  • Could some Redmine developer confirm this is a bug, so I can open an issue to address it?

Thanks!

(1-6/6)