instructure / canvas-lms

The open LMS by Instructure, Inc.
https://github.com/instructure/canvas-lms/wiki
GNU Affero General Public License v3.0
5.4k stars 2.42k forks source link

rubric.rb throws an exception in canvas release/2024-05-08.228 #2352

Open breiter opened 1 month ago

breiter commented 1 month ago

Summary:

After building canvas release/2024-05-08.228 loading speedgrader and assignment submissions result in a 500 error.

Steps to reproduce:

  1. build and deploy release/2024-05-08.228a
  2. attempt to open an assignment or an assignment submission

Expected behavior:

Pages should load with data.

Actual behavior:

500 error.

Additional notes:

The stack trace in the error log is always the same.

Note also that rubric.rb:290 was changed in release/2024-05-08.181. Building release/2024-05-08.180 before the change resolve the issue.

/usr/src/app/app/models/rubric.rb:493:
    in `initialize' /usr/src/app/app/models/rubric.rb:493;in
    `new' /usr/src/app/app/models/rubric.rb:493:
    in `block in reconstitute_criteria' /usr/src/app/app/models/rubric.rb:491:
    in `map' /usr/src/app/app/models/rubric.rb:491:
    in `reconstitute_criteria' /usr/src/app/app/models/rubric.rb:290:
    in `criteria_object' /usr/src/app/app/views/shared/_rubric.html.erb:155:
    in `block in _app_views_shared__rubric_html_erb___1746671981510988459_636300' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/helpers/cache_helper.rb:286:
    in `write_fragment_for' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/helpers/cache_helper.rb:276:
    in `fragment_for' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/helpers/cache_helper.rb:172:
    in `block in cache' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/helpers/cache_helper.rb:306:
    in `track_caching' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/helpers/cache_helper.rb:170:
    in `cache' /usr/src/app/app/helpers/application_helper.rb:656:
    in `cache' /usr/src/app/app/views/shared/_rubric.html.erb:30:
    in `_app_views_shared__rubric_html_erb___1746671981510988459_636300' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/base.rb:244:
    in `public_send' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/base.rb:244:
    in `_run' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/template.rb:157:
    in `block in render' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:208:
    in `instrument' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/template.rb:361:
    in `instrument_render_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/template.rb:155:
    in `render' /usr/src/app/config/initializers/i18n.rb:318:
    in `render' /usr/src/app/config/initializers/template_streaming.rb:116:
    in `render' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/partial_renderer.rb:251:
    in `block in render_partial_template' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `block in instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:
    in `instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `instrument' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/partial_renderer.rb:246:
    in `render_partial_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/object_renderer.rb:31:
    in `render_partial_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/partial_renderer.rb:237:
    in `render' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/object_renderer.rb:16:
    in `render_object_with_partial' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/renderer.rb:77:
    in `render_partial_to_object' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/renderer.rb:27:
    in `render_to_object' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/renderer.rb:22:
    in `render' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/helpers/rendering_helper.rb:37:
    in `block in render' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/base.rb:270:
    in `in_rendering_context' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/helpers/rendering_helper.rb:33:
    in `render' /usr/src/app/app/views/submissions/show.html.erb:293:
    in `_app_views_submissions_show_html_erb__4597853868289549113_636240' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/base.rb:244:
    in `public_send' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/base.rb:244:
    in `_run' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/template.rb:157:
    in `block in render' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:208:
    in `instrument' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/template.rb:361:
    in `instrument_render_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/template.rb:155:
    in `render' /usr/src/app/config/initializers/i18n.rb:318:
    in `render' /usr/src/app/config/initializers/template_streaming.rb:116:
    in `render' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/template_renderer.rb:65:
    in `block (2 levels) in render_template' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `block in instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:
    in `instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `instrument' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/template_renderer.rb:60:
    in `block in render_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/template_renderer.rb:75:
    in `block in render_with_layout' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `block in instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:
    in `instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `instrument' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/template_renderer.rb:74:
    in `render_with_layout' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/template_renderer.rb:59:
    in `render_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/template_renderer.rb:11:
    in `render' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/renderer.rb:61:
    in `render_template_to_object' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/renderer/renderer.rb:29:
    in `render_to_object' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/rendering.rb:117:
    in `block in _render_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/base.rb:270:
    in `in_rendering_context' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/rendering.rb:116:
    in `_render_template' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/streaming.rb:216:
    in `_render_template' /usr/src/app/config/initializers/template_streaming.rb:29:
    in `_render_template' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/rendering.rb:103:
    in `render_to_body' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/rendering.rb:158:
    in `render_to_body' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/renderers.rb:141:
    in `render_to_body' /usr/src/app/config/initializers/template_streaming.rb:6:
    in `render_to_body' /home/docker/.gem/gems/actionpack-7.0.8/lib/abstract_controller/rendering.rb:27:
    in `render' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/rendering.rb:139:
    in `render' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:22:
    in `block (2 levels) in render' /usr/lib/ruby/3.1.0/benchmark.rb:311:
    in `realtime' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/core_ext/benchmark.rb:14:
    in `ms' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:22:
    in `block in render' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:91:
    in `cleanup_view_runtime' /home/docker/.gem/gems/activerecord-7.0.8/lib/active_record/railties/controller_runtime.rb:34:
    in `cleanup_view_runtime' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:21:
    in `render' /usr/src/app/app/controllers/application_controller.rb:2640:
    in `block in render' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:107:
    in `run_callbacks' /usr/src/app/app/controllers/application_controller.rb:2640:
    in `render' /usr/src/app/app/controllers/submissions_base_controller.rb:68:
    in `block (2 levels) in show' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/mime_responds.rb:214:
    in `respond_to' /usr/src/app/app/controllers/submissions_base_controller.rb:39:
    in `show' /usr/src/app/app/controllers/submissions_controller.rb:132:
    in `show' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/basic_implicit_render.rb:6:
    in `send_action' /home/docker/.gem/gems/actionpack-7.0.8/lib/abstract_controller/base.rb:215:
    in `process_action' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/rendering.rb:165:
    in `process_action' /home/docker/.gem/gems/actionpack-7.0.8/lib/abstract_controller/callbacks.rb:234:
    in `block in process_action' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:118:
    in `block in run_callbacks' /usr/src/app/app/controllers/application_controller.rb:3105:
    in `manage_live_events_context' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:
    in `block in run_callbacks' /usr/src/app/app/controllers/application_controller.rb:843:
    in `compute_http_cost' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:
    in `block in run_callbacks' /home/docker/.gem/gems/inst_statsd-3.0.4/lib/inst_statsd/statsd.rb:102:
    in `batch' /usr/src/app/app/controllers/application_controller.rb:838:
    in `batch_statsd' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:
    in `block in run_callbacks' /usr/src/app/lib/base/temp_cache.rb:30:
    in `enable' /usr/src/app/app/controllers/application_controller.rb:834:
    in `enable_request_cache' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:
    in `block in run_callbacks' /usr/src/app/app/controllers/application_controller.rb:830:
    in `set_timezone' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:
    in `block in run_callbacks' /usr/src/app/app/controllers/application_controller.rb:820:
    in `set_locale' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:
    in `block in run_callbacks' /home/docker/.gem/gems/sentry-rails-5.17.3/lib/sentry/rails/controller_transaction.rb:28:
    in `block in sentry_around_action' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry/hub.rb:102:
    in `with_child_span' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry-ruby.rb:490:
    in `with_child_span' /home/docker/.gem/gems/sentry-rails-5.17.3/lib/sentry/rails/controller_transaction.rb:14:
    in `sentry_around_action' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:
    in `block in run_callbacks' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:138:
    in `run_callbacks' /home/docker/.gem/gems/actionpack-7.0.8/lib/abstract_controller/callbacks.rb:233:
    in `process_action' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/rescue.rb:23:
    in `process_action' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:67:
    in `block in process_action' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `block in instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:
    in `instrument' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:
    in `instrument' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:66:
    in `process_action' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal/params_wrapper.rb:259:
    in `process_action' /home/docker/.gem/gems/activerecord-7.0.8/lib/active_record/railties/controller_runtime.rb:27:
    in `process_action' /home/docker/.gem/gems/actionpack-7.0.8/lib/abstract_controller/base.rb:151:
    in `process' /home/docker/.gem/gems/actionview-7.0.8/lib/action_view/rendering.rb:39:
    in `process' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal.rb:188:
    in `dispatch' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_controller/metal.rb:251:
    in `dispatch' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:49:
    in `dispatch' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:32:
    in `serve' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/journey/router.rb:50:
    in `block in serve' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/journey/router.rb:32:
    in `each' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/journey/router.rb:32:
    in `serve' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:852:
    in `call' /usr/src/app/gems/plugins/respondus_soap_endpoint/lib/respondus_soap_endpoint/middleware.rb:80:
    in `call' /home/docker/.gem/gems/rack-brotli-1.2.0/lib/rack/brotli/deflater.rb:34:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/deflater.rb:44:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/chunked.rb:98:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/tempfile_reaper.rb:15:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/etag.rb:27:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/conditional_get.rb:27:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/head.rb:12:
    in `call' /usr/src/app/app/middleware/request_throttle.rb:70:
    in `block in call' /usr/src/app/app/middleware/request_throttle.rb:375:
    in `reserve_capacity' /usr/src/app/app/middleware/request_throttle.rb:68:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/http/permissions_policy.rb:38:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/http/content_security_policy.rb:36:
    in `call' /usr/src/app/gems/request_context/lib/request_context/session.rb:28:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/session/abstract/id.rb:266:
    in `context' /home/docker/.gem/gems/rack-2.2.9/lib/rack/session/abstract/id.rb:260:
    in `call' /usr/src/app/app/middleware/load_account.rb:57:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/cookies.rb:704:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/callbacks.rb:27:
    in `block in call' /home/docker/.gem/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:99:
    in `run_callbacks' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/callbacks.rb:26:
    in `call' /home/docker/.gem/gems/sentry-rails-5.17.3/lib/sentry/rails/rescued_exception_interceptor.rb:12:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/debug_exceptions.rb:28:
    in `call' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry/rack/capture_exceptions.rb:29:
    in `block (2 levels) in call' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry/hub.rb:251:
    in `with_session_tracking' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry-ruby.rb:403:
    in `with_session_tracking' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry/rack/capture_exceptions.rb:20:
    in `block in call' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry/hub.rb:59:
    in `with_scope' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry-ruby.rb:383:
    in `with_scope' /home/docker/.gem/gems/sentry-ruby-5.17.3/lib/sentry/rack/capture_exceptions.rb:19:
    in `call' /usr/src/app/app/middleware/sentry_trace_scrubber.rb:34:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/show_exceptions.rb:29:
    in `call' /home/docker/.gem/gems/railties-7.0.8/lib/rails/rack/logger.rb:40:
    in `call_app' /home/docker/.gem/gems/railties-7.0.8/lib/rails/rack/logger.rb:27:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/remote_ip.rb:93:
    in `call' /home/docker/.gem/gems/request_store-1.6.0/lib/request_store/middleware.rb:19:
    in `call' /usr/src/app/gems/request_context/lib/request_context/generator.rb:71:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/method_override.rb:24:
    in `call' /usr/src/app/app/middleware/prevent_non_multipart_parse.rb:35:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/runtime.rb:22:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/executor.rb:14:
    in `call' /home/docker/.gem/gems/rack-2.2.9/lib/rack/sendfile.rb:110:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/ssl.rb:77:
    in `call' /home/docker/.gem/gems/actionpack-7.0.8/lib/action_dispatch/middleware/host_authorization.rb:131:
    in `call' /home/docker/.gem/gems/railties-7.0.8/lib/rails/engine.rb:530:
    in `call' /home/docker/.gem/gems/railties-7.0.8/lib/rails/railtie.rb:226:
    in `public_send' /home/docker/.gem/gems/railties-7.0.8/lib/rails/railtie.rb:226:
    in `method_missing' /usr/lib/ruby/vendor_ruby/phusion_passenger/rack/thread_handler_extension.rb:107:
    in `process_request' /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:149:
    in `accept_and_process_next_request' /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler/thread_handler.rb:110:
    in `main_loop' /usr/lib/ruby/vendor_ruby/phusion_passenger/request_handler.rb:419:
    in `block (3 levels) in start_threads' /usr/lib/ruby/vendor_ruby/phusion_passenger/utils.rb:113:
    in `block in create_thread_and_abort_on_exception'