Failed to create assignment or quize
Summary:
we have a self-hosted canvas lms(stable/2023-08-30),when I create a assignmen or quize , I can not submit, and production log display error message: NoMethodError (undefined method `-' for nil:NilClass
where("number <= ?", maximum(:number) - versions_to_keep).each(&:destroy)
^):
Steps to reproduce:
1.login 2.create a assignment or quize 3.failed to create assignment or quize
Expected behavior:
create assignment successfuly
Actual behavior:
failed
Additional notes:
when I checked the production log file, I got the following message:
[CANVAS_ERRORS] EXCEPTION LOG NoMethodError (undefined method `-' for nil:NilClass
where("number <= ?", maximum(:number) - versions_to_keep).each(&:destroy)
^):
/usr/src/app/gems/plugins/simply_versioned/lib/simply_versioned.rb:303:in clean_old_versions' /usr/src/app/gems/plugins/simply_versioned/lib/simply_versioned.rb:244:in simply_versioned_create_version'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:400:in block in make_lambda' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:236:in block in halting_and_conditional'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:599:in block in invoke_after' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:599:in each'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:599:in invoke_after' /usr/src/app/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:176:in block in run_callbacks'
/usr/src/app/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:189:in run_callbacks' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:929:in _run_save_callbacks'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/callbacks.rb:455:in create_or_update' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/timestamp.rb:126:in create_or_update'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/active_record/persistence.rb:29:in create_or_update' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/persistence.rb:648:in save!'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/validations.rb:53:in save!' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:302:in block in save!'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:354:in block in with_transaction_returning_status' /usr/src/app/config/initializers/active_record.rb:2188:in block in within_new_transaction'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in handle_interrupt' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in block in synchronize'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in handle_interrupt' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in synchronize'
/usr/src/app/config/initializers/active_record.rb:2186:in within_new_transaction' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/connection_adapters/abstract/database_statements.rb:316:in transaction'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:350:in with_transaction_returning_status' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/active_record/base.rb:277:in block (2 levels) in with_transaction_returning_status'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/database_server.rb:158:in unguard' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/active_record/base.rb:277:in block in with_transaction_returning_status'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/shard.rb:64:in activate' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/shard.rb:535:in activate'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/active_record/base.rb:275:in with_transaction_returning_status' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/transactions.rb:302:in save!'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/suppressor.rb:54:in save!' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/switchman-3.5.13/lib/switchman/active_record/base.rb:252:in save!'
/usr/src/app/lib/api/v1/assignment.rb:561:in block in create_api_assignment' /usr/src/app/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:57:in suspend_callbacks'
/usr/src/app/app/models/assignment.rb:3358:in block (2 levels) in suspend_due_date_caching' /usr/src/app/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:57:in suspend_callbacks'
/usr/src/app/app/models/assignment.rb:3357:in block in suspend_due_date_caching' /usr/src/app/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:57:in suspend_callbacks'
/usr/src/app/app/models/assignment.rb:3356:in suspend_due_date_caching' /usr/src/app/lib/api/v1/assignment.rb:555:in create_api_assignment'
/usr/src/app/app/controllers/assignments_api_controller.rb:1262:in create' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal/basic_implicit_render.rb:6:in send_action'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/abstract_controller/base.rb:215:in process_action' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal/rendering.rb:165:in process_action'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/abstract_controller/callbacks.rb:234:in block in process_action' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:118:in block in run_callbacks'
/usr/src/app/app/controllers/application_controller.rb:3010:in manage_live_events_context' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:in block in run_callbacks'
/usr/src/app/app/controllers/application_controller.rb:770:in compute_http_cost' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:in block in run_callbacks'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/inst_statsd-2.2.0/lib/inst_statsd/statsd.rb:97:in batch' /usr/src/app/app/controllers/application_controller.rb:765:in batch_statsd'
/usr/src/app/vendor/bundle/ruby/3.1.0/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:761:in enable_request_cache' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:in block in run_callbacks'
/usr/src/app/app/controllers/application_controller.rb:757:in set_timezone' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:in block in run_callbacks'
/usr/src/app/app/controllers/application_controller.rb:750:in set_locale' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:127:in block in run_callbacks'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:138:in run_callbacks' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/abstract_controller/callbacks.rb:233:in process_action'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal/rescue.rb:23:in process_action' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:67:in block in process_action'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:in block in instrument' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/notifications/instrumenter.rb:24:in instrument'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/notifications.rb:206:in instrument' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal/instrumentation.rb:66:in process_action'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal/params_wrapper.rb:259:in process_action' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activerecord-7.0.8/lib/active_record/railties/controller_runtime.rb:27:in process_action'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/abstract_controller/base.rb:151:in process' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionview-7.0.8/lib/action_view/rendering.rb:39:in process'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal.rb:188:in dispatch' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_controller/metal.rb:251:in dispatch'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:49:in dispatch' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/routing/route_set.rb:32:in serve'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/journey/router.rb:50:in block in serve' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/journey/router.rb:32:in each'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/journey/router.rb:32:in serve' /usr/src/app/vendor/bundle/ruby/3.1.0/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' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-brotli-1.0.0/lib/rack/brotli/deflater.rb:34:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/deflater.rb:44:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/chunked.rb:98:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/tempfile_reaper.rb:15:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/etag.rb:27:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/conditional_get.rb:40:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/head.rb:12:in call'
/usr/src/app/app/middleware/request_throttle.rb:62:in block in call' /usr/src/app/app/middleware/request_throttle.rb:355:in reserve_capacity'
/usr/src/app/app/middleware/request_throttle.rb:60:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/http/permissions_policy.rb:38:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/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'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/session/abstract/id.rb:266:in context' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/session/abstract/id.rb:260:in call'
/usr/src/app/app/middleware/load_account.rb:49:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/cookies.rb:704:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/callbacks.rb:27:in block in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/activesupport-7.0.8/lib/active_support/callbacks.rb:99:in run_callbacks'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/callbacks.rb:26:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/sentry-rails-5.1.0/lib/sentry/rails/rescued_exception_interceptor.rb:12:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/debug_exceptions.rb:28:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/sentry-ruby-core-5.1.0/lib/sentry/rack/capture_exceptions.rb:25:in block in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/sentry-ruby-core-5.1.0/lib/sentry/hub.rb:58:in with_scope' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/sentry-ruby-core-5.1.0/lib/sentry-ruby.rb:308:in with_scope'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/sentry-ruby-core-5.1.0/lib/sentry/rack/capture_exceptions.rb:16:in call' /usr/src/app/app/middleware/sentry_trace_scrubber.rb:34:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/show_exceptions.rb:29:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.8/lib/rails/rack/logger.rb:40:in call_app'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.8/lib/rails/rack/logger.rb:27:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/remote_ip.rb:93:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/request_store-1.5.1/lib/request_store/middleware.rb:19:in call' /usr/src/app/gems/request_context/lib/request_context/generator.rb:71:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/method_override.rb:24:in call' /usr/src/app/app/middleware/prevent_non_multipart_parse.rb:35:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/runtime.rb:22:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/executor.rb:14:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/rack-2.2.8/lib/rack/sendfile.rb:110:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/actionpack-7.0.8/lib/action_dispatch/middleware/host_authorization.rb:131:in call'
/usr/src/app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.8/lib/rails/engine.rb:530:in call' /usr/src/app/vendor/bundle/ruby/3.1.0/gems/railties-7.0.8/lib/rails/railtie.rb:226:in public_send'
/usr/src/app/vendor/bundle/ruby/3.1.0/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:157: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'CONTEXT: {:extra=>{:request_id=>"1808e3ec-9d21-4d71-b567-5216470a2253", :session_id=>"0eee98acc9625501a05d5a5c4fc49677", :meta_headers=>"o=assignments_api;n=create;t=Course;i=1;", :request_context_id=>"1808e3ec-9d21-4d71-b567-5216470a2253", :request_method=>:post, :format=>#<Mime::Type:0x00007f8fab295cd8 @synonyms=["text/x-json", "application/jsonrequest"], @symbol=:json, @string="application/json", @hash=-2017661759637232388>, "HTTP_ACCEPT"=>"application/json, text/javascript, application/json+canvas-string-ids, /; q=0.01", "HTTP_ACCEPT_ENCODING"=>"gzip, deflate, br", "HTTP_HOST"=>domain_name", "HTTP_REFERER"=>"https://domain_name/courses/1/assignments", "HTTP_USER_AGENT"=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "PATH_INFO"=>"/api/v1/courses/1/assignments", "QUERY_STRING"=>"?", "REQUEST_METHOD"=>"POST", "REQUEST_URI"=>"https://domain_name/api/v1/courses/1/assignments", "SERVER_NAME"=>"mss1.sjtu.edu.cn", "SERVER_PORT"=>"80", "SERVER_PROTOCOL"=>"HTTP/1.1", "HTTP_X_FORWARDED_PROTO"=>"https", "REMOTE_ADDR"=>"172.17.0.1", "path_parameters"=>"{:format=>"json", :controller=>"assignments_api", :action=>"create", :course_id=>"1"}", "query_parameters"=>"{}", "request_parameters"=>"{"assignment"=>{"publishable"=>true, "hidden"=>false, "unpublishable"=>true, "assignment_group_id"=>"1", "submission_types"=>"none", "name"=>"作业测试", "due_at"=>"2023-11-01T05:59:59.000Z", "points_possible"=>5, "persisted"=>false}}", :user_agent=>"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}, :tags=>{:account_id=>10000000000001, :user_id=>10000000000001, :type=>nil, :response_code=>500}}
may be not canvas lms error, but I don't know how to handle it