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