instructure / canvas-lms

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

October 2020 stable release db migration fails #1737

Open danielblignaut opened 3 years ago

danielblignaut commented 3 years ago

Summary:

ubuntu@ip-10-0-0-222:/var/canvas$ RAILS_ENV=production $GEM_HOME/bin/bundle exec rake db:migrate
/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
1: production:public
==  SetPostingNotificationFrequency: migrating ================================
==  SetPostingNotificationFrequency: migrated (0.0338s) =======================

==  AddContextIndexToContentExports: migrating ================================
-- add_index(:content_exports, [:context_id, :context_type], {:algorithm=>:concurrently})
   -> 0.0083s
==  AddContextIndexToContentExports: migrated (0.0084s) =======================

==  GranularWikiPagePermissions: migrating ====================================
==  GranularWikiPagePermissions: migrated (0.3003s) ===========================

==  AddBlueprintDeletionIndexes: migrating ====================================
-- add_index(:attachments, [:context_id, :context_type, :migration_id], {:opclass=>{:migration_id=>:text_pattern_ops}, :where=>"migration_id IS NOT NULL", :algorithm=>:concurrently, :name=>"index_attachments_on_context_and_migration_id_pattern_ops"})
   -> 0.0153s
-- add_index(:master_courses_child_content_tags, [:child_subscription_id, :migration_id], {:opclass=>{:migration_id=>:text_pattern_ops}, :algorithm=>:concurrently, :name=>"index_mc_child_content_tags_on_sub_and_migration_id_pattern_ops"})
   -> 0.0064s
==  AddBlueprintDeletionIndexes: migrated (0.0219s) ===========================

==  SplitUpUserPreferences: migrating =========================================
==  SplitUpUserPreferences: migrated (0.0210s) ================================

==  AddGradedOrExcusedIndexToSubmissions: migrating ===========================
-- add_index(:submissions, :assignment_id, {:algorithm=>:concurrently, :where=>"workflow_state <> 'deleted' AND ((score IS NOT NULL AND workflow_state = 'graded') OR excused = TRUE)", :name=>"index_submissions_graded_or_excused_on_assignment_id"})
   -> 0.0063s
==  AddGradedOrExcusedIndexToSubmissions: migrated (0.0064s) ==================

==  AddCachedDueDateIndexOnSubmissions: migrating =============================
-- add_index(:submissions, [:user_id, :cached_due_date], {:algorithm=>:concurrently})
   -> 0.0060s
==  AddCachedDueDateIndexOnSubmissions: migrated (0.0061s) ====================

==  AddPendingDelayedMessagesIndex: migrating =================================
-- add_index(:delayed_messages, [:send_at], {:where=>"workflow_state = 'pending'", :name=>"index_delayed_messages_pending", :algorithm=>:concurrently})
   -> 0.0054s
==  AddPendingDelayedMessagesIndex: migrated (0.0055s) ========================

==  BackfillCovidHelpLink: migrating ==========================================
==  BackfillCovidHelpLink: migrated (0.0063s) =================================

==  CopyBigBlueButtonSettings: migrating ======================================
==  CopyBigBlueButtonSettings: migrated (0.0243s) =============================

==  AddBetterUserPreferenceValueIndex: migrating ==============================
-- add_index(:user_preference_values, [:user_id, :key], {:unique=>true, :where=>"sub_key IS NULL", :name=>"index_user_preference_values_on_key_no_sub_key", :algorithm=>:concurrently})
   -> 0.0057s
==  AddBetterUserPreferenceValueIndex: migrated (0.0156s) =====================

==  AddActiveContentTagsIndex: migrating ======================================
-- add_index(:content_tags, [:context_id, :context_type, :content_type], {:where=>"workflow_state = 'active'", :name=>"index_content_tags_on_context_when_active", :algorithm=>:concurrently})
   -> 0.0099s
==  AddActiveContentTagsIndex: migrated (0.0100s) =============================

==  AddActiveEnrollmentsIndex: migrating ======================================
-- add_index(:enrollments, [:course_id], {:where=>"workflow_state = 'active'", :name=>"index_enrollments_on_course_when_active", :algorithm=>:concurrently})
   -> 0.0063s
==  AddActiveEnrollmentsIndex: migrated (0.0064s) =============================

==  AddIdToGetDelayedJobsIndex: migrating =====================================
-- rename_index(:delayed_jobs, "get_delayed_jobs_index", "get_delayed_jobs_index_old")
   -> 0.0011s
-- add_index(:delayed_jobs, [:priority, :run_at, :id], {:algorithm=>:concurrently, :where=>"queue = 'canvas_queue' AND locked_at IS NULL AND next_in_strand", :name=>"get_delayed_jobs_index"})
   -> 0.0063s
-- remove_index(:delayed_jobs, {:name=>"get_delayed_jobs_index_old"})
   -> 0.0015s
==  AddIdToGetDelayedJobsIndex: migrated (0.0099s) ============================

==  AddIndexOnSectionToEnrollments: migrating =================================
-- add_index(:enrollments, [:course_section_id, :id], {:algorithm=>:concurrently})
   -> 0.0056s
==  AddIndexOnSectionToEnrollments: migrated (0.0057s) ========================

==  PopulateCourseIdOnSubmissions: migrating ==================================
==  PopulateCourseIdOnSubmissions: migrated (0.0214s) =========================

==  RunUpdateCourseScoreStatistic: migrating ==================================
==  RunUpdateCourseScoreStatistic: migrated (0.0208s) =========================

==  AddUniqueIndexToNotificationEndpoint: migrating ===========================
-- remove_index(:notification_endpoints, {:column=>[:access_token_id, :arn], :if_exists=>true})
   -> 0.0023s
-- add_index(:notification_endpoints, [:access_token_id, :arn], {:algorithm=>:concurrently, :where=>"workflow_state='active'", :unique=>true, :if_not_exists=>true})
   -> 0.0096s
==  AddUniqueIndexToNotificationEndpoint: migrated (0.2985s) ==================

==  DropEnrollmentSectionIndex: migrating =====================================
-- remove_index(:enrollments, [:course_section_id])
   -> 0.0098s
==  DropEnrollmentSectionIndex: migrated (0.0099s) ============================

==  AddMissingFkIndexes: migrating ============================================
-- add_index(:master_courses_migration_results, :content_migration_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
-- add_index(:gradebook_csvs, :progress_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
==  AddMissingFkIndexes: migrated (0.0109s) ===================================

==  UniquifyAuditorUuidIndexes: migrating =====================================
-- add_index(:auditor_authentication_records, :uuid, {:name=>"index_auth_audits_on_unique_uuid", :unique=>true, :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:auditor_course_records, :uuid, {:name=>"index_course_audits_on_unique_uuid", :unique=>true, :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:auditor_grade_change_records, :uuid, {:name=>"index_grade_audits_on_unique_uuid", :unique=>true, :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- remove_index(:auditor_authentication_records, {:name=>"index_auditor_authentication_records_on_uuid", :if_exists=>true})
   -> 0.0013s
-- remove_index(:auditor_course_records, {:name=>"index_auditor_course_records_on_uuid", :if_exists=>true})
   -> 0.0012s
-- remove_index(:auditor_grade_change_records, {:name=>"index_auditor_grade_change_records_on_uuid", :if_exists=>true})
   -> 0.0011s
==  UniquifyAuditorUuidIndexes: migrated (0.0194s) ============================

==  DropSubmissionContextCode: migrating ======================================
-- remove_column(:submissions, :context_code, :string)
   -> 0.0017s
==  DropSubmissionContextCode: migrated (0.0018s) =============================

==  AddMissingFkIndexes2: migrating ===========================================
-- add_index(:assignments, :migrate_from_id, {:where=>"migrate_from_id IS NOT NULL", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0060s
-- add_index(:anonymous_or_moderation_events, :quiz_id, {:where=>"quiz_id IS NOT NULL", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0054s
-- add_index(:viewed_submission_comments, :submission_comment_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0062s
==  AddMissingFkIndexes2: migrated (0.0178s) ==================================

==  AddMissingFkIndexes3: migrating ===========================================
-- add_index(:content_migrations, :child_subscription_id, {:where=>"child_subscription_id IS NOT NULL", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0067s
-- add_index(:master_courses_migration_results, :child_subscription_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0076s
-- add_index(:master_courses_master_templates, :active_migration_id, {:where=>"active_migration_id IS NOT NULL", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:master_courses_master_content_tags, :current_migration_id, {:name=>"index_master_content_tags_on_current_migration_id", :where=>"current_migration_id IS NOT NULL", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
-- add_index(:assignments, :group_category_id, {:where=>"group_category_id IS NOT NULL", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
-- add_index(:discussion_topics, :group_category_id, {:where=>"group_category_id IS NOT NULL", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0056s
==  AddMissingFkIndexes3: migrated (0.0364s) ==================================

==  AddRootAccountIdIndexToSubmissions: migrating =============================
-- add_index(:submissions, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0056s
==  AddRootAccountIdIndexToSubmissions: migrated (0.0056s) ====================

==  AddIdToUsersSortableNameIndex: migrating ==================================
-- rename_index(:users, :index_users_on_sortable_name, :index_users_on_sortable_name_old)
   -> 0.0018s
-- execute("CREATE INDEX CONCURRENTLY index_users_on_sortable_name ON \"public\".\"users\" (CAST(LOWER(replace(sortable_name, '\\', '\\\\')) AS bytea), id)")
   -> 0.0051s
-- remove_index(:users, {:name=>:index_users_on_sortable_name_old, :if_exists=>true})
   -> 0.0028s
==  AddIdToUsersSortableNameIndex: migrated (0.0122s) =========================

==  BackfillWorkflowStateOnSubmissionComments: migrating ======================
-- change_column_null(:submission_comments, :workflow_state, false)
   -> 0.0027s
==  BackfillWorkflowStateOnSubmissionComments: migrated (0.0212s) =============

==  MakeExistingPronounFieldsSticky: migrating ================================
==  MakeExistingPronounFieldsSticky: migrated (0.0024s) =======================

==  CascasdeUniqueAuditorIndexesToAuthPartitions: migrating ===================
-- index_exists?("auditor_authentication_records_2020_10", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_10_on_uuid"})
   -> 0.0026s
-- rename_index("auditor_authentication_records_2020_10", "auditor_authentication_records_2020_10_uuid_idx", "auditor_authentication_records_2020_10_nonunique_uuid_idx")
   -> 0.0012s
-- add_index("auditor_authentication_records_2020_10", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_authentication_records_2020_10", {:name=>"auditor_authentication_records_2020_10_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_authentication_records_2020_11", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_11_on_uuid"})
   -> 0.0025s
-- rename_index("auditor_authentication_records_2020_11", "auditor_authentication_records_2020_11_uuid_idx", "auditor_authentication_records_2020_11_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2020_11", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_authentication_records_2020_11", {:name=>"auditor_authentication_records_2020_11_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_authentication_records_2020_9", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_9_on_uuid"})
   -> 0.0025s
-- rename_index("auditor_authentication_records_2020_9", "auditor_authentication_records_2020_9_uuid_idx", "auditor_authentication_records_2020_9_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_authentication_records_2020_9", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_authentication_records_2020_9", {:name=>"auditor_authentication_records_2020_9_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2020_8", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_8_on_uuid"})
   -> 0.0025s
-- rename_index("auditor_authentication_records_2020_8", "auditor_authentication_records_2020_8_uuid_idx", "auditor_authentication_records_2020_8_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2020_8", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0055s
-- remove_index("auditor_authentication_records_2020_8", {:name=>"auditor_authentication_records_2020_8_nonunique_uuid_idx"})
   -> 0.0014s
-- index_exists?("auditor_authentication_records_2020_7", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_7_on_uuid"})
   -> 0.0025s
-- rename_index("auditor_authentication_records_2020_7", "auditor_authentication_records_2020_7_uuid_idx", "auditor_authentication_records_2020_7_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2020_7", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_authentication_records_2020_7", {:name=>"auditor_authentication_records_2020_7_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2020_6", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_6_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2020_6", "auditor_authentication_records_2020_6_uuid_idx", "auditor_authentication_records_2020_6_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_authentication_records_2020_6", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0053s
-- remove_index("auditor_authentication_records_2020_6", {:name=>"auditor_authentication_records_2020_6_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2020_5", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_5_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2020_5", "auditor_authentication_records_2020_5_uuid_idx", "auditor_authentication_records_2020_5_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2020_5", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_authentication_records_2020_5", {:name=>"auditor_authentication_records_2020_5_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2020_4", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_4_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2020_4", "auditor_authentication_records_2020_4_uuid_idx", "auditor_authentication_records_2020_4_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_authentication_records_2020_4", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_authentication_records_2020_4", {:name=>"auditor_authentication_records_2020_4_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2020_3", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_3_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2020_3", "auditor_authentication_records_2020_3_uuid_idx", "auditor_authentication_records_2020_3_nonunique_uuid_idx")
   -> 0.0012s
-- add_index("auditor_authentication_records_2020_3", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0051s
-- remove_index("auditor_authentication_records_2020_3", {:name=>"auditor_authentication_records_2020_3_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_authentication_records_2020_2", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_2_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2020_2", "auditor_authentication_records_2020_2_uuid_idx", "auditor_authentication_records_2020_2_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2020_2", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_authentication_records_2020_2", {:name=>"auditor_authentication_records_2020_2_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_authentication_records_2020_1", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2020_1_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2020_1", "auditor_authentication_records_2020_1_uuid_idx", "auditor_authentication_records_2020_1_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2020_1", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_authentication_records_2020_1", {:name=>"auditor_authentication_records_2020_1_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2019_12", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2019_12_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2019_12", "auditor_authentication_records_2019_12_uuid_idx", "auditor_authentication_records_2019_12_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2019_12", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0056s
-- remove_index("auditor_authentication_records_2019_12", {:name=>"auditor_authentication_records_2019_12_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2019_11", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2019_11_on_uuid"})
   -> 0.0025s
-- rename_index("auditor_authentication_records_2019_11", "auditor_authentication_records_2019_11_uuid_idx", "auditor_authentication_records_2019_11_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2019_11", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0053s
-- remove_index("auditor_authentication_records_2019_11", {:name=>"auditor_authentication_records_2019_11_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2019_10", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2019_10_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2019_10", "auditor_authentication_records_2019_10_uuid_idx", "auditor_authentication_records_2019_10_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_authentication_records_2019_10", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0055s
-- remove_index("auditor_authentication_records_2019_10", {:name=>"auditor_authentication_records_2019_10_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_authentication_records_2019_9", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2019_9_on_uuid"})
   -> 0.0024s
-- rename_index("auditor_authentication_records_2019_9", "auditor_authentication_records_2019_9_uuid_idx", "auditor_authentication_records_2019_9_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2019_9", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0056s
-- remove_index("auditor_authentication_records_2019_9", {:name=>"auditor_authentication_records_2019_9_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_authentication_records_2019_8", :uuid, {:unique=>true, :name=>"index_auditor_authentication_records_2019_8_on_uuid"})
   -> 0.0025s
-- rename_index("auditor_authentication_records_2019_8", "auditor_authentication_records_2019_8_uuid_idx", "auditor_authentication_records_2019_8_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_authentication_records_2019_8", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_authentication_records_2019_8", {:name=>"auditor_authentication_records_2019_8_nonunique_uuid_idx"})
   -> 0.0013s
==  CascasdeUniqueAuditorIndexesToAuthPartitions: migrated (0.1821s) ==========

==  CascasdeUniqueAuditorIndexesToCoursePartitions: migrating =================
-- index_exists?("auditor_course_records_2020_10", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_10_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_10", "auditor_course_records_2020_10_uuid_idx", "auditor_course_records_2020_10_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2020_10", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0057s
-- remove_index("auditor_course_records_2020_10", {:name=>"auditor_course_records_2020_10_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2020_11", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_11_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_11", "auditor_course_records_2020_11_uuid_idx", "auditor_course_records_2020_11_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2020_11", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_course_records_2020_11", {:name=>"auditor_course_records_2020_11_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2020_9", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_9_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_9", "auditor_course_records_2020_9_uuid_idx", "auditor_course_records_2020_9_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2020_9", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_course_records_2020_9", {:name=>"auditor_course_records_2020_9_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2020_8", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_8_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_8", "auditor_course_records_2020_8_uuid_idx", "auditor_course_records_2020_8_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2020_8", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0056s
-- remove_index("auditor_course_records_2020_8", {:name=>"auditor_course_records_2020_8_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2020_7", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_7_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_7", "auditor_course_records_2020_7_uuid_idx", "auditor_course_records_2020_7_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2020_7", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_course_records_2020_7", {:name=>"auditor_course_records_2020_7_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_course_records_2020_6", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_6_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_6", "auditor_course_records_2020_6_uuid_idx", "auditor_course_records_2020_6_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2020_6", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_course_records_2020_6", {:name=>"auditor_course_records_2020_6_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2020_5", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_5_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_5", "auditor_course_records_2020_5_uuid_idx", "auditor_course_records_2020_5_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2020_5", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0053s
-- remove_index("auditor_course_records_2020_5", {:name=>"auditor_course_records_2020_5_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2020_4", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_4_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_4", "auditor_course_records_2020_4_uuid_idx", "auditor_course_records_2020_4_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2020_4", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_course_records_2020_4", {:name=>"auditor_course_records_2020_4_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2020_3", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_3_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2020_3", "auditor_course_records_2020_3_uuid_idx", "auditor_course_records_2020_3_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2020_3", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_course_records_2020_3", {:name=>"auditor_course_records_2020_3_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_course_records_2020_2", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_2_on_uuid"})
   -> 0.0022s
-- rename_index("auditor_course_records_2020_2", "auditor_course_records_2020_2_uuid_idx", "auditor_course_records_2020_2_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2020_2", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0056s
-- remove_index("auditor_course_records_2020_2", {:name=>"auditor_course_records_2020_2_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_course_records_2020_1", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2020_1_on_uuid"})
   -> 0.0022s
-- rename_index("auditor_course_records_2020_1", "auditor_course_records_2020_1_uuid_idx", "auditor_course_records_2020_1_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2020_1", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0053s
-- remove_index("auditor_course_records_2020_1", {:name=>"auditor_course_records_2020_1_nonunique_uuid_idx"})
   -> 0.0014s
-- index_exists?("auditor_course_records_2019_12", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2019_12_on_uuid"})
   -> 0.0020s
-- rename_index("auditor_course_records_2019_12", "auditor_course_records_2019_12_uuid_idx", "auditor_course_records_2019_12_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2019_12", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0053s
-- remove_index("auditor_course_records_2019_12", {:name=>"auditor_course_records_2019_12_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_course_records_2019_11", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2019_11_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2019_11", "auditor_course_records_2019_11_uuid_idx", "auditor_course_records_2019_11_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2019_11", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_course_records_2019_11", {:name=>"auditor_course_records_2019_11_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2019_10", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2019_10_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2019_10", "auditor_course_records_2019_10_uuid_idx", "auditor_course_records_2019_10_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_course_records_2019_10", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0051s
-- remove_index("auditor_course_records_2019_10", {:name=>"auditor_course_records_2019_10_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2019_9", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2019_9_on_uuid"})
   -> 0.0022s
-- rename_index("auditor_course_records_2019_9", "auditor_course_records_2019_9_uuid_idx", "auditor_course_records_2019_9_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2019_9", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0051s
-- remove_index("auditor_course_records_2019_9", {:name=>"auditor_course_records_2019_9_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_course_records_2019_8", :uuid, {:unique=>true, :name=>"index_auditor_course_records_2019_8_on_uuid"})
   -> 0.0021s
-- rename_index("auditor_course_records_2019_8", "auditor_course_records_2019_8_uuid_idx", "auditor_course_records_2019_8_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_course_records_2019_8", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0055s
-- remove_index("auditor_course_records_2019_8", {:name=>"auditor_course_records_2019_8_nonunique_uuid_idx"})
   -> 0.0012s
==  CascasdeUniqueAuditorIndexesToCoursePartitions: migrated (0.1750s) ========

==  CascasdeUniqueAuditorIndexesToGradePartitions: migrating ==================
-- index_exists?("auditor_grade_change_records_2020_10", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_10_on_uuid"})
   -> 0.0039s
-- rename_index("auditor_grade_change_records_2020_10", "auditor_grade_change_records_2020_10_uuid_idx", "auditor_grade_change_records_2020_10_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2020_10", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0055s
-- remove_index("auditor_grade_change_records_2020_10", {:name=>"auditor_grade_change_records_2020_10_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2020_11", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_11_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2020_11", "auditor_grade_change_records_2020_11_uuid_idx", "auditor_grade_change_records_2020_11_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_grade_change_records_2020_11", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_grade_change_records_2020_11", {:name=>"auditor_grade_change_records_2020_11_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2020_9", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_9_on_uuid"})
   -> 0.0036s
-- rename_index("auditor_grade_change_records_2020_9", "auditor_grade_change_records_2020_9_uuid_idx", "auditor_grade_change_records_2020_9_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_grade_change_records_2020_9", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2020_9", {:name=>"auditor_grade_change_records_2020_9_nonunique_uuid_idx"})
   -> 0.0014s
-- index_exists?("auditor_grade_change_records_2020_8", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_8_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2020_8", "auditor_grade_change_records_2020_8_uuid_idx", "auditor_grade_change_records_2020_8_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2020_8", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2020_8", {:name=>"auditor_grade_change_records_2020_8_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2020_7", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_7_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2020_7", "auditor_grade_change_records_2020_7_uuid_idx", "auditor_grade_change_records_2020_7_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2020_7", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0053s
-- remove_index("auditor_grade_change_records_2020_7", {:name=>"auditor_grade_change_records_2020_7_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2020_6", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_6_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2020_6", "auditor_grade_change_records_2020_6_uuid_idx", "auditor_grade_change_records_2020_6_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2020_6", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_grade_change_records_2020_6", {:name=>"auditor_grade_change_records_2020_6_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_grade_change_records_2020_5", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_5_on_uuid"})
   -> 0.0038s
-- rename_index("auditor_grade_change_records_2020_5", "auditor_grade_change_records_2020_5_uuid_idx", "auditor_grade_change_records_2020_5_nonunique_uuid_idx")
   -> 0.0013s
-- add_index("auditor_grade_change_records_2020_5", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2020_5", {:name=>"auditor_grade_change_records_2020_5_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_grade_change_records_2020_4", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_4_on_uuid"})
   -> 0.0039s
-- rename_index("auditor_grade_change_records_2020_4", "auditor_grade_change_records_2020_4_uuid_idx", "auditor_grade_change_records_2020_4_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2020_4", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2020_4", {:name=>"auditor_grade_change_records_2020_4_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2020_3", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_3_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2020_3", "auditor_grade_change_records_2020_3_uuid_idx", "auditor_grade_change_records_2020_3_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2020_3", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2020_3", {:name=>"auditor_grade_change_records_2020_3_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2020_2", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_2_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2020_2", "auditor_grade_change_records_2020_2_uuid_idx", "auditor_grade_change_records_2020_2_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_grade_change_records_2020_2", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0055s
-- remove_index("auditor_grade_change_records_2020_2", {:name=>"auditor_grade_change_records_2020_2_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_grade_change_records_2020_1", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2020_1_on_uuid"})
   -> 0.0039s
-- rename_index("auditor_grade_change_records_2020_1", "auditor_grade_change_records_2020_1_uuid_idx", "auditor_grade_change_records_2020_1_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2020_1", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2020_1", {:name=>"auditor_grade_change_records_2020_1_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_grade_change_records_2019_12", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2019_12_on_uuid"})
   -> 0.0039s
-- rename_index("auditor_grade_change_records_2019_12", "auditor_grade_change_records_2019_12_uuid_idx", "auditor_grade_change_records_2019_12_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_grade_change_records_2019_12", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2019_12", {:name=>"auditor_grade_change_records_2019_12_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2019_11", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2019_11_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2019_11", "auditor_grade_change_records_2019_11_uuid_idx", "auditor_grade_change_records_2019_11_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_grade_change_records_2019_11", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0055s
-- remove_index("auditor_grade_change_records_2019_11", {:name=>"auditor_grade_change_records_2019_11_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2019_10", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2019_10_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2019_10", "auditor_grade_change_records_2019_10_uuid_idx", "auditor_grade_change_records_2019_10_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2019_10", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0054s
-- remove_index("auditor_grade_change_records_2019_10", {:name=>"auditor_grade_change_records_2019_10_nonunique_uuid_idx"})
   -> 0.0013s
-- index_exists?("auditor_grade_change_records_2019_9", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2019_9_on_uuid"})
   -> 0.0038s
-- rename_index("auditor_grade_change_records_2019_9", "auditor_grade_change_records_2019_9_uuid_idx", "auditor_grade_change_records_2019_9_nonunique_uuid_idx")
   -> 0.0010s
-- add_index("auditor_grade_change_records_2019_9", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0055s
-- remove_index("auditor_grade_change_records_2019_9", {:name=>"auditor_grade_change_records_2019_9_nonunique_uuid_idx"})
   -> 0.0012s
-- index_exists?("auditor_grade_change_records_2019_8", :uuid, {:unique=>true, :name=>"index_auditor_grade_change_records_2019_8_on_uuid"})
   -> 0.0037s
-- rename_index("auditor_grade_change_records_2019_8", "auditor_grade_change_records_2019_8_uuid_idx", "auditor_grade_change_records_2019_8_nonunique_uuid_idx")
   -> 0.0011s
-- add_index("auditor_grade_change_records_2019_8", :uuid, {:unique=>true, :algorithm=>:concurrently})
   -> 0.0052s
-- remove_index("auditor_grade_change_records_2019_8", {:name=>"auditor_grade_change_records_2019_8_nonunique_uuid_idx"})
   -> 0.0012s
==  CascasdeUniqueAuditorIndexesToGradePartitions: migrated (0.2014s) =========

==  MoveAuditorsToPartitions: migrating =======================================
==  MoveAuditorsToPartitions: migrated (0.0285s) ==============================

==  IndexAuditorsByFks: migrating =============================================
-- add_index(:auditor_grade_change_records, :account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
-- add_index(:auditor_grade_change_records, :submission_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:auditor_grade_change_records, :student_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:auditor_grade_change_records, :grader_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:auditor_course_records, :sis_batch_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:auditor_course_records, :user_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0050s
==  IndexAuditorsByFks: migrated (0.0313s) ====================================

==  CascadeFkIdxsToAuditorCourses: migrating ==================================
-- add_index("auditor_course_records_2020_10", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_10", :user_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_course_records_2020_11", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_course_records_2020_11", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_9", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2020_9", :user_id, {:algorithm=>:concurrently})
   -> 0.0057s
-- add_index("auditor_course_records_2020_8", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_course_records_2020_8", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_7", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_7", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_6", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_course_records_2020_6", :user_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2020_5", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2020_5", :user_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2020_4", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2020_4", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_3", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_3", :user_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2020_2", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2020_2", :user_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_course_records_2020_1", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_course_records_2020_1", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2019_12", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_course_records_2019_12", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2019_11", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2019_11", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2019_10", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2019_10", :user_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2019_9", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_course_records_2019_9", :user_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2019_8", :sis_batch_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_course_records_2019_8", :user_id, {:algorithm=>:concurrently})
   -> 0.0050s
==  CascadeFkIdxsToAuditorCourses: migrated (0.1694s) =========================

==  CascadeFkIdxsToAuditorGradeChanges: migrating =============================
-- add_index("auditor_grade_change_records_2020_10", :account_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_10", :submission_id, {:algorithm=>:concurrently})
   -> 0.0056s
-- add_index("auditor_grade_change_records_2020_10", :student_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_10", :grader_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_grade_change_records_2020_11", :account_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2020_11", :submission_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_11", :student_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2020_11", :grader_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_9", :account_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_9", :submission_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2020_9", :student_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_9", :grader_id, {:algorithm=>:concurrently})
   -> 0.0057s
-- add_index("auditor_grade_change_records_2020_8", :account_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_8", :submission_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_grade_change_records_2020_8", :student_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_8", :grader_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2020_7", :account_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2020_7", :submission_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_7", :student_id, {:algorithm=>:concurrently})
   -> 0.0056s
-- add_index("auditor_grade_change_records_2020_7", :grader_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_grade_change_records_2020_6", :account_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_6", :submission_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2020_6", :student_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_6", :grader_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2020_5", :account_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2020_5", :submission_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_5", :student_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_5", :grader_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_4", :account_id, {:algorithm=>:concurrently})
   -> 0.0075s
-- add_index("auditor_grade_change_records_2020_4", :submission_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_4", :student_id, {:algorithm=>:concurrently})
   -> 0.0057s
-- add_index("auditor_grade_change_records_2020_4", :grader_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_3", :account_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_3", :submission_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2020_3", :student_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_3", :grader_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2020_2", :account_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2020_2", :submission_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2020_2", :student_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2020_2", :grader_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2020_1", :account_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_1", :submission_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2020_1", :student_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2020_1", :grader_id, {:algorithm=>:concurrently})
   -> 0.0056s
-- add_index("auditor_grade_change_records_2019_12", :account_id, {:algorithm=>:concurrently})
   -> 0.0062s
-- add_index("auditor_grade_change_records_2019_12", :submission_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2019_12", :student_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2019_12", :grader_id, {:algorithm=>:concurrently})
   -> 0.0054s
-- add_index("auditor_grade_change_records_2019_11", :account_id, {:algorithm=>:concurrently})
   -> 0.0052s
-- add_index("auditor_grade_change_records_2019_11", :submission_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_grade_change_records_2019_11", :student_id, {:algorithm=>:concurrently})
   -> 0.0057s
-- add_index("auditor_grade_change_records_2019_11", :grader_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2019_10", :account_id, {:algorithm=>:concurrently})
   -> 0.0051s
-- add_index("auditor_grade_change_records_2019_10", :submission_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2019_10", :student_id, {:algorithm=>:concurrently})
   -> 0.0057s
-- add_index("auditor_grade_change_records_2019_10", :grader_id, {:algorithm=>:concurrently})
   -> 0.0056s
-- add_index("auditor_grade_change_records_2019_9", :account_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2019_9", :submission_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2019_9", :student_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2019_9", :grader_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2019_8", :account_id, {:algorithm=>:concurrently})
   -> 0.0056s
-- add_index("auditor_grade_change_records_2019_8", :submission_id, {:algorithm=>:concurrently})
   -> 0.0053s
-- add_index("auditor_grade_change_records_2019_8", :student_id, {:algorithm=>:concurrently})
   -> 0.0055s
-- add_index("auditor_grade_change_records_2019_8", :grader_id, {:algorithm=>:concurrently})
   -> 0.0054s
==  CascadeFkIdxsToAuditorGradeChanges: migrated (0.3516s) ====================

==  AddIndexToRootAccountIds: migrating =======================================
-- add_index(:wikis, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0071s
-- add_index(:wiki_pages, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0058s
-- add_index(:rubrics, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
-- add_index(:rubric_associations, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0058s
-- add_index(:rubric_assessments, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:master_courses_migration_results, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:master_courses_master_templates, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:master_courses_master_content_tags, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0054s
-- add_index(:quizzes, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0058s
-- add_index(:quiz_questions, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0109s
-- add_index(:quiz_groups, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0064s
-- add_index(:quiz_submissions, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0086s
-- add_index(:assessment_question_banks, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0065s
-- add_index(:assessment_questions, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0093s
-- add_index(:master_courses_child_subscriptions, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0056s
-- add_index(:content_tags, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0060s
-- add_index(:developer_key_account_bindings, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:developer_keys, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:lti_resource_links, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:lti_results, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0054s
-- add_index(:originality_reports, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:master_courses_child_content_tags, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0056s
-- add_index(:discussion_topic_participants, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0061s
-- add_index(:course_account_associations, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0060s
-- add_index(:context_modules, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0089s
-- add_index(:context_module_progressions, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0086s
-- add_index(:content_participations, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0059s
-- add_index(:content_participation_counts, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0062s
-- add_index(:lti_line_items, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0054s
-- add_index(:content_migrations, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:attachment_associations, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0068s
-- add_index(:assignment_override_students, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0066s
-- add_index(:assignment_overrides, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:assignment_groups, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0060s
-- add_index(:submission_versions, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0091s
-- add_index(:submission_comments, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:score_statistics, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:scores, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0074s
-- add_index(:grading_periods, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:post_policies, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0058s
-- add_index(:late_policies, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:grading_standards, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:custom_gradebook_columns, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:learning_outcome_groups, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0067s
-- add_index(:custom_gradebook_column_data, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:master_courses_master_migrations, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:learning_outcomes, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0056s
-- add_index(:learning_outcome_question_results, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0050s
-- add_index(:learning_outcome_results, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:outcome_proficiencies, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:outcome_proficiency_ratings, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:account_users, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0052s
-- add_index(:enrollment_states, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0058s
-- add_index(:group_memberships, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:role_overrides, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
-- add_index(:access_tokens, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0077s
-- add_index(:user_account_associations, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0056s
-- add_index(:discussion_entries, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0073s
-- add_index(:asset_user_accesses, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
-- add_index(:attachments, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0063s
-- add_index(:content_shares, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0051s
-- add_index(:user_notes, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0050s
-- add_index(:calendar_events, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:folders, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0060s
-- add_index(:communication_channels, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0053s
-- add_index(:favorites, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0069s
-- add_index(:discussion_topics, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0057s
-- add_index(:discussion_entry_participants, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0060s
-- add_index(:web_conference_participants, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0063s
-- add_index(:web_conferences, :root_account_id, {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0062s
==  AddIndexToRootAccountIds: migrated (0.4248s) ==============================

==  CleanupInvalidObserverAlerts: migrating ===================================
==  CleanupInvalidObserverAlerts: migrated (0.0286s) ==========================

==  DropRootAccountIdFromConversationsTables: migrating =======================
-- column_exists?(:conversations, :root_account_id)
   -> 0.0013s
-- column_exists?(:conversation_participants, :root_account_id)
   -> 0.0013s
-- column_exists?(:conversation_messages, :root_account_id)
   -> 0.0013s
-- column_exists?(:conversation_message_participants, :root_account_id)
   -> 0.0011s
==  DropRootAccountIdFromConversationsTables: migrated (0.0052s) ==============

==  RemoveRootAccountIdFromLearningOutcomes: migrating ========================
-- remove_index(:learning_outcomes, :root_account_id)
   -> 0.0037s
-- remove_column(:learning_outcomes, :root_account_id)
   -> 0.0015s
==  RemoveRootAccountIdFromLearningOutcomes: migrated (0.0053s) ===============

==  AddIndexToLearningOutcomesRootAccountIds: migrating =======================
-- add_index(:learning_outcomes, :root_account_ids, {:algorithm=>:concurrently, :using=>:gin, :if_not_exists=>true})
   -> 0.0038s
==  AddIndexToLearningOutcomesRootAccountIds: migrated (0.0038s) ==============

==  PopulateRootAccountIdsOnConversationsTables: migrating ====================
==  PopulateRootAccountIdsOnConversationsTables: migrated (0.0162s) ===========

==  PopulateRootAccountIdOnCalendarEvents: migrating ==========================
==  PopulateRootAccountIdOnCalendarEvents: migrated (0.1022s) =================

==  DropUnusedUserColumns: migrating ==========================================
-- remove_column(:users, :gender, :string, {:limit=>255})
   -> 0.0007s
-- remove_column(:users, :birthdate, :datetime)
   -> 0.0006s
==  DropUnusedUserColumns: migrated (0.0014s) =================================

==  UpdateMasteryConnectToolConfig: migrating =================================
==  UpdateMasteryConnectToolConfig: migrated (0.0045s) ========================

==  PopulateContextForOutcomeProficiencies: migrating =========================
==  PopulateContextForOutcomeProficiencies: migrated (0.0038s) ================

==  RemoveRootAccountIdFromCommunicationChannels: migrating ===================
-- remove_index(:communication_channels, {:column=>:root_account_id, :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0058s
-- remove_column(:communication_channels, :root_account_id, {:if_exists=>true})
   -> 0.0042s
==  RemoveRootAccountIdFromCommunicationChannels: migrated (0.0101s) ==========

==  AdjustGradeChangeTablesForOverrideGrades: migrating =======================
-- change_column_null(:auditor_grade_change_records, :assignment_id, true)
   -> 0.0030s
-- change_column_null(:auditor_grade_change_records, :submission_id, true)
   -> 0.0023s
-- change_column_null(:auditor_grade_change_records, :submission_version_number, true)
   -> 0.0023s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records\" ADD COLUMN grading_period_id bigint CONSTRAINT fk_rails_7f96e6972d REFERENCES \"public\".\"grading_periods\"(id)")
   -> 0.0032s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_10\" ADD CONSTRAINT fk_rails_102eca0613 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0021s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_11\" ADD CONSTRAINT fk_rails_ad19f48a36 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0022s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_9\" ADD CONSTRAINT fk_rails_f2b1fce6d8 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0020s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_8\" ADD CONSTRAINT fk_rails_f487061bb2 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0020s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_7\" ADD CONSTRAINT fk_rails_84334a0db9 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0019s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_6\" ADD CONSTRAINT fk_rails_7278ae5eca FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0020s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_5\" ADD CONSTRAINT fk_rails_32798f92fc FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0020s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_4\" ADD CONSTRAINT fk_rails_7c5a6b6dcf FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0021s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_3\" ADD CONSTRAINT fk_rails_150e1edcc2 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0020s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_2\" ADD CONSTRAINT fk_rails_c8f27cf895 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0021s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2020_1\" ADD CONSTRAINT fk_rails_57f4adf1f5 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0020s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2019_12\" ADD CONSTRAINT fk_rails_abdc27b929 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0022s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2019_11\" ADD CONSTRAINT fk_rails_4d970610de FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0022s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2019_10\" ADD CONSTRAINT fk_rails_db04f6ce44 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0024s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2019_9\" ADD CONSTRAINT fk_rails_6baaeb9cf0 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0020s
-- execute("ALTER TABLE \"public\".\"auditor_grade_change_records_2019_8\" ADD CONSTRAINT fk_rails_6836b9f650 FOREIGN KEY (grading_period_id) REFERENCES \"public\".\"grading_periods\" (id)")
   -> 0.0023s
==  AdjustGradeChangeTablesForOverrideGrades: migrated (0.1085s) ==============

==  DropAccountFromOutcomeProficiency: migrating ==============================
-- remove_index(:outcome_proficiencies, {:column=>:account_id, :if_exists=>true})
   -> 0.0084s
-- remove_column(:outcome_proficiencies, :account_id, {:if_exists=>true})
   -> 0.0055s
==  DropAccountFromOutcomeProficiency: migrated (0.0140s) =====================

==  BackfillWorkflowStateOnProficienciesAndRatings: migrating =================
-- change_column_null(:outcome_proficiencies, :workflow_state, false)
   -> 0.0030s
-- change_column_null(:outcome_proficiency_ratings, :workflow_state, false)
   -> 0.0039s
==  BackfillWorkflowStateOnProficienciesAndRatings: migrated (0.0494s) ========

==  AddIndexToUsersRootAccountIds: migrating ==================================
-- add_index(:users, :root_account_ids, {:algorithm=>:concurrently, :using=>:gin, :if_not_exists=>true})
   -> 0.0049s
==  AddIndexToUsersRootAccountIds: migrated (0.0049s) =========================

==  ClearOldUserRootAccountIds: migrating =====================================
==  ClearOldUserRootAccountIds: migrated (0.0035s) ============================

==  CleanupCrossShardDeveloperKeys: migrating =================================
==  CleanupCrossShardDeveloperKeys: migrated (0.0043s) ========================

==  AddIndexOnSubmissionsCachedDueDateAndCourseId: migrating ==================
-- add_index(:submissions, [:course_id, :cached_due_date], {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0064s
-- remove_index(:submissions, {:column=>[:course_id], :algorithm=>:concurrently, :if_exists=>true})
   -> 0.0119s
==  AddIndexOnSubmissionsCachedDueDateAndCourseId: migrated (0.0184s) =========

==  CreateSubscriptionsForPlagiarismTools: migrating ==========================
==  CreateSubscriptionsForPlagiarismTools: migrated (0.0041s) =================

==  AddIndexOnAccountReportRowsCreatedAt: migrating ===========================
-- add_index(:account_report_rows, [:created_at], {:algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0054s
==  AddIndexOnAccountReportRowsCreatedAt: migrated (0.0055s) ==================

==  ClearAnyCanvasInsightsViewRoleOverrides: migrating ========================
==  ClearAnyCanvasInsightsViewRoleOverrides: migrated (0.0009s) ===============

==  AddIndexOnMissingSubmissionsForUser: migrating ============================
-- add_index(:submissions, [:user_id], {:where=>"late_policy_status='missing'", :name=>"index_on_submissions_missing_for_user", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0057s
==  AddIndexOnMissingSubmissionsForUser: migrated (0.0057s) ===================

==  IndexAuaWithContextId: migrating ==========================================
-- add_index(:asset_user_accesses, [:user_id, :context_id, :asset_code, :id], {:name=>"index_asset_user_accesses_on_user_id_context_id_asset_code", :algorithm=>:concurrently, :if_not_exists=>true})
   -> 0.0055s
==  IndexAuaWithContextId: migrated (0.0056s) =================================

==  RemoveManageWikiGroupPermissions: migrating ===============================
==  RemoveManageWikiGroupPermissions: migrated (0.0024s) ======================

==  DropWikiPagesViewCount: migrating =========================================
-- remove_column(:wiki_pages, :view_count)
   -> 0.0024s
==  DropWikiPagesViewCount: migrated (0.0024s) ================================

==  ClearOldCommunicationChannelRootAccountIds: migrating =====================
==  ClearOldCommunicationChannelRootAccountIds: migrated (0.0274s) ============

==  PopulateProficiencyPermissions: migrating =================================
==  PopulateProficiencyPermissions: migrated (0.0032s) ========================

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

PG::ForeignKeyViolation: ERROR:  update or delete on table "roles" violates foreign key constraint "fk_rails_f685686f18" on table "account_users"
DETAIL:  Key (id)=(1) is still referenced from table "account_users".
: DELETE FROM "public"."roles" WHERE "roles"."root_account_id" IS NULL
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:610:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/sharded_instrumenter.rb:20:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/abstract_adapter.rb:33:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:609:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:596:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:94:in `exec_delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:176:in `delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation.rb:409:in `delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/guard_rail/relation.rb:21:in `delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/call_super.rb:14:in `call'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/call_super.rb:14:in `call_super'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:63:in `block in delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:102:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:63:in `delete_all'
/var/canvas/config/initializers/active_record.rb:1240:in `delete_all'
/var/canvas/config/initializers/active_record.rb:1272:in `delete_all'
/var/canvas/db/migrate/20200910165057_make_role_root_account_id_not_null.rb:26:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:817:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:798:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/connection_pool_proxy.rb:13:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:608:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1292:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `block in ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/transaction.rb:239:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/transaction.rb:236:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/transactions.rb:212:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/base.rb:49:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1291:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1462:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1263:in `block in migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/database_server.rb:107:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:86:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:376:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:628:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:96:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:627:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:374:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:370:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:71:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/database_server.rb:107:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:68:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/guard_rail.rb:22:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:67:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in `eval'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in `<main>'

Caused by:
ActiveRecord::InvalidForeignKey: PG::ForeignKeyViolation: ERROR:  update or delete on table "roles" violates foreign key constraint "fk_rails_f685686f18" on table "account_users"
DETAIL:  Key (id)=(1) is still referenced from table "account_users".
: DELETE FROM "public"."roles" WHERE "roles"."root_account_id" IS NULL
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:610:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/sharded_instrumenter.rb:20:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/abstract_adapter.rb:33:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:609:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:596:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:94:in `exec_delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:176:in `delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation.rb:409:in `delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/guard_rail/relation.rb:21:in `delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/call_super.rb:14:in `call'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/call_super.rb:14:in `call_super'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:63:in `block in delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:102:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:63:in `delete_all'
/var/canvas/config/initializers/active_record.rb:1240:in `delete_all'
/var/canvas/config/initializers/active_record.rb:1272:in `delete_all'
/var/canvas/db/migrate/20200910165057_make_role_root_account_id_not_null.rb:26:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:817:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:798:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/connection_pool_proxy.rb:13:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:608:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1292:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `block in ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/transaction.rb:239:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/transaction.rb:236:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/transactions.rb:212:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/base.rb:49:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1291:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1462:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1263:in `block in migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/database_server.rb:107:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:86:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:376:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:628:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:96:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:627:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:374:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:370:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:71:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/database_server.rb:107:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:68:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/guard_rail.rb:22:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:67:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in `eval'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in `<main>'

Caused by:
PG::ForeignKeyViolation: ERROR:  update or delete on table "roles" violates foreign key constraint "fk_rails_f685686f18" on table "account_users"
DETAIL:  Key (id)=(1) is still referenced from table "account_users".
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `exec_params'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:611:in `block (2 levels) in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:48:in `block in permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/concurrency/share_lock.rb:187:in `yield_shares'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/dependencies/interlock.rb:47:in `permit_concurrent_loads'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:610:in `block in exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:581:in `block (2 levels) in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:580:in `block in log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activesupport-5.2.4.4/lib/active_support/notifications/instrumenter.rb:23:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/sharded_instrumenter.rb:20:in `instrument'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract_adapter.rb:571:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/abstract_adapter.rb:33:in `log'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:609:in `exec_no_cache'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql_adapter.rb:596:in `execute_and_clear'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/postgresql/database_statements.rb:94:in `exec_delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:176:in `delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/query_cache.rb:21:in `delete'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation.rb:409:in `delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/guard_rail/relation.rb:21:in `delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/call_super.rb:14:in `call'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/call_super.rb:14:in `call_super'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:63:in `block in delete_all'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:102:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/relation.rb:63:in `delete_all'
/var/canvas/config/initializers/active_record.rb:1240:in `delete_all'
/var/canvas/config/initializers/active_record.rb:1272:in `delete_all'
/var/canvas/db/migrate/20200910165057_make_role_root_account_id_not_null.rb:26:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:817:in `exec_migration'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:798:in `block (2 levels) in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/connection_pool.rb:416:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/connection_pool_proxy.rb:13:in `with_connection'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/active_record/migration.rb:16:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:608:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1292:in `block in execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `block in ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `block in transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/transaction.rb:239:in `block in within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/transaction.rb:236:in `within_new_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/connection_adapters/abstract/database_statements.rb:267:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/transactions.rb:212:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/active_record/base.rb:49:in `transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `ddl_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1291:in `execute_migration_in_transaction'
/var/canvas/config/initializers/active_record.rb:1462:in `execute_migration_in_transaction'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1263:in `block in migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/railties/databases.rake:60:in `block (2 levels) in <top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `block (6 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:87:in `block (5 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/database_server.rb:107:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:86:in `block (4 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:376:in `block (2 levels) in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:628:in `block in activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:96:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:627:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:374:in `block in with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/app/models/switchman/shard.rb:370:in `with_each_shard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:71:in `block (3 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/database_server.rb:107:in `unguard'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:68:in `block (2 levels) in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/switchman/guard_rail.rb:22:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-inst-jobs-2.0.0/lib/switchman_inst_jobs/guard_rail.rb:8:in `activate'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.1/lib/tasks/switchman.rake:67:in `block in shardify_task'
/var/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in `eval'
/var/canvas/vendor/bundle/ruby/2.6.0/bin/ruby_executable_hooks:24:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
ubuntu@ip-10-0-0-222:/var/canvas$ 

Steps to reproduce:

  1. cd /var/canvas
  2. RAILS_ENV=production $GEM_HOME/bin/bundle exec rake db:migrate:predeploy

Expected behavior:

expect the db migration to work successfully

Actual behavior:

db migration fails, see message in summary

Additional notes:

rkanka21 commented 3 years ago

same here

Ahmet-Kaplan commented 3 years ago

There is a workaround. Enter the console: $ sudo RAILS_ENV=production bundle exec rails c

At the console, run that command: Role.where(root_account_id: nil).update_all(root_account_id: 0)

PLEASE CAREFUL ! If your ROLES table has duplicate rows ( only differences are root_account_id has null and 0 values) then it DOES NOT work.

dluhhbiu commented 3 years ago

So, if I understood correctly then the stable branch contains breaking changes around 1 month. Is it ok?

LordRatte commented 3 years ago

@Ahmet-Kaplan I get this error when I run that command in the console:

ERROR:  insert or update on table "roles" violates foreign key constraint "fk_rails_7d4ded04e1" (PG::ForeignKeyViolation)
DETAIL:  Key (root_account_id)=(0) is not present in table "accounts".

I'm trying this on release/2021-06-23.31 so can you please verify how you got around not having an account with id 0 or bypassing the key constraint or both.

And for some more context:

 id |        name        | account_id | root_account_id | deleted_at 
----+--------------------+------------+-----------------+------------
  2 | AccountMembership  |            |                 | 
  3 | StudentEnrollment  |            |                 | 
  5 | TaEnrollment       |            |                 | 
  6 | DesignerEnrollment |            |                 | 
  7 | ObserverEnrollment |            |                 | 
  8 | NoPermissions      |            |                 | 
  1 | AccountAdmin       |            |                 | 
  4 | TeacherEnrollment  |            |                 | 
  9 | Admin              |          1 |               1 | 
(9 rows)