Skip to content

Commit 99ec5f0

Browse files
committed
expire the canvas assignment cache after 15 minutes
fixes TALLY-501 test plan: - setup rollcall and take attendance (make sure redis is set up) - on the canvas side, delete the attendance assignment - take attendance again and notice that it doesn't work - wait 15 minutes - take attendance again and notice that a new attendance assignment is automatically created (note though that not all attendance scores are automatically sent back to canvas, that needs to be dealt with in a future update) Change-Id: I1f01e6bd443950e8110fbaaa275f4e890c9b65c5 Reviewed-on: https://gerrit.instructure.com/c/rollcall-attendance/+/226139 Tested-by: Service Cloud Jenkins <[email protected]> Reviewed-by: Keith Garner <[email protected]> QA-Review: Robin Kuss <[email protected]> Product-Review: Simon Williams <[email protected]>
1 parent 44a9c53 commit 99ec5f0

File tree

2 files changed

+9
-4
lines changed

2 files changed

+9
-4
lines changed

app/models/attendance_assignment.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def fetch_or_create
3737
assignment = fetch || create
3838
end
3939

40-
redis.set(cache_key, assignment.to_json) if assignment
40+
cache_assignment(assignment.to_json) if assignment
4141

4242
assignment
4343
end
@@ -84,7 +84,7 @@ def update_if_needed(assignment:, update_cache: false)
8484

8585
options = { omit_from_final_grade: course_config_omit_from_final_grade }
8686
updated_assignment = canvas.update_assignment(course_id, assignment['id'], options)
87-
redis.set(cache_key, updated_assignment.to_json) if update_cache
87+
cache_assignment(updated_assignment.to_json) if update_cache
8888
assignment
8989
end
9090

@@ -135,7 +135,12 @@ def lock_key
135135
end
136136

137137
def cache_key
138-
"#{base_key}:assignment_cache"
138+
"#{base_key}:assignment_cache_ex"
139+
end
140+
141+
def cache_assignment(assign_json)
142+
expiration = 15.minutes.seconds.to_i
143+
redis.set(cache_key, assign_json, ex: expiration)
139144
end
140145

141146
def active_section_ids

spec/extras/attendance_assignment_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@
207207

208208
allow(canvas).to receive(:update_assignment).and_return(updated_assignment)
209209

210-
expect(redis).to receive(:set).with(attendance_assignment.cache_key, updated_assignment.to_json)
210+
expect(redis).to receive(:set).with(attendance_assignment.cache_key, updated_assignment.to_json, ex: 900)
211211
attendance_assignment.update_if_needed(assignment: { 'id' => '123', 'omit_from_final_grade' => false },
212212
update_cache: true)
213213
end

0 commit comments

Comments
 (0)