Error while running DB migration - ActiveRecord::RecordInvalid:

177 views
Skip to first unread message

Ifechi Okobi

unread,
Sep 4, 2021, 7:12:41 PM9/4/21
to Canvas LMS Users
Hi all,

Tried upgrading Canvas "Production" install today and ran into the error below.

Migration seems to be failing at (canvas/db/migrate/20201125173253_fill_custom_claim_columns_at_lit_resource_links.rb)

$  RAILS_ENV=production bundle exec rake db:migrate --trace

/var/canvas/vendor/bundle/ruby/2.6.0/gems/soap4r-ruby1.9-2.0.5/lib/soap/mapping/encodedregistry.rb:150: warning: constant ::Fixnum is deprecated
/var/canvas/vendor/bundle/ruby/2.6.0/gems/soap4r-ruby1.9-2.0.5/lib/soap/mapping/encodedregistry.rb:216: warning: constant ::Fixnum is deprecated
** Invoke db:migrate (first_time)
** Invoke db:load_config (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:load_config
** Execute db:migrate
1: production:public
==  FillCustomClaimColumnsAtLitResourceLinks: migrating =======================
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

Validation failed: Lookup uuid can't be blank, Resource link uuid can't be blank
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/validations.rb:80:in `raise_validation_error'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/validations.rb:53:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:318:in `block in save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:212:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:43:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/relation.rb:104:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:38:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:318:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/suppressor.rb:48:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:117:in `block in save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation.rb:407:in `block in scoping'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation.rb:787:in `_scoping'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation.rb:407:in `scoping'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:117:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/persistence.rb:635:in `block in update!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:212:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:51:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/persistence.rb:633:in `update!'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:26:in `block in run'
/var/canvas/config/initializers/active_record.rb:768:in `block (2 levels) in find_each'
/var/canvas/config/initializers/active_record.rb:768:in `each'
/var/canvas/config/initializers/active_record.rb:768:in `block in find_each'
/var/canvas/config/initializers/active_record.rb:789:in `block in find_in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/batches.rb:238:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/batches.rb:222:in `loop'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/batches.rb:222:in `in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/call_super.rb:16:in `call'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/call_super.rb:16:in `call_super'
/var/canvas/config/initializers/active_record.rb:803:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/relation.rb:104:in `activate'
/var/canvas/config/initializers/active_record.rb:803:in `in_batches'
/var/canvas/config/initializers/active_record.rb:788:in `find_in_batches'
/var/canvas/config/initializers/active_record.rb:767:in `find_each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/querying.rb:21:in `find_each'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:25:in `run'
/var/canvas/db/migrate/20201125173253_fill_custom_claim_columns_at_lit_resource_links.rb:24:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:831:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/usr/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:811:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/connection_pool_proxy.rb:15:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:810:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-3.1.2/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:624:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1002:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1310:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1363:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1309:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1629:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1281:in `block in migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1280:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1280:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1229:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:51:in `block in with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:67:in `block in with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/connection_pool_proxy.rb:15:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:67:in `with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:47:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1229:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1061:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1036:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/railties/databases.rake:84:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:88:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:88:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:88:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/database_server.rb:109:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:87:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:362:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:596:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:98:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:595:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:360:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:356:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:72:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/database_server.rb:109:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:69:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/guard_rail.rb:24:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-3.1.2/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:68:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:281:in `block in execute'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:281:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:281:in `execute'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:199:in `invoke_with_call_chain'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:188:in `invoke'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:160:in `invoke_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:116:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:116:in `block in top_level'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:125:in `run_with_threads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:110:in `top_level'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:83:in `block in run'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:186:in `standard_exception_handling'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:80:in `run'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/rake:23:in `load'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/rake:23:in `<main>'

Caused by:
ActiveRecord::RecordInvalid: Validation failed: Lookup uuid can't be blank, Resource link uuid can't be blank
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/validations.rb:80:in `raise_validation_error'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/validations.rb:53:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:318:in `block in save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:278:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:212:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:43:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/relation.rb:104:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:38:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:318:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/suppressor.rb:48:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:117:in `block in save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation.rb:407:in `block in scoping'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation.rb:787:in `_scoping'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation.rb:407:in `scoping'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:117:in `save!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/persistence.rb:635:in `block in update!'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:375:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/transaction.rb:280:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/transaction.rb:278:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:280:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:212:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/base.rb:51:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/transactions.rb:366:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/persistence.rb:633:in `update!'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:26:in `block in run'
/var/canvas/config/initializers/active_record.rb:768:in `block (2 levels) in find_each'
/var/canvas/config/initializers/active_record.rb:768:in `each'
/var/canvas/config/initializers/active_record.rb:768:in `block in find_each'
/var/canvas/config/initializers/active_record.rb:789:in `block in find_in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/batches.rb:238:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/batches.rb:222:in `loop'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/batches.rb:222:in `in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/call_super.rb:16:in `call'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/call_super.rb:16:in `call_super'
/var/canvas/config/initializers/active_record.rb:803:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/relation.rb:104:in `activate'
/var/canvas/config/initializers/active_record.rb:803:in `in_batches'
/var/canvas/config/initializers/active_record.rb:788:in `find_in_batches'
/var/canvas/config/initializers/active_record.rb:767:in `find_each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/querying.rb:21:in `find_each'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:25:in `run'
/var/canvas/db/migrate/20201125173253_fill_custom_claim_columns_at_lit_resource_links.rb:24:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:831:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/usr/lib/ruby/2.6.0/benchmark.rb:293:in `measure'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:811:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/connection_pool_proxy.rb:15:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:810:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-3.1.2/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:624:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1002:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1310:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1363:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1309:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1629:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1281:in `block in migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1280:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1280:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1229:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:51:in `block in with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:67:in `block in with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:471:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/connection_pool_proxy.rb:15:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:67:in `with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/migration.rb:47:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1229:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1061:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:1036:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/tasks/database_tasks.rb:238:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/railties/databases.rake:86:in `block (3 levels) in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/railties/databases.rake:84:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/railties/databases.rake:84:in `block (2 levels) in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:88:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:88:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:88:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/database_server.rb:109:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:87:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:362:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:596:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:98:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:595:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:360:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/app/models/switchman/shard.rb:356:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:72:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/database_server.rb:109:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:69:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/guard_rail.rb:24:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-3.1.2/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/tasks/switchman.rake:68:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:281:in `block in execute'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:281:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:281:in `execute'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:219:in `block in invoke_with_call_chain'
/usr/lib/ruby/2.6.0/monitor.rb:235:in `mon_synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:199:in `invoke_with_call_chain'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/task.rb:188:in `invoke'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:160:in `invoke_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:116:in `block (2 levels) in top_level'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:116:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:116:in `block in top_level'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:125:in `run_with_threads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:110:in `top_level'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:83:in `block in run'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:186:in `standard_exception_handling'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/lib/rake/application.rb:80:in `run'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/rake:23:in `load'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/rake:23:in `<main>'
Tasks: TOP => db:migrate

Any help will be greatly appreciated.

Cheers,
Ifechi

Andrey Gangan

unread,
Sep 5, 2021, 8:11:25 AM9/5/21
to Canvas LMS Users
did you make
RAILS_ENV=production bundle exec rake db:migrate:predeploy
first ?

воскресенье, 5 сентября 2021 г. в 02:12:41 UTC+3, Ifechi Okobi:

Ifechi Okobi

unread,
Sep 6, 2021, 9:40:04 AM9/6/21
to Canvas LMS Users
Yes I did and there was no error.

Weston Dransfield

unread,
Sep 7, 2021, 11:32:28 AM9/7/21
to Canvas LMS Users

@Ifechi Hey! I think I can help out here. My theory is that one of the tables in your database (lti_resource_links) got into a bad state. That particular table underwent some column renames that may have led to the issue.

To help determine the state our your DB, would you mind starting a rails console in the same environment where you are attempting to run migrations (`RAILS_ENV=<env> bundle exec rails c`) and then share the output of the following queries?

1. `Lti::ResourceLink.count`
2. `Lti::ResourceLink.last`
3. `Lti::ResourceLink.where(lookup_uuid: nil).count`
4. `Lti::ResourceLink.where(lookup_uuid: nil).last`
5. `Lti::ResourceLink.where(lookup_id: nil).count` (may produce an error)
6. `Lti::ResourceLink.where(lookup_id: nil).last` (may produce an error)

Weston Dransfield

unread,
Sep 8, 2021, 11:06:29 AM9/8/21
to Canvas LMS Users
Thanks for sending those query results over via email @Ifechi!

Those details confirm that the column rename for that table was applied before the problematic data-fixup migration was run.

I'll write a quick script that should help fix up the records in that table and allow you to run migrations successfully. I'll post it here when I've got it ready.

Thanks!

Weston Dransfield

unread,
Sep 8, 2021, 11:20:31 AM9/8/21
to Canvas LMS Users
Alright, here is a script that populates the columns required to satisfy the "not nil" constraint that was causing issues for you:

def assignment_scope
  Lti::ResourceLink.where(context_type: 'Assignment')
end

def other_scope
  Lti::ResourceLink.where.not(context_type: 'Assignment')
end

# Fill in lookup_uuid and resource_link_uuid for the
# given scope of Lti::ResourceLink records.
#
# If a value is already set in one of those columns, use it.
# Otherwise, generate a new one.
def fixup_uuids(scope, use_context_lti_id = false)
  scope.preload(:context).find_each do |rl|
    new_rl_uuid = use_context_lti_id ? rl.context.lti_context_id : SecureRandom.uuid

    rl.update!(
      lookup_uuid: rl.lookup_uuid || SecureRandom.uuid,
      resource_link_uuid: rl.resource_link_uuid || new_rl_uuid
    )
  end
end

# Begin Execution
fixup_uuids(assignment_scope)
fixup_uuids(other_scope)

I'm happy to answer any questions you have about what this is doing.

When you get a chance can you run this in the same Rails console and then try running migrations again? It's possible that a second error may pop up when you run migrations again. If so we can address that next.

Ifechi

unread,
Sep 8, 2021, 11:51:10 AM9/8/21
to Canvas LMS Users
Thanks a lot @weston.

I ran the script and attempted to run migrations again.

Got a different error.

1: production:public
==  FillCustomClaimColumnsAtLitResourceLinks: migrating =======================
rake aborted!
StandardError: An error has occurred, all later migrations canceled:

PG::UndefinedColumn: ERROR:  column lti_resource_links.resource_link_id does not exist
LINE 1: ..."assignments" WHERE (assignments.lti_context_id = lti_resour...
                                                             ^
HINT:  Perhaps you meant to reference the column "lti_resource_links.resource_link_uuid".
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:674:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:728:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:727:in `block in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/sharded_instrumenter.rb:22:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/abstract_adapter.rb:39:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:673:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:654:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:111:in `exec_delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:174:in `update'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `update'
/var/canvas/config/initializers/active_record.rb:1412:in `update_all'
/var/canvas/config/initializers/active_record.rb:1457:in `update_all'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:48:in `update_context!'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:22:in `run'
/var/canvas/db/migrate/20201125173253_fill_custom_claim_columns_at_lit_resource_links.rb:24:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:831:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'

Caused by:
ActiveRecord::StatementInvalid: PG::UndefinedColumn: ERROR:  column lti_resource_links.resource_link_id does not exist
LINE 1: ..."assignments" WHERE (assignments.lti_context_id = lti_resour...
                                                             ^
HINT:  Perhaps you meant to reference the column "lti_resource_links.resource_link_uuid".
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:674:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:728:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:727:in `block in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/sharded_instrumenter.rb:22:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/abstract_adapter.rb:39:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:673:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:654:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:111:in `exec_delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:174:in `update'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `update'
/var/canvas/config/initializers/active_record.rb:1412:in `update_all'
/var/canvas/config/initializers/active_record.rb:1457:in `update_all'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:48:in `update_context!'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:22:in `run'
/var/canvas/db/migrate/20201125173253_fill_custom_claim_columns_at_lit_resource_links.rb:24:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:831:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'

Caused by:
PG::UndefinedColumn: ERROR:  column lti_resource_links.resource_link_id does not exist
LINE 1: ..."assignments" WHERE (assignments.lti_context_id = lti_resour...
                                                             ^
HINT:  Perhaps you meant to reference the column "lti_resource_links.resource_link_uuid".
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:675:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:674:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:728:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:727:in `block in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-6.0.4/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/sharded_instrumenter.rb:22:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract_adapter.rb:718:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.2.1/lib/switchman/active_record/abstract_adapter.rb:39:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:673:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:654:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:111:in `exec_delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/database_statements.rb:174:in `update'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `update'
/var/canvas/config/initializers/active_record.rb:1412:in `update_all'
/var/canvas/config/initializers/active_record.rb:1457:in `update_all'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:48:in `update_context!'
/var/canvas/lib/data_fixup/lti/fill_custom_claim_columns_for_resource_link.rb:22:in `run'
/var/canvas/db/migrate/20201125173253_fill_custom_claim_columns_at_lit_resource_links.rb:24:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:831:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-6.0.4/lib/active_record/migration.rb:812:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:migrate

Weston Dransfield

unread,
Sep 8, 2021, 2:31:03 PM9/8/21
to Canvas LMS Users
I'll reach out via email to chat about some options specific to your situation here. I'll update this thread with the solution we decide on.

Andrey Gangan

unread,
Apr 9, 2022, 1:49:01 PM4/9/22
to Canvas LMS Users
we'll wait
I get same error with ruby2.6 and canvas release/2021-06-23.34

среда, 8 сентября 2021 г. в 21:31:03 UTC+3, wdran...@instructure.com:
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted

Andrey Gangan

unread,
Apr 11, 2022, 6:54:04 AM4/11/22
to Canvas LMS Users
It happens due to during migration 1 script was not run in due moment.
just run in console 
DataFixup::Lti::FillLookupUuidAndResourceLinkUuidColumns.run

it will fill in lookup_uuid and resource_link_uuid columns with correct data


воскресенье, 5 сентября 2021 г. в 02:12:41 UTC+3, Ifechi:
Reply all
Reply to author
Forward
0 new messages