On Tue, 2011-01-25 at 13:21 -0700, Alexey Verkhovsky wrote:
> When you catch it in the act of running the same build twice, I
> suggest that you look into the process tree and find out who started
> who. If it's not two concurrent builds running of different branches
> clashing with one another, then one of the build processes is probably
> an orphan.
> 
> When you run this stuff under Passenger, it starts and stops frontend
> workers at will. These, in turn, start and stop builder processes, one
> per project. There is a protection mechanism in the form of a builder
> lock file, that is intended to prevent CC.rb from running multiple
> builders ob the same project directory; HOWEVER, if a builder process
> starts a build, which then doesn't die when the builder dies (say, a
> rescue Exception clause eating the stop signals, which are Exceptions
> in Ruby), you can end up with concurrent builds per project, I guess.
> 
> Personally, I simply don't run CC.rb frontend under Passenger because
> of these oddball child process management scenarios. What I do instead
> is follow the instructions in daemon/cruise and let init run a single
> frontend process with a single set of builders.

I don't think this is related, but we've narrowed it down to this bit of
code, added to a test helper library, that was added to dynamically add
routes for testing:

begin
  _routes = Our::Application.routes
  _routes.disable_clear_and_finalize = true
  _routes.clear!

  Our::Application.routes_reloader.paths.each{ |path| load(path) }

  _routes.draw do
    match "request404" => "application#request404"
    match "request500" => "application#request500"
    match "generic_request" => "application#generic_request"
    match "login_required_request" =>
"application#login_required_request"
    match "authorize_school_request" =>
"application#authorize_school_request"
    match "authorize_school_without_redirect_request" =>
"application#authorize_school_without_redirect_request"
    match "redirect_back_request" => "application#redirect_back_request"
    match "render_data_request" => "application#render_data_request"
    match "cancant_request" => "application#cancant_request"

    match "redirect" => "legacy#redirect"
  end
  ActiveSupport.on_load(:action_controller) do
    Our::Application.routes.finalize!
  end
ensure
  _routes.disable_clear_and_finalize = false
end

If we comment this out, and the tests that use the helper, the problem
goes away.

BTW, I think the code came from http://openhood.com/rails/rails%
203/2010/07/20/add-routes-at-runtime-rails-3/ originally.

Still tinkering with it...

Regards,

Dan



_______________________________________________
Cruisecontrolrb-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/cruisecontrolrb-users

Reply via email to