Project

General

Profile

Actions

Bug #13622

closed

500 when updating a host with null "nested" params

Added by Walden Raines about 8 years ago. Updated almost 7 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
API
Target version:
-
Difficulty:
Triaged:
Fixed in Releases:
Found in Releases:

Description

The error:

2016-02-09T14:45:14 [app] [W] Action failed
 | AbstractController::DoubleRenderError: Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/rendering.rb:15:in `render'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/instrumentation.rb:41:in `block (2 levels) in render'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/core_ext/benchmark.rb:12:in `block in ms'
 | /home/vagrant/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/benchmark.rb:303:in `realtime'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/core_ext/benchmark.rb:12:in `ms'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/instrumentation.rb:41:in `block in render'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/instrumentation.rb:84:in `cleanup_view_runtime'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activerecord-4.1.5/lib/active_record/railties/controller_runtime.rb:25:in `cleanup_view_runtime'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/instrumentation.rb:40:in `render'
 | /home/vagrant/foreman/app/controllers/api/base_controller.rb:86:in `not_found'
 | /home/vagrant/foreman/app/controllers/api/base_controller.rb:230:in `block in not_found_if_nested_id_exists'
 | /home/vagrant/foreman/app/controllers/api/base_controller.rb:228:in `each'
 | /home/vagrant/foreman/app/controllers/api/base_controller.rb:228:in `not_found_if_nested_id_exists'
 | /home/vagrant/foreman/app/controllers/api/base_controller.rb:216:in `find_optional_nested_object'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:424:in `block in make_lambda'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:143:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:143:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `block (2 levels) in halting'
 | /home/vagrant/foreman/app/controllers/api/v2/base_controller.rb:152:in `disable_json_root'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:424:in `block in make_lambda'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:229:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:229:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `block (2 levels) in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rails-observers-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in `around'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:447:in `public_send'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:447:in `block in make_lambda'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `block (2 levels) in halting'
 | /home/vagrant/foreman/app/controllers/concerns/application_shared.rb:13:in `set_timezone'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:424:in `block in make_lambda'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:229:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:229:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `block (2 levels) in halting'
 | /home/vagrant/foreman/app/models/concerns/foreman/thread_session.rb:32:in `clear_thread'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:424:in `block in make_lambda'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:229:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:229:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:166:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:299:in `block (2 levels) in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rails-observers-0.1.2/lib/rails/observers/action_controller/caching/sweeping.rb:73:in `around'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:447:in `public_send'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:447:in `block in make_lambda'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:298:in `block in halting'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:149:in `block in halting_and_conditional'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:86:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:86:in `run_callbacks'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/abstract_controller/callbacks.rb:19:in `process_action'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/rescue.rb:29:in `process_action'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/instrumentation.rb:31:in `block in process_action'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/notifications.rb:159:in `block in instrument'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/notifications.rb:159:in `instrument'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/instrumentation.rb:30:in `process_action'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/params_wrapper.rb:250:in `process_action'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activerecord-4.1.5/lib/active_record/railties/controller_runtime.rb:18:in `process_action'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/abstract_controller/base.rb:136:in `process'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionview-4.1.5/lib/action_view/rendering.rb:30:in `process'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal.rb:196:in `dispatch'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal/rack_delegation.rb:13:in `dispatch'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_controller/metal.rb:232:in `block in action'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/routing/route_set.rb:82:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/routing/route_set.rb:82:in `dispatch'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/routing/route_set.rb:50:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/routing/mapper.rb:45:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/journey/router.rb:71:in `block in call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/journey/router.rb:59:in `each'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/journey/router.rb:59:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/routing/route_set.rb:678:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/static.rb:64:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/static.rb:64:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/apipie-rails-0.3.5/lib/apipie/static_dispatcher.rb:65:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/bullet-5.0.0/lib/bullet/rack.rb:12:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/apipie-rails-0.3.5/lib/apipie/extractor/recorder.rb:132:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/apipie-rails-0.3.5/lib/apipie/middleware/checksum_in_headers.rb:27:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-openid-1.4.2/lib/rack/openid.rb:98:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/etag.rb:23:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/conditionalget.rb:35:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/head.rb:11:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/params_parser.rb:27:in `call'
 | /home/vagrant/foreman/lib/middleware/catch_json_parse_errors.rb:9:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/flash.rb:254:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/session/abstract/id.rb:225:in `context'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/session/abstract/id.rb:220:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/cookies.rb:560:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activerecord-4.1.5/lib/active_record/query_cache.rb:36:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activerecord-4.1.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:621:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activerecord-4.1.5/lib/active_record/migration.rb:380:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/callbacks.rb:82:in `run_callbacks'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/callbacks.rb:27:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/reloader.rb:73:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/remote_ip.rb:76:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/debug_exceptions.rb:17:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/railties-4.1.5/lib/rails/rack/logger.rb:38:in `call_app'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/railties-4.1.5/lib/rails/rack/logger.rb:22:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/quiet_assets-1.1.0/lib/quiet_assets.rb:27:in `call_with_quiet_assets'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/request_id.rb:21:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/methodoverride.rb:21:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/runtime.rb:17:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/activesupport-4.1.5/lib/active_support/cache/strategy/local_cache_middleware.rb:26:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/lock.rb:17:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/actionpack-4.1.5/lib/action_dispatch/middleware/static.rb:64:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/sendfile.rb:112:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/railties-4.1.5/lib/rails/engine.rb:514:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/railties-4.1.5/lib/rails/application.rb:144:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/railties-4.1.5/lib/rails/railtie.rb:194:in `public_send'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/railties-4.1.5/lib/rails/railtie.rb:194:in `method_missing'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/builder.rb:138:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/urlmap.rb:65:in `block in call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/urlmap.rb:50:in `each'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/urlmap.rb:50:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/lock.rb:17:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/content_length.rb:14:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/rack-1.5.5/lib/rack/handler/webrick.rb:60:in `service'
 | /home/vagrant/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:138:in `service'
 | /home/vagrant/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/httpserver.rb:94:in `run'
 | /home/vagrant/.rvm/rubies/ruby-2.2.0/lib/ruby/2.2.0/webrick/server.rb:294:in `block in start_thread'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/logging-2.0.0/lib/logging/diagnostic_context.rb:448:in `call'
 | /home/vagrant/.rvm/gems/ruby-2.2.0/gems/logging-2.0.0/lib/logging/diagnostic_context.rb:448:in `block in create_with_logging_context'
2016-02-09T14:45:14 [app] [I] Completed 500 Internal Server Error in 25ms
2016-02-09T14:45:14 [app] [F]
 | AbstractController::DoubleRenderError (Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".):
 |   app/controllers/api/v2/base_controller.rb:143:in `render_error'
 |   app/controllers/api/base_controller.rb:22:in `block in <class:BaseController>'
 |   lib/middleware/catch_json_parse_errors.rb:9:in `call'
 |
 |

Here is the JSON I used:

{
    "environment_id": null,
    "hostgroup_id": null,
    "organization_id": 1,
    "location_id": 2,
    "name": "new hostname" 
}

The problem appears to be here:

https://github.com/theforeman/foreman/blob/develop/app/controllers/api/base_controller.rb#L227-L233

If more than one of these special attributes are included and also null then the result is more than one render:

(byebug) allowed_nested_id
["hostgroup_id", "location_id", "organization_id", "environment_id"]

I would expect null attributes to be accepted and that they would remove the association. If this is not a valid assumption then the API should provide an appropriate error.
h3. Steps to Reproduce

  1. PUT to a host with JSON similar to the above
  2. Note 500 ISE
Actions

Also available in: Atom PDF