instructure / analytics

The official analytics package for Instructure's Canvas LMS.
GNU Affero General Public License v3.0
35 stars 32 forks source link

undefined method `delay_if_production' for Analytics::GradeDistributionCacher:Module #17

Closed ralphotowo closed 3 years ago

ralphotowo commented 3 years ago

Hello,

I'm trying to install and enable the analytics plugin for Canvas and I've run into an issue. I followed the steps from the documentation and already enabled Cassandra backed pageviews, downloaded the plugin to gems/plugins/analytics and installed the dependencies (bundle update). Our Canvas instance was updated yesterday to the latest version on the stable branch.

The following is an excerpt from the terminal window where the migrations were attempted.

[ ... ]
Using yard 0.9.24
Using yard-appendix 0.1.8
Bundle updated!
Gems in the groups sqlite and mysql were not installed.
root@ip-172-31-21-71:/var/www/canvas# RAILS_ENV=production bundle exec rake db:migrate
/var/www/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/www/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
==  PageViewsRollups: migrating ===============================================
-- create_table(:page_views_rollups, {:id=>:bigserial})
   -> 0.0118s
-- add_index(:page_views_rollups, [:course_id, :date, :category])
   -> 0.0061s
-- add_index(:page_views_rollups, [:course_id])
   -> 0.0048s
-- add_foreign_key(:page_views_rollups, :courses, {:column=>:course_id})
   -> 0.0026s
==  PageViewsRollups: migrated (0.0257s) ======================================

==  CachedGradeDistributions: migrating =======================================
-- create_table(:cached_grade_distributions, {:id=>false})
   -> 0.0532s
-- add_foreign_key(:cached_grade_distributions, :courses)
   -> 0.0023s
==  CachedGradeDistributions: migrated (0.0558s) ==============================

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

undefined method `delay_if_production' for Analytics::GradeDistributionCacher:Module
/var/www/canvas/gems/plugins/analytics/db/migrate/20120518214904_cache_grade_distributions.rb:7:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:777:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:817:in `exec_migration'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/connection_pool_proxy.rb:13:in `with_connection'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:608:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate'
/var/www/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/www/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/www/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/www/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/www/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/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/transactions.rb:212:in `transaction'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/active_record/base.rb:49:in `transaction'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `ddl_transaction'
/var/www/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/www/canvas/config/initializers/active_record.rb:1462:in `execute_migration_in_transaction'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (6 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (5 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:86:in `block (4 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:376:in `block (2 levels) in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:628:in `block in activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:96:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:627:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:374:in `block in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:370:in `with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:71:in `block (3 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:68:in `block (2 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/guard_rail.rb:22:in `activate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:67:in `block in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

Caused by:
NoMethodError: undefined method `delay_if_production' for Analytics::GradeDistributionCacher:Module
/var/www/canvas/gems/plugins/analytics/db/migrate/20120518214904_cache_grade_distributions.rb:7:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:777:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:817:in `exec_migration'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/connection_pool_proxy.rb:13:in `with_connection'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:608:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate'
/var/www/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/www/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/www/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/www/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/www/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/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/transactions.rb:212:in `transaction'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/active_record/base.rb:49:in `transaction'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1343:in `ddl_transaction'
/var/www/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/www/canvas/config/initializers/active_record.rb:1462:in `execute_migration_in_transaction'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (6 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (5 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:86:in `block (4 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:376:in `block (2 levels) in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:628:in `block in activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:96:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:627:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:374:in `block in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:370:in `with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:71:in `block (3 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:68:in `block (2 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/guard_rail.rb:22:in `activate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:67:in `block in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
root@ip-172-31-21-71:/var/www/canvas# 

Does anyone understand what the issue is, and how to successfully complete the migrations? Any feedback is appreciated.

ralphotowo commented 3 years ago

I just found out that there is a stable branch, much like the Canvas code. So I git reset --hard origin/stable, bundle updated and attempted to re-run migrations. There was some progress, but now there's a new error:

root@ip-172-31-21-71:/var/www/canvas# RAILS_ENV=production bundle exec rake db:migrate
/var/www/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/www/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
==  CacheGradeDistributions: migrating ========================================
==  CacheGradeDistributions: migrated (0.0438s) ===============================

==  AddCassandraPageViewAnalyticsTables: migrating ============================
==  AddCassandraPageViewAnalyticsTables: migrated (0.3383s) ===================

==  AddParticipationsCountToCassandra: migrating ==============================
==  AddParticipationsCountToCassandra: migrated (0.1937s) =====================

==  AssignmentRollups: migrating ==============================================
-- create_table(:assignment_rollups, {:id=>:bigserial})
   -> 0.0101s
-- add_index(:assignment_rollups, [:assignment_id])
   -> 0.0047s
-- add_index(:assignment_rollups, [:course_section_id])
   -> 0.0042s
-- add_foreign_key(:assignment_rollups, :assignments, {:column=>:assignment_id})
   -> 0.0027s
==  AssignmentRollups: migrated (0.0222s) =====================================

==  MakeAssignmentRollupsColumnsFloat: migrating ==============================
-- change_column(:assignment_rollups, :max_score, :float, {})
   -> 0.0167s
-- change_column(:assignment_rollups, :median_score, :float, {})
   -> 0.0127s
-- change_column(:assignment_rollups, :min_score, :float, {})
   -> 0.0117s
-- change_column(:assignment_rollups, :points_possible, :float, {})
   -> 0.0128s
==  MakeAssignmentRollupsColumnsFloat: migrated (0.0545s) =====================

==  DropAssignmentRollups: migrating ==========================================
-- drop_table(:assignment_rollups)
   -> 0.0021s
==  DropAssignmentRollups: migrated (0.0022s) =================================

==  DropSubmissionCachedTardyStatusIfExists: migrating ========================
==  DropSubmissionCachedTardyStatusIfExists: migrated (0.0030s) ===============

==  FixCachedGradeDistributionsSequence: migrating ============================
-- change_column_default(:cached_grade_distributions, :course_id, nil)
   -> 0.0075s
-- execute("DROP SEQUENCE IF EXISTS \"public\".\"cached_grade_distributions_course_id_seq\"")
   -> 0.0005s
==  FixCachedGradeDistributionsSequence: migrated (0.0082s) ===================

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

uninitialized constant MakePageViewsRollupsUnique::Shackles
/var/www/canvas/gems/plugins/analytics/db/migrate/20160119183554_make_page_views_rollups_unique.rb:7:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:817:in `exec_migration'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/connection_pool_proxy.rb:13:in `with_connection'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:608:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1345:in `ddl_transaction'
/var/www/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/www/canvas/config/initializers/active_record.rb:1462:in `execute_migration_in_transaction'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (6 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (5 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:86:in `block (4 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:376:in `block (2 levels) in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:628:in `block in activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:96:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:627:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:374:in `block in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:370:in `with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:71:in `block (3 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:68:in `block (2 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/guard_rail.rb:22:in `activate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:67:in `block in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'

Caused by:
NameError: uninitialized constant MakePageViewsRollupsUnique::Shackles
/var/www/canvas/gems/plugins/analytics/db/migrate/20160119183554_make_page_views_rollups_unique.rb:7:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:817:in `exec_migration'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:797:in `block in migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/connection_pool_proxy.rb:13:in `with_connection'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:796:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:608:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:977:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1345:in `ddl_transaction'
/var/www/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/www/canvas/config/initializers/active_record.rb:1462:in `execute_migration_in_transaction'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1262:in `migrate_without_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `block in migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1363:in `with_advisory_lock'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1210:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1036:in `up'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/migration.rb:1011:in `migrate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/tasks/database_tasks.rb:172:in `migrate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (6 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:87:in `block (5 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:86:in `block (4 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:376:in `block (2 levels) in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:628:in `block in activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:96:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:627:in `activate'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:374:in `block in with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/activerecord-5.2.4.4/lib/active_record/relation/delegation.rb:71:in `each'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/app/models/switchman/shard.rb:370:in `with_each_shard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:71:in `block (3 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/database_server.rb:107:in `unguard'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:68:in `block (2 levels) in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/switchman/guard_rail.rb:22:in `activate'
/var/www/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/www/canvas/vendor/bundle/ruby/2.6.0/gems/switchman-2.0.0/lib/tasks/switchman.rake:67:in `block in shardify_task'
/var/www/canvas/vendor/bundle/ruby/2.6.0/gems/rake-13.0.1/exe/rake:27:in `<top (required)>'
/usr/local/bin/bundle:23:in `load'
/usr/local/bin/bundle:23:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
simonista commented 3 years ago

Hi @ralphotowo , sorry for the trouble. It looks like we haven't done a good job of keeping the stable and beta branches up to date here, they're a year old :(. I'll make a note to work on that next week. In the mean time, you'll want to use https://github.com/instructure/analytics/commit/e749113e648113d00b6f3e74e1bfcfee201081f0 as HEAD here with the canvas-lms stable branch right now. Thanks for your patience.

simonista commented 3 years ago

(or using master here and master on canvas-lms should work fine too)

ralphotowo commented 3 years ago

Thank you very much @simonista. I followed your instructions and successfully installed analytics.

root@ip-172-31-21-71:/var/www/astria_lms# RAILS_ENV=production bundle exec rake db:migrate
/var/www/astria_lms/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/www/astria_lms/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
==  MakePageViewsRollupsUnique: migrating =====================================
-- rename_index(:page_views_rollups, "index_page_views_rollups_on_course_id_and_date_and_category", "index_page_views_rollups_deprecated")
   -> 0.0014s
-- add_index(:page_views_rollups, [:course_id, :date, :category], {:unique=>true, :algorithm=>:concurrently})
   -> 0.0075s
-- remove_index(:page_views_rollups, {:name=>"index_page_views_rollups_deprecated"})
   -> 0.0015s
==  MakePageViewsRollupsUnique: migrated (0.0391s) ============================

==  AddBackDefaultStringLimitsAnalytics: migrating ============================
-- column_exists?(:page_views_rollups, :category, :string, {:limit=>255})
   -> 0.0015s
-- change_column(:page_views_rollups, :category, :string, {:limit=>255})
   -> 0.0109s
==  AddBackDefaultStringLimitsAnalytics: migrated (0.0126s) ===================

==  FixCachedGradeDistributionsColumnType: migrating ==========================
-- column_exists?(:cached_grade_distributions, :course_id, :integer, {:limit=>8})
   -> 0.0073s
==  FixCachedGradeDistributionsColumnType: migrated (0.0074s) =================

==  AddScoresIndexForGradeDistributions: migrating ============================
-- add_index(:scores, :enrollment_id, {:name=>"index_scores_on_enrollment_id_no_grading_period", :where=>"grading_period_id IS NULL AND workflow_state <> 'deleted'", :algorithm=>:concurrently})
   -> 0.0122s
==  AddScoresIndexForGradeDistributions: migrated (0.0123s) ===================

For anyone searching:

cd canvas/gems/plugins/analytics
git checkout stable
git reset --hard e749113e648113d00b6f3e74e1bfcfee201081f0
cd /path/to/canvas
RAILS_ENV=production bundle exec rake db:migrate