system call timeout problem

Hallo,

I upgraded from rails 1.1.x to rails 1.2.x und the following error now occours. I do a system call, that transfers a file via lftp: `lftp -f #{dir}script` Which just executes lftp with a script file as a parameter. This works fine and the file transfer is executed correctly, but I now get after about 2000ms the following errors im my application:

In the Browser: the standard "rails application failed" error

In the error logs: SystemExit (exit):     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:116:in `exit'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:116:in `exit_now_handler'     /var/lib/gems/1.8/gems/activesupport-1.4.0/lib/active_support/ inflector.rb:251:in `to_proc'     /var/lib/gems/1.8/gems/activesupport-1.4.0/lib/active_support/ core_ext/kernel/agnostics.rb:7:in `call'     /var/lib/gems/1.8/gems/activesupport-1.4.0/lib/active_support/ core_ext/kernel/agnostics.rb:7:in ``'     /var/lib/gems/1.8/gems/activesupport-1.4.0/lib/active_support/ core_ext/kernel/agnostics.rb:7:in ``'     /app/models/quikftp.rb:86:in `copyFile'     /app/controllers/quikftp_controller.rb:106:in `copyFile'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ base.rb:1095:in `send'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ base.rb:1095:in `perform_action_without_filters'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ filters.rb:632:in `call_filter'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ filters.rb:638:in `call_filter'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ filters.rb:438:in `call'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ filters.rb:637:in `call_filter'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ filters.rb:619:in `perform_action_without_benchmark'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ benchmarking.rb:66:in `perform_action_without_rescue'     /usr/lib/ruby/1.8/benchmark.rb:293:in `measure'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ benchmarking.rb:66:in `perform_action_without_rescue'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ rescue.rb:83:in `perform_action'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ base.rb:430:in `send'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ base.rb:430:in `process_without_filters'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ filters.rb:624:in `process_without_session_management_support'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ session_management.rb:114:in `process'     /var/lib/gems/1.8/gems/actionpack-1.13.1/lib/action_controller/ base.rb:330:in `process'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/dispatcher.rb:41:in `dispatch'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:168:in `process_request'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:143:in `process_each_request!'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:109:in `with_signal_handler'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:142:in `process_each_request!'     /usr/lib/ruby/1.8/fcgi.rb:612:in `each_cgi'     /usr/lib/ruby/1.8/fcgi.rb:609:in `each'     /usr/lib/ruby/1.8/fcgi.rb:609:in `each_cgi'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:141:in `process_each_request!'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:55:in `process!'     /var/lib/gems/1.8/gems/rails-1.2.1/lib/fcgi_handler.rb:25:in `process!'     /home/arne/www/mpaiplus.com/http/back/public/dispatch.fcgi:24

Does anybody have an idia what this is about? Any help is strongly appreciated.

migo

Its extremely *insert your favorite profanity here* to do that. Rails work on the assumption that all your actions return/render fast and do not block. What your probably want is to offload this ftp thingy to a background process.

Most likely backgroundrb is suited for this kinda stuff. there is a seperate mailing list for backgroundrb, shoot a mail if you can't figure this out.

Thanks for the advice! the ftp transfer is actually called as an ajax function, so the application itself doesnt block (other ajax call check the progress on the ftp transfer). I will have a look at the backgroundrb stuff.