trailblazer-activity icon indicating copy to clipboard operation
trailblazer-activity copied to clipboard

NoMethodError: undefined method `[]' for nil

Open n-rodriguez opened this issue 10 months ago • 12 comments

Hi there!

I've got this error when running my app in production :

NoMethodError: undefined method `[]' for nil (NoMethodError)

        outputs[signal]
               ^^^^^^^^
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/circuit.rb:80:in `next_for'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/circuit.rb:54:in `block in call'
  from <internal:kernel>:187:in `loop'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/circuit.rb:44:in `call'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity.rb:13:in `call'
  from trailblazer-activity-dsl-linear (1.2.5) lib/trailblazer/activity/dsl/linear/strategy.rb:105:in `call'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/task_wrap/call_task.rb:13:in `call_task'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/task_wrap/pipeline.rb:16:in `call'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/task_wrap/pipeline.rb:16:in `block in call'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/task_wrap/pipeline.rb:16:in `each'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/task_wrap/pipeline.rb:16:in `call'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/task_wrap/runner.rb:23:in `call'
  from trailblazer-activity (0.16.2) lib/trailblazer/activity/task_wrap.rb:28:in `invoke'
  from trailblazer-endpoint (827ac62bdb4c) lib/trailblazer/endpoint/options.rb:37:in `options_for'
  from trailblazer-endpoint (827ac62bdb4c) lib/trailblazer/endpoint/controller.rb:133:in `endpoint_for'
  from trailblazer-endpoint (827ac62bdb4c) lib/trailblazer/endpoint/controller.rb:140:in `endpoint'
  from vendor/engines/concerto_espagne/app/controllers/concerto_espagne/pages_controller.rb:12:in `home'
  from trailblazer-endpoint (827ac62bdb4c) lib/trailblazer/endpoint/controller.rb:63:in `send_action'
  from actionpack (7.1.3.2) lib/abstract_controller/base.rb:224:in `process_action'
  from actionpack (7.1.3.2) lib/action_controller/metal/rendering.rb:165:in `process_action'
  from actionpack (7.1.3.2) lib/abstract_controller/callbacks.rb:259:in `block in process_action'
  from activesupport (7.1.3.2) lib/active_support/callbacks.rb:121:in `block in run_callbacks'
  from route_translator (5b62e421c349) lib/route_translator/core_ext/controller_patch.rb:30:in `set_locale_from_params'
  from activesupport (7.1.3.2) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
  from activesupport (7.1.3.2) lib/active_support/core_ext/time/zones.rb:65:in `use_zone'
  from app/controllers/concerns/base_controller/settings/time_zone.rb:20:in `set_time_zone'
  from activesupport (7.1.3.2) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
  from turbo-rails (2.0.5) lib/turbo-rails.rb:24:in `with_request_id'
  from turbo-rails (2.0.5) app/controllers/concerns/turbo/request_id_tracking.rb:10:in `turbo_tracking_request_id'
  from activesupport (7.1.3.2) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
  from sentry-rails (5.17.3) lib/sentry/rails/controller_transaction.rb:17:in `block in sentry_around_action'
  from sentry-ruby (5.17.3) lib/sentry/hub.rb:109:in `block in with_child_span'
  from sentry-ruby (5.17.3) lib/sentry/span.rb:211:in `with_child_span'
  from sentry-ruby (5.17.3) lib/sentry/hub.rb:107:in `with_child_span'
  from sentry-ruby (5.17.3) lib/sentry-ruby.rb:490:in `with_child_span'
  from sentry-rails (5.17.3) lib/sentry/rails/controller_transaction.rb:14:in `sentry_around_action'
  from activesupport (7.1.3.2) lib/active_support/callbacks.rb:130:in `block in run_callbacks'
  from activesupport (7.1.3.2) lib/active_support/callbacks.rb:141:in `run_callbacks'
  from actionpack (7.1.3.2) lib/abstract_controller/callbacks.rb:258:in `process_action'
  from actionpack (7.1.3.2) lib/action_controller/metal/rescue.rb:25:in `process_action'
  from actionpack (7.1.3.2) lib/action_controller/metal/instrumentation.rb:74:in `block in process_action'
  from activesupport (7.1.3.2) lib/active_support/notifications.rb:206:in `block in instrument'
  from activesupport (7.1.3.2) lib/active_support/notifications/instrumenter.rb:58:in `instrument'
  from sentry-rails (5.17.3) lib/sentry/rails/tracing.rb:54:in `instrument'
  from activesupport (7.1.3.2) lib/active_support/notifications.rb:206:in `instrument'
  from actionpack (7.1.3.2) lib/action_controller/metal/instrumentation.rb:73:in `process_action'
  from actionpack (7.1.3.2) lib/action_controller/metal/params_wrapper.rb:261:in `process_action'
  from activerecord (7.1.3.2) lib/active_record/railties/controller_runtime.rb:32:in `process_action'
  from actionpack (7.1.3.2) lib/abstract_controller/base.rb:160:in `process'
  from actionview (7.1.3.2) lib/action_view/rendering.rb:40:in `process'
  from actionpack (7.1.3.2) lib/action_controller/metal.rb:227:in `dispatch'
  from actionpack (7.1.3.2) lib/action_controller/metal.rb:309:in `dispatch'
  from actionpack (7.1.3.2) lib/action_dispatch/routing/route_set.rb:49:in `dispatch'
  from actionpack (7.1.3.2) lib/action_dispatch/routing/route_set.rb:32:in `serve'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:51:in `block in serve'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:131:in `block in find_routes'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:124:in `each'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:124:in `find_routes'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:32:in `serve'
  from actionpack (7.1.3.2) lib/action_dispatch/routing/route_set.rb:882:in `call'
  from railties (7.1.3.2) lib/rails/engine.rb:536:in `call'
  from railties (7.1.3.2) lib/rails/railtie.rb:226:in `public_send'
  from railties (7.1.3.2) lib/rails/railtie.rb:226:in `method_missing'
  from actionpack (7.1.3.2) lib/action_dispatch/routing/mapper.rb:22:in `block in <class:Constraints>'
  from actionpack (7.1.3.2) lib/action_dispatch/routing/mapper.rb:51:in `serve'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:51:in `block in serve'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:131:in `block in find_routes'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:124:in `each'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:124:in `find_routes'
  from actionpack (7.1.3.2) lib/action_dispatch/journey/router.rb:32:in `serve'
  from actionpack (7.1.3.2) lib/action_dispatch/routing/route_set.rb:882:in `call'
  from flipper (1.3.0) lib/flipper/middleware/memoizer.rb:87:in `memoized_call'
  from flipper (1.3.0) lib/flipper/middleware/memoizer.rb:45:in `call'
  from rack-attack (6.7.0) lib/rack/attack.rb:127:in `call'
  from remotipart (5adbdb24ab89) lib/remotipart/middleware.rb:31:in `call'
  from warden (1.2.9) lib/warden/manager.rb:36:in `block in call'
  from warden (1.2.9) lib/warden/manager.rb:34:in `catch'
  from warden (1.2.9) lib/warden/manager.rb:34:in `call'
  from rack (3.0.10) lib/rack/tempfile_reaper.rb:20:in `call'
  from rack (3.0.10) lib/rack/etag.rb:29:in `call'
  from rack (3.0.10) lib/rack/conditional_get.rb:31:in `call'
  from rack (3.0.10) lib/rack/head.rb:15:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/http/permissions_policy.rb:36:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/http/content_security_policy.rb:33:in `call'
  from secure_headers (7a23cb6b350b) lib/secure_headers/middleware.rb:11:in `call'
  from rack-session (2.0.0) lib/rack/session/abstract/id.rb:272:in `context'
  from rack-session (2.0.0) lib/rack/session/abstract/id.rb:266:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/cookies.rb:689:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/callbacks.rb:29:in `block in call'
  from activesupport (7.1.3.2) lib/active_support/callbacks.rb:101:in `run_callbacks'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/callbacks.rb:28:in `call'
  from sentry-rails (5.17.3) lib/sentry/rails/rescued_exception_interceptor.rb:12:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/debug_exceptions.rb:29:in `call'
  from sentry-ruby (5.17.3) lib/sentry/rack/capture_exceptions.rb:29:in `block (2 levels) in call'
  from sentry-ruby (5.17.3) lib/sentry/hub.rb:251:in `with_session_tracking'
  from sentry-ruby (5.17.3) lib/sentry-ruby.rb:403:in `with_session_tracking'
  from sentry-ruby (5.17.3) lib/sentry/rack/capture_exceptions.rb:20:in `block in call'
  from sentry-ruby (5.17.3) lib/sentry/hub.rb:59:in `with_scope'
  from sentry-ruby (5.17.3) lib/sentry-ruby.rb:383:in `with_scope'
  from sentry-ruby (5.17.3) lib/sentry/rack/capture_exceptions.rb:19:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/show_exceptions.rb:31:in `call'
  from railties (7.1.3.2) lib/rails/rack/logger.rb:37:in `call_app'
  from railties (7.1.3.2) lib/rails/rack/logger.rb:24:in `block in call'
  from activesupport (7.1.3.2) lib/active_support/tagged_logging.rb:135:in `block in tagged'
  from activesupport (7.1.3.2) lib/active_support/tagged_logging.rb:39:in `tagged'
  from activesupport (7.1.3.2) lib/active_support/tagged_logging.rb:135:in `tagged'
  from railties (7.1.3.2) lib/rails/rack/logger.rb:24:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/remote_ip.rb:92:in `call'
  from config/middlewares/concerto_request_id.rb:37:in `block in call'
  from config/middlewares/concerto_request_id.rb:17:in `with'
  from config/middlewares/concerto_request_id.rb:36:in `call'
  from request_store (1.6.0) lib/request_store/middleware.rb:19:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/request_id.rb:28:in `call'
  from rack (3.0.10) lib/rack/method_override.rb:28:in `call'
  from rack (3.0.10) lib/rack/runtime.rb:24:in `call'
  from activesupport (7.1.3.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/executor.rb:14:in `call'
  from rack (3.0.10) lib/rack/sendfile.rb:114:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/ssl.rb:79:in `call'
  from actionpack (7.1.3.2) lib/action_dispatch/middleware/assume_ssl.rb:21:in `call'
  from prometheus_exporter (66c1f39b72d8) lib/prometheus_exporter/middleware.rb:41:in `call'
  from railties (7.1.3.2) lib/rails/engine.rb:536:in `call'
  from autotuner (1.0.0) lib/autotuner/rack_plugin.rb:13:in `block in call'
  from autotuner (1.0.0) lib/autotuner/request_collector.rb:23:in `request'
  from autotuner (1.0.0) lib/autotuner/rack_plugin.rb:12:in `call'
  from puma (6.4.2) lib/puma/configuration.rb:272:in `call'
  from puma (6.4.2) lib/puma/request.rb:100:in `block in handle_request'
  from puma (6.4.2) lib/puma/thread_pool.rb:378:in `with_force_shutdown'
  from puma (6.4.2) lib/puma/request.rb:99:in `handle_request'
  from puma (6.4.2) lib/puma/server.rb:464:in `process_client'
  from puma (6.4.2) lib/puma/server.rb:245:in `block in run'
  from puma (6.4.2) lib/puma/thread_pool.rb:155:in `block in spawn_thread'
  • it's the first time I got this error
  • it doesn't happen in development or test environment
  • it only happens in production or staging environment
  • it happens since I've migrated the app to Ruby 3.3.1
  • it happens very randomly
  • it happens whatever urls you call
  • restarting the Docker container (sometimes many times) solve the issue

I've made some patches to debug a bit further (see: https://github.com/trailblazer/trailblazer-activity/pull/61) and as expected I finally got :

#<Class:0x00007f7b89551408>:  (Trailblazer::Activity::Circuit::IllegalSignalError)
[31mUnrecognized Signal `Trailblazer::Activity::Right` returned from #<Proc:0x00007f7b88818f48 /app/vendor/bundle/ruby/3.3.0/bundler/gems/trailblazer-endpoint-827ac62bdb4c/lib/trailblazer/endpoint/options.rb:79 (lambda)>. Registered signals are, [0m
[32m[0m

But still, I really don't understand what's happening :/

n-rodriguez avatar Apr 26 '24 14:04 n-rodriguez