make ‘has_assignment_group’ cache key live longer

Change-Id: I8ee6f88e44f492b7471c1a6648339cac57c1886f
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/218102
Reviewed-by: Steven Burnett <sburnett@instructure.com>
Reviewed-by: James Williams <jamesw@instructure.com>
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Tested-by: Jenkins
QA-Review: Ryan Shaw <ryan@instructure.com>
Product-Review: Ryan Shaw <ryan@instructure.com>
This commit is contained in:
Ryan Shaw 2019-11-20 17:16:15 -07:00
parent 996121940b
commit ad67048b2b
2 changed files with 9 additions and 2 deletions

View File

@ -57,6 +57,7 @@ class AssignmentGroup < ActiveRecord::Base
after_save :update_student_grades
before_destroy :destroy_scores
after_destroy :clear_context_has_assignment_group_cache
def generate_default_values
if self.name.blank?
@ -164,6 +165,11 @@ class AssignmentGroup < ActiveRecord::Base
true
end
# this is just in case we happen to delete the last assignment_group in a course
def clear_context_has_assignment_group_cache
Rails.cache.delete(['has_assignment_group', global_context_id].cache_key) if context_id
end
set_broadcast_policy do |p|
p.dispatch :grade_weight_changed
p.to { context.participating_students_by_date }

View File

@ -1358,13 +1358,14 @@ class Course < ActiveRecord::Base
def require_assignment_group
shard.activate do
return if Rails.cache.read(['has_assignment_group', self].cache_key)
key = ['has_assignment_group', self.global_id].cache_key
return if Rails.cache.read(key)
if self.assignment_groups.active.empty?
Shackles.activate(:master) do
self.assignment_groups.create!(name: t('#assignment_group.default_name', "Assignments"))
end
end
Rails.cache.write(['has_assignment_group', self].cache_key, true)
Rails.cache.write(key, true)
end
end