VSA - Default value stream with edited stage names

Broken down from #321751 (comment 510639431)

When creating a value stream, edits to the name of a default stage in a value stream seems to fail

  1. Open the create value stream modal
  2. Change the name of issue to issue - edited
  3. Save
  4. 500 server error
RuntimeError at /groups/vsa-life/-/analytics/value_stream_analytics/value_streams =================================================================================

Default stage 'issue - edited to test' not found

lib/gitlab/analytics/cycle_analytics/default_stages.rb, line 26

   21               params_for_staging_stage
   22             ]
   23           end
   24   
   25           def self.find_by_name!(name)
>  26             all.find { |raw_stage| raw_stage[:name].to_s.eql?(name.to_s) } || raise("Default stage '#{name}' not found")
   27           end
   28   
   29           def self.names
   30             all.map { |stage| stage[:name] }
   31           end

App backtrace

  • lib/gitlab/analytics/cycle_analytics/default_stages.rb:26:in `find_by_name!'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:54:in `use_default_stage_params'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:50:in `build_stage_attributes'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:39:in `block in process_params'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:39:in `map!'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:39:in `process_params'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:12:in `initialize'
  • ee/app/controllers/groups/analytics/cycle_analytics/value_streams_controller.rb:16:in `new'
  • ee/app/controllers/groups/analytics/cycle_analytics/value_streams_controller.rb:16:in `create'
  • ee/lib/gitlab/ip_address_state.rb:10:in `with'
  • ee/app/controllers/ee/application_controller.rb:44:in `set_current_ip_address'
  • app/controllers/application_controller.rb:482:in `set_current_admin'
  • lib/gitlab/session.rb:11:in `with_session'
  • app/controllers/application_controller.rb:473:in `set_session_storage'
  • lib/gitlab/i18n.rb:73:in `with_locale'
  • lib/gitlab/i18n.rb:79:in `with_user_locale'
  • app/controllers/application_controller.rb:467:in `set_locale'
  • lib/gitlab/error_tracking.rb:52:in `with_context'
  • app/controllers/application_controller.rb:532:in `sentry_context'
  • app/controllers/application_controller.rb:460:in `block in set_current_context'
  • lib/gitlab/application_context.rb:56:in `block in use'
  • lib/gitlab/application_context.rb:56:in `use'
  • lib/gitlab/application_context.rb:22:in `with_context'
  • app/controllers/application_controller.rb:451:in `set_current_context'
  • lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
  • lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
  • lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
  • lib/gitlab/metrics/transaction.rb:56:in `run'
  • lib/gitlab/metrics/rack_middleware.rb:16:in `call'
  • lib/gitlab/request_profiler/middleware.rb:17:in `call'
  • lib/gitlab/query_limiting/middleware.rb:17:in `block in call'
  • lib/gitlab/query_limiting/transaction.rb:39:in `run'
  • lib/gitlab/query_limiting/middleware.rb:16:in `call'
  • lib/gitlab/jira/middleware.rb:19:in `call'
  • lib/gitlab/middleware/go.rb:20:in `call'
  • lib/gitlab/etag_caching/middleware.rb:21:in `call'
  • lib/gitlab/middleware/multipart.rb:172:in `call'
  • lib/gitlab/middleware/read_only/controller.rb:50:in `call'
  • lib/gitlab/middleware/read_only.rb:18:in `call'
  • lib/gitlab/middleware/same_site_cookies.rb:27:in `call'
  • lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'
  • lib/gitlab/middleware/basic_health_check.rb:25:in `call'
  • lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
  • lib/gitlab/middleware/request_context.rb:21:in `call'
  • config/initializers/fix_local_cache_middleware.rb:11:in `call'
  • lib/gitlab/middleware/static.rb:11:in `call'
  • lib/gitlab/webpack/dev_server_middleware.rb:34:in `perform_request'
  • lib/gitlab/metrics/requests_rack_middleware.rb:76:in `call'
  • lib/gitlab/middleware/release_env.rb:12:in `call'

Full backtrace

  • lib/gitlab/analytics/cycle_analytics/default_stages.rb:26:in `find_by_name!'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:54:in `use_default_stage_params'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:50:in `build_stage_attributes'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:39:in `block in process_params'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:39:in `map!'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:39:in `process_params'
  • ee/app/services/analytics/cycle_analytics/value_streams/create_service.rb:12:in `initialize'
  • ee/app/controllers/groups/analytics/cycle_analytics/value_streams_controller.rb:16:in `new'
  • ee/app/controllers/groups/analytics/cycle_analytics/value_streams_controller.rb:16:in `create'
  • actionpack (6.0.3.4) lib/action_controller/metal/basic_implicit_render.rb:6:in `send_action'
  • actionpack (6.0.3.4) lib/abstract_controller/base.rb:195:in `process_action'
  • actionpack (6.0.3.4) lib/action_controller/metal/rendering.rb:30:in `process_action'
  • actionpack (6.0.3.4) lib/abstract_controller/callbacks.rb:42:in `block in process_action'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:112:in `block in run_callbacks'
  • ee/lib/gitlab/ip_address_state.rb:10:in `with'
  • ee/app/controllers/ee/application_controller.rb:44:in `set_current_ip_address'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • app/controllers/application_controller.rb:482:in `set_current_admin'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • lib/gitlab/session.rb:11:in `with_session'
  • app/controllers/application_controller.rb:473:in `set_session_storage'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • lib/gitlab/i18n.rb:73:in `with_locale'
  • lib/gitlab/i18n.rb:79:in `with_user_locale'
  • app/controllers/application_controller.rb:467:in `set_locale'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • lib/gitlab/error_tracking.rb:52:in `with_context'
  • app/controllers/application_controller.rb:532:in `sentry_context'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • marginalia (1.10.0) lib/marginalia.rb:117:in `record_query_comment'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • sentry-raven (3.0.4) lib/raven/integrations/rails/controller_transaction.rb:7:in `block in included'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `instance_exec'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • app/controllers/application_controller.rb:460:in `block in set_current_context'
  • lib/gitlab/application_context.rb:56:in `block in use'
  • gitlab-labkit (0.14.0) lib/labkit/context.rb:33:in `with_context'
  • lib/gitlab/application_context.rb:56:in `use'
  • lib/gitlab/application_context.rb:22:in `with_context'
  • app/controllers/application_controller.rb:451:in `set_current_context'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:139:in `run_callbacks'
  • actionpack (6.0.3.4) lib/abstract_controller/callbacks.rb:41:in `process_action'
  • actionpack (6.0.3.4) lib/action_controller/metal/rescue.rb:22:in `process_action'
  • actionpack (6.0.3.4) lib/action_controller/metal/instrumentation.rb:33:in `block in process_action'
  • activesupport (6.0.3.4) lib/active_support/notifications.rb:180:in `block in instrument'
  • activesupport (6.0.3.4) lib/active_support/notifications/instrumenter.rb:24:in `instrument'
  • activesupport (6.0.3.4) lib/active_support/notifications.rb:180:in `instrument'
  • actionpack (6.0.3.4) lib/action_controller/metal/instrumentation.rb:32:in `process_action'
  • actionpack (6.0.3.4) lib/action_controller/metal/params_wrapper.rb:245:in `process_action'
  • activerecord (6.0.3.4) lib/active_record/railties/controller_runtime.rb:27:in `process_action'
  • actionpack (6.0.3.4) lib/abstract_controller/base.rb:136:in `process'
  • actionview (6.0.3.4) lib/action_view/rendering.rb:39:in `process'
  • actionpack (6.0.3.4) lib/action_controller/metal.rb:190:in `dispatch'
  • actionpack (6.0.3.4) lib/action_controller/metal.rb:254:in `dispatch'
  • actionpack (6.0.3.4) lib/action_dispatch/routing/route_set.rb:50:in `dispatch'
  • actionpack (6.0.3.4) lib/action_dispatch/routing/route_set.rb:33:in `serve'
  • actionpack (6.0.3.4) lib/action_dispatch/routing/mapper.rb:18:in `block in class:Constraints'
  • actionpack (6.0.3.4) lib/action_dispatch/routing/mapper.rb:48:in `serve'
  • actionpack (6.0.3.4) lib/action_dispatch/journey/router.rb:49:in `block in serve'
  • actionpack (6.0.3.4) lib/action_dispatch/journey/router.rb:32:in `each'
  • actionpack (6.0.3.4) lib/action_dispatch/journey/router.rb:32:in `serve'
  • actionpack (6.0.3.4) lib/action_dispatch/routing/route_set.rb:834:in `call'
  • omniauth (1.9.0) lib/omniauth/strategy.rb:192:in `call!'
  • omniauth (1.9.0) lib/omniauth/strategy.rb:169:in `call'
  • lib/gitlab/metrics/elasticsearch_rack_middleware.rb:16:in `call'
  • lib/gitlab/middleware/rails_queue_duration.rb:33:in `call'
  • lib/gitlab/metrics/rack_middleware.rb:16:in `block in call'
  • lib/gitlab/metrics/transaction.rb:56:in `run'
  • lib/gitlab/metrics/rack_middleware.rb:16:in `call'
  • lib/gitlab/request_profiler/middleware.rb:17:in `call'
  • lib/gitlab/query_limiting/middleware.rb:17:in `block in call'
  • lib/gitlab/query_limiting/transaction.rb:39:in `run'
  • lib/gitlab/query_limiting/middleware.rb:16:in `call'
  • lib/gitlab/jira/middleware.rb:19:in `call'
  • lib/gitlab/middleware/go.rb:20:in `call'
  • lib/gitlab/etag_caching/middleware.rb:21:in `call'
  • batch-loader (1.4.0) lib/batch_loader/middleware.rb:11:in `call'
  • bullet (6.1.3) lib/bullet/rack.rb:15:in `call'
  • rack-attack (6.3.0) lib/rack/attack.rb:97:in `call'
  • apollo_upload_server (2.0.2) lib/apollo_upload_server/middleware.rb:20:in `call'
  • lib/gitlab/middleware/multipart.rb:172:in `call'
  • rack-attack (6.3.0) lib/rack/attack.rb:111:in `call'
  • warden (1.2.8) lib/warden/manager.rb:36:in `block in call'
  • warden (1.2.8) lib/warden/manager.rb:34:in `catch'
  • warden (1.2.8) lib/warden/manager.rb:34:in `call'
  • rack-cors (1.0.6) lib/rack/cors.rb:98:in `call'
  • rack (2.2.3) lib/rack/tempfile_reaper.rb:15:in `call'
  • rack (2.2.3) lib/rack/etag.rb:27:in `call'
  • rack (2.2.3) lib/rack/conditional_get.rb:40:in `call'
  • rack (2.2.3) lib/rack/head.rb:12:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/http/content_security_policy.rb:18:in `call'
  • lib/gitlab/middleware/read_only/controller.rb:50:in `call'
  • lib/gitlab/middleware/read_only.rb:18:in `call'
  • rack (2.2.3) lib/rack/session/abstract/id.rb:266:in `context'
  • rack (2.2.3) lib/rack/session/abstract/id.rb:260:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/cookies.rb:648:in `call'
  • lib/gitlab/middleware/same_site_cookies.rb:27:in `call'
  • activerecord (6.0.3.4) lib/active_record/migration.rb:567:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/callbacks.rb:27:in `block in call'
  • activesupport (6.0.3.4) lib/active_support/callbacks.rb:101:in `run_callbacks'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/callbacks.rb:26:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/executor.rb:14:in `call'
  • lib/gitlab/middleware/handle_malformed_strings.rb:21:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/actionable_exceptions.rb:18:in `call'
  • better_errors (2.7.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
  • better_errors (2.7.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
  • better_errors (2.7.1) lib/better_errors/middleware.rb:57:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/debug_exceptions.rb:32:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call'
  • lib/gitlab/middleware/basic_health_check.rb:25:in `call'
  • railties (6.0.3.4) lib/rails/rack/logger.rb:37:in `call_app'
  • railties (6.0.3.4) lib/rails/rack/logger.rb:26:in `block in call'
  • activesupport (6.0.3.4) lib/active_support/tagged_logging.rb:80:in `block in tagged'
  • activesupport (6.0.3.4) lib/active_support/tagged_logging.rb:28:in `tagged'
  • activesupport (6.0.3.4) lib/active_support/tagged_logging.rb:80:in `tagged'
  • railties (6.0.3.4) lib/rails/rack/logger.rb:26:in `call'
  • sprockets-rails (3.2.2) lib/sprockets/rails/quiet_assets.rb:13:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/remote_ip.rb:81:in `call'
  • lib/gitlab/middleware/handle_ip_spoof_attack_error.rb:25:in `call'
  • lib/gitlab/middleware/request_context.rb:21:in `call'
  • request_store (1.5.0) lib/request_store/middleware.rb:19:in `call'
  • rack (2.2.3) lib/rack/method_override.rb:24:in `call'
  • rack (2.2.3) lib/rack/runtime.rb:22:in `call'
  • rack-timeout (0.5.2) lib/rack/timeout/core.rb:123:in `block in call'
  • rack-timeout (0.5.2) lib/rack/timeout/support/timeout.rb:19:in `timeout'
  • rack-timeout (0.5.2) lib/rack/timeout/core.rb:122:in `call'
  • config/initializers/fix_local_cache_middleware.rb:11:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/executor.rb:14:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/static.rb:126:in `call'
  • lib/gitlab/middleware/static.rb:11:in `call'
  • lib/gitlab/webpack/dev_server_middleware.rb:34:in `perform_request'
  • rack-proxy (0.6.0) lib/rack/proxy.rb:57:in `call'
  • rack (2.2.3) lib/rack/sendfile.rb:110:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/host_authorization.rb:82:in `call'
  • lib/gitlab/metrics/requests_rack_middleware.rb:76:in `call'
  • gitlab-labkit (0.14.0) lib/labkit/middleware/rack.rb:19:in `block in call'
  • gitlab-labkit (0.14.0) lib/labkit/context.rb:33:in `with_context'
  • gitlab-labkit (0.14.0) lib/labkit/middleware/rack.rb:18:in `call'
  • actionpack (6.0.3.4) lib/action_dispatch/middleware/request_id.rb:27:in `call'
  • sentry-raven (3.0.4) lib/raven/integrations/rack.rb:51:in `call'
  • railties (6.0.3.4) lib/rails/engine.rb:527:in `call'
  • railties (6.0.3.4) lib/rails/railtie.rb:190:in `public_send'
  • railties (6.0.3.4) lib/rails/railtie.rb:190:in `method_missing'
  • lib/gitlab/middleware/release_env.rb:12:in `call'
  • rack (2.2.3) lib/rack/urlmap.rb:74:in `block in call'
  • rack (2.2.3) lib/rack/urlmap.rb:58:in `each'
  • rack (2.2.3) lib/rack/urlmap.rb:58:in `call'
  • puma (5.1.1) lib/puma/configuration.rb:246:in `call'
  • puma (5.1.1) lib/puma/request.rb:76:in `block in handle_request'
  • puma (5.1.1) lib/puma/thread_pool.rb:337:in `with_force_shutdown'
  • puma (5.1.1) lib/puma/request.rb:75:in `handle_request'
  • puma (5.1.1) lib/puma/server.rb:431:in `process_client'
  • puma (5.1.1) lib/puma/thread_pool.rb:145:in `block in spawn_thread'

This is a result of #321751 (comment 510665578)

Edited by Martin Wortschack