instructure / canvas-lms

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

UniqueViolation duplicate key error db:migrate GranularManageLtiPermissions #2068

Open svgit1 opened 2 years ago

svgit1 commented 2 years ago

Summary:

We're updating our Canvas from canvas-lms/prod 2021-10-13 to latest and running into a migration error for GranularManageLtiPermissions.

Steps to reproduce:

  1. Upgrading from canvas-lms/prod 2021-10-13 to latest canvas-lms/prod.
  2. Running db:migrate results in an error for GranularManageLtiPermissions

Any ideas why we're encountering these perm/role issues? Can we safely comment out this file and proceed? What's the best way to determine in the roles table this perm already exists for all our roles? Thanks!

We don't see the "manage_lti_add" permission in our role_overrides table for any overrides (only "lti_add_edit"). For example, override for role_id 35 is the one throwing the error:

"id","permission","enabled","locked","context_id","context_type","created_at","updated_at","applies_to_self","applies_to_descendants","role_id","root_account_id"
1173,"lti_add_edit","false","false",1,"Account","11/10/2021 00:02:28","11/10/2021 00:02:28","true","true",35,1

Behavior

==  GranularManageLtiPermissions: migrating ===================================
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:

PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_role_overrides_on_context_role_permission"
DETAIL:  Key (context_id, context_type, role_id, permission)=(1, Account, 35, manage_lti_add) already exists.
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/sharded_instrumenter.rb:22:in `instrument'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/abstract_adapter.rb:37:in `log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:670:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:53:in `exec_query'
/var/canvas/config/initializers/postgresql_adapter.rb:351:in `exec_query'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `exec_insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:91:in `exec_insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:171:in `insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:375:in `_insert_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:929:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/counter_cache.rb:166:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/locking/optimistic.rb:79:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/attribute_methods/dirty.rb:201:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:461:in `block in _create_record'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:151:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/callbacks.rb:824:in `_run_create_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:461:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/timestamp.rb:108:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:900:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:457:in `block in create_or_update'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:185:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/callbacks.rb:824:in `_run_save_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:457:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/timestamp.rb:126:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:507:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/validations.rb:53:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:302:in `block in save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:185:in `block (2 levels) in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:185:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:62:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:474:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:183:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:302:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/suppressor.rb:48:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:160:in `save!'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:46:in `block (2 levels) in run'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:39:in `each'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:39:in `block in run'
/var/canvas/config/initializers/active_record.rb:804:in `block in find_in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:229:in `loop'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/call_super.rb:16:in `call'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/call_super.rb:16:in `call_super'
/var/canvas/config/initializers/active_record.rb:827:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/relation.rb:110:in `activate'
/var/canvas/config/initializers/active_record.rb:827:in `in_batches'
/var/canvas/config/initializers/active_record.rb:803:in `find_in_batches'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:35:in `run'
/var/canvas/db/migrate/20210924171639_granular_manage_lti_permissions.rb:24:in `change'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:867:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:851:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:850:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:849:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-4.0.6/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:663:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1037:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1329:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1380:in `block in ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
/var/canvas/config/initializers/active_record.rb:2235:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/config/initializers/active_record.rb:2233:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:209:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:33:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:33:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1380:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1328:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1701:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1302:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1302:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1251:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1401:in `block in with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/migration.rb:38:in `block in with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/migration.rb:38:in `with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1397:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1251:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1086:in `up'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1061:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/tasks/database_tasks.rb:237:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:8:in `block in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:83:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:206:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:62:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:474:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:205:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:201:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:79:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:77:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/guardrail-3.0.2/lib/guard_rail.rb:11:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_handling.rb:388:in `with_role_and_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_handling.rb:175:in `connected_to'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/guardrail-3.0.2/lib/guard_rail.rb:11:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/guard_rail.rb:13:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-4.0.6/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:76:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/sentry-ruby-core-5.1.0/lib/sentry/rake.rb:26:in `execute'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'

Caused by:
ActiveRecord::RecordNotUnique: PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_role_overrides_on_context_role_permission"
DETAIL:  Key (context_id, context_type, role_id, permission)=(1, Account, 35, manage_lti_add) already exists.
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/sharded_instrumenter.rb:22:in `instrument'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/abstract_adapter.rb:37:in `log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:670:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:53:in `exec_query'
/var/canvas/config/initializers/postgresql_adapter.rb:351:in `exec_query'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `exec_insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:91:in `exec_insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:171:in `insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:375:in `_insert_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:929:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/counter_cache.rb:166:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/locking/optimistic.rb:79:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/attribute_methods/dirty.rb:201:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:461:in `block in _create_record'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:151:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/callbacks.rb:824:in `_run_create_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:461:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/timestamp.rb:108:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:900:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:457:in `block in create_or_update'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:185:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/callbacks.rb:824:in `_run_save_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:457:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/timestamp.rb:126:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:507:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/validations.rb:53:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:302:in `block in save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:185:in `block (2 levels) in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:185:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:62:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:474:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:183:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:302:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/suppressor.rb:48:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:160:in `save!'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:46:in `block (2 levels) in run'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:39:in `each'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:39:in `block in run'
/var/canvas/config/initializers/active_record.rb:804:in `block in find_in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:229:in `loop'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/call_super.rb:16:in `call'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/call_super.rb:16:in `call_super'
/var/canvas/config/initializers/active_record.rb:827:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/relation.rb:110:in `activate'
/var/canvas/config/initializers/active_record.rb:827:in `in_batches'
/var/canvas/config/initializers/active_record.rb:803:in `find_in_batches'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:35:in `run'
/var/canvas/db/migrate/20210924171639_granular_manage_lti_permissions.rb:24:in `change'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:867:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:851:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:850:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:849:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-4.0.6/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:663:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1037:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1329:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1380:in `block in ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
/var/canvas/config/initializers/active_record.rb:2235:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/config/initializers/active_record.rb:2233:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:209:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:33:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:33:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1380:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1328:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1701:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1302:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1302:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1251:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1401:in `block in with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/migration.rb:38:in `block in with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/migration.rb:38:in `with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1397:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1251:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1086:in `up'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1061:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/tasks/database_tasks.rb:237:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:8:in `block in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:83:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:206:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:62:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:474:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:205:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:201:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:79:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:77:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/guardrail-3.0.2/lib/guard_rail.rb:11:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_handling.rb:388:in `with_role_and_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_handling.rb:175:in `connected_to'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/guardrail-3.0.2/lib/guard_rail.rb:11:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/guard_rail.rb:13:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-4.0.6/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:76:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/sentry-ruby-core-5.1.0/lib/sentry/rake.rb:26:in `execute'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'

Caused by:
PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_role_overrides_on_context_role_permission"
DETAIL:  Key (context_id, context_type, role_id, permission)=(1, Account, 35, manage_lti_add) already exists.
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:672:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:696:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:695:in `block in log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/notifications/instrumenter.rb:24:in `instrument'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/sharded_instrumenter.rb:22:in `instrument'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract_adapter.rb:687:in `log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/abstract_adapter.rb:37:in `log'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:670:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql_adapter.rb:649:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:53:in `exec_query'
/var/canvas/config/initializers/postgresql_adapter.rb:351:in `exec_query'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:136:in `exec_insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/postgresql/database_statements.rb:91:in `exec_insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:171:in `insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/query_cache.rb:22:in `insert'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:375:in `_insert_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:929:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/counter_cache.rb:166:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/locking/optimistic.rb:79:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/attribute_methods/dirty.rb:201:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:461:in `block in _create_record'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:151:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/callbacks.rb:824:in `_run_create_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:461:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/timestamp.rb:108:in `_create_record'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:900:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:457:in `block in create_or_update'
/var/canvas/gems/activesupport-suspend_callbacks/lib/active_support/callbacks/suspension.rb:185:in `run_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/callbacks.rb:824:in `_run_save_callbacks'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/callbacks.rb:457:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/timestamp.rb:126:in `create_or_update'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/persistence.rb:507:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/validations.rb:53:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:302:in `block in save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:354:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:318:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:350:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:185:in `block (2 levels) in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:185:in `block in with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:62:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:474:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:183:in `with_transaction_returning_status'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:302:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/suppressor.rb:48:in `save!'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:160:in `save!'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:46:in `block (2 levels) in run'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:39:in `each'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:39:in `block in run'
/var/canvas/config/initializers/active_record.rb:804:in `block in find_in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:245:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:229:in `loop'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/batches.rb:229:in `in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/call_super.rb:16:in `call'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/call_super.rb:16:in `call_super'
/var/canvas/config/initializers/active_record.rb:827:in `block in in_batches'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/relation.rb:110:in `activate'
/var/canvas/config/initializers/active_record.rb:827:in `in_batches'
/var/canvas/config/initializers/active_record.rb:803:in `find_in_batches'
/var/canvas/lib/data_fixup/add_role_overrides_for_new_permission.rb:35:in `run'
/var/canvas/db/migrate/20210924171639_granular_manage_lti_permissions.rb:24:in `change'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:867:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:851:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:850:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:849:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-4.0.6/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:663:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1037:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1329:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1380:in `block in ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `block in transaction'
/var/canvas/config/initializers/active_record.rb:2235:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:26:in `block (2 levels) in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:25:in `block in synchronize'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `handle_interrupt'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activesupport-6.1.4.6/lib/active_support/concurrency/load_interlock_aware_monitor.rb:21:in `synchronize'
/var/canvas/config/initializers/active_record.rb:2233:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/database_statements.rb:320:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/transactions.rb:209:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:33:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/base.rb:33:in `transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1380:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1328:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1701:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1302:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1302:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1251:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1401:in `block in with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/migration.rb:38:in `block in with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_adapters/abstract/connection_pool.rb:462:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/active_record/migration.rb:38:in `with_advisory_lock_connection'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1397:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1251:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1086:in `up'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/migration.rb:1061:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/tasks/database_tasks.rb:237:in `migrate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:8:in `block in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:84:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:83:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:206:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:62:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:474:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:205:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/relation/delegation.rb:88:in `each'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/shard.rb:201:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:79:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/database_server.rb:153:in `unguard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:77:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/guardrail-3.0.2/lib/guard_rail.rb:11:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_handling.rb:388:in `with_role_and_shard'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/activerecord-6.1.4.6/lib/active_record/connection_handling.rb:175:in `connected_to'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/guardrail-3.0.2/lib/guard_rail.rb:11:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/switchman/guard_rail.rb:13:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-inst-jobs-4.0.6/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/switchman-3.0.24/lib/tasks/switchman.rake:76:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/sentry-ruby-core-5.1.0/lib/sentry/rake.rb:26:in `execute'
/var/canvas/vendor/bundle/ruby/2.7.0/gems/rake-13.0.3/exe/rake:27:in `<top (required)>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)