instructure / canvas-lms

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

Content migrations fail with "invalid cache_key type 'todo_list' for User" #1490

Open grocerneed opened 5 years ago

grocerneed commented 5 years ago

Summary:

Blueprint content syncs fail after a while.

Steps to reproduce:

  1. Create blueprint course
  2. Associate new course with blueprint course using the blueprint manager
  3. Make changes to blueprint course
  4. Press sync content

Expected behavior:

Blueprint course changes propagate to associated courses.

Actual behavior:

Job fails with following error:

invalid cache_key type 'todo_list' for User
/var/canvas/lib/canvas/cache_register.rb:64:in `valid_cache_key_type?'
/var/canvas/lib/canvas/cache_register.rb:84:in `block in clear_cache_keys'
/var/canvas/lib/canvas/cache_register.rb:84:in `each'
/var/canvas/lib/canvas/cache_register.rb:84:in `all?'
/var/canvas/lib/canvas/cache_register.rb:84:in `clear_cache_keys'
/var/canvas/lib/canvas/cache_register.rb:118:in `clear_cache_keys'
/var/canvas/app/models/course.rb:3245:in `clear_todo_list_cache'
/var/canvas/app/models/importers/assignment_importer.rb:82:in `create_assignments'
/var/canvas/app/models/importers/assignment_importer.rb:29:in `process_migration'
/var/canvas/app/models/importers/course_content_importer.rb:149:in `block (2 levels) in import_content'
/var/canvas/app/models/assignment.rb:2734:in `block (3 levels) in suspend_due_date_caching'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:48:in `suspend_callbacks'
/var/canvas/app/models/assignment.rb:2733:in `block (2 levels) in suspend_due_date_caching'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:48:in `suspend_callbacks'
/var/canvas/app/models/assignment.rb:2732:in `block in suspend_due_date_caching'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:48:in `suspend_callbacks'
/var/canvas/app/models/assignment.rb:2731:in `suspend_due_date_caching'
/var/canvas/app/models/importers/course_content_importer.rb:148:in `block in import_content'
/var/canvas/app/models/importers.rb:32:in `disable_live_events!'
/var/canvas/app/models/importers/course_content_importer.rb:90:in `import_content'
/var/canvas/app/models/content_migration.rb:583:in `import!'
/var/canvas/app/models/content_migration.rb:556:in `import_content'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/performable_method.rb:23:in `perform'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/backend/base.rb:254:in `block in invoke_job'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:67:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:72:in `execute'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:45:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/backend/base.rb:251:in `invoke_job'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-inst-jobs-1.3.3/lib/switchman_inst_jobs/delayed/backend/base.rb:62:in `block in invoke_job'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:598:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:88:in `activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:597:in `activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-inst-jobs-1.3.3/lib/switchman_inst_jobs/delayed/backend/base.rb:62:in `invoke_job'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:196:in `block (2 levels) in perform'
/usr/lib/ruby/2.4.0/benchmark.rb:308:in `realtime'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:190:in `block in perform'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:76:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:76:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:76:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:76:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-statsd-1.2.3/lib/inst_jobs_statsd/stats/timing/perform.rb:22:in `block (2 levels) in enable_perform_timing'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-statsd-1.2.3/lib/inst_jobs_statsd/stats/timing.rb:8:in `block in report_timing'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst_statsd-2.1.4/lib/inst_statsd/statsd.rb:89:in `time'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-statsd-1.2.3/lib/inst_jobs_statsd/stats/timing.rb:8:in `report_timing'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-statsd-1.2.3/lib/inst_jobs_statsd/stats/timing/perform.rb:21:in `block in enable_perform_timing'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-statsd-1.2.3/lib/inst_jobs_statsd/stats/timing/perform.rb:13:in `block (2 levels) in enable_batching'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst_statsd-2.1.4/lib/inst_statsd/statsd.rb:95:in `batch'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-statsd-1.2.3/lib/inst_jobs_statsd/stats/timing/perform.rb:12:in `block in enable_batching'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add'
/var/canvas/config/initializers/delayed_job.rb:132:in `block in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block (2 levels) in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:67:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:85:in `block in add'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:72:in `execute'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:45:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:187:in `perform'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:160:in `block (2 levels) in run'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:257:in `block in configure_for_job'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:40:in `running_job'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:253:in `configure_for_job'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:159:in `block in run'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:67:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:72:in `execute'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:45:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:152:in `run'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-inst-jobs-1.3.3/lib/switchman_inst_jobs/delayed/worker.rb:26:in `block in run'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:598:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:88:in `activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:597:in `activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-inst-jobs-1.3.3/lib/switchman_inst_jobs/delayed/worker.rb:26:in `run'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:132:in `block in start'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:67:in `block in initialize'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:72:in `execute'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/lifecycle.rb:45:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/worker.rb:130:in `start'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-inst-jobs-1.3.3/lib/switchman_inst_jobs/delayed/worker.rb:19:in `block in start'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:598:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:88:in `activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-1.13.2/app/models/switchman/shard_internal.rb:597:in `activate'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/switchman-inst-jobs-1.3.3/lib/switchman_inst_jobs/delayed/worker.rb:19:in `start'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:97:in `block in spawn_worker'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:108:in `block in fork_with_reconnects'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:105:in `fork'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:105:in `fork_with_reconnects'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:96:in `spawn_worker'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:228:in `respawn_child'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:193:in `block in maintain_children'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:192:in `each'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:192:in `maintain_children'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:139:in `block in join'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:138:in `loop'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:138:in `join'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/pool.rb:42:in `start'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/cli.rb:96:in `start'
/var/canvas/vendor/bundle/ruby/2.4.0/gems/inst-jobs-0.15.5/lib/delayed/cli.rb:48:in `run'
script/delayed_job:11:in `<top (required)>'
/usr/local/lib/site_ruby/2.4.0/bundler/cli/exec.rb:74:in `load'
/usr/local/lib/site_ruby/2.4.0/bundler/cli/exec.rb:74:in `kernel_load'
/usr/local/lib/site_ruby/2.4.0/bundler/cli/exec.rb:28:in `run'
/usr/local/lib/site_ruby/2.4.0/bundler/cli.rb:463:in `exec'
/usr/local/lib/site_ruby/2.4.0/bundler/vendor/thor/lib/thor/command.rb:27:in `run'
/usr/local/lib/site_ruby/2.4.0/bundler/vendor/thor/lib/thor/invocation.rb:126:in `invoke_command'
/usr/local/lib/site_ruby/2.4.0/bundler/vendor/thor/lib/thor.rb:387:in `dispatch'
/usr/local/lib/site_ruby/2.4.0/bundler/cli.rb:27:in `dispatch'
/usr/local/lib/site_ruby/2.4.0/bundler/vendor/thor/lib/thor/base.rb:466:in `start'
/usr/local/lib/site_ruby/2.4.0/bundler/cli.rb:18:in `start'
/usr/lib/ruby/gems/2.4.0/gems/bundler-1.17.3/exe/bundle:30:in `block in <top (required)>'
/usr/local/lib/site_ruby/2.4.0/bundler/friendly_errors.rb:124:in `with_friendly_errors'
/usr/lib/ruby/gems/2.4.0/gems/bundler-1.17.3/exe/bundle:22:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

Additional notes:

stale[bot] commented 2 years ago

Thanks for contributing to this issue. As it has been 2 years since the last activity, we are automatically closing the issue in 30 days. This is often because the request was already solved in some way and it just wasn't updated or it's no longer applicable. If that's not the case, please respond before the issue is closed, or post a message on the mailing list. We'll gladly take a look again!