QTY-18984: Fix NoMethodError in touch_courses when Redis returns nil #494
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Link to Jira ticket
Purpose
Fix
NoMethodError: undefined method 'each' for nil:NilClassthat occurs whenredis.smembers()returnsnilinstead of an empty array in thetouch_coursesmethod.This error has been occurring every 10 minutes since 2026-01-29T17:42 on
cdcr.strongmind.comonly, with 36+ occurrences. The periodic job "Ten minute course touch" fails when Redis connectivity issues causesmembersto return nil.Related Sentry issue: CANVAS-LMS-2WJ
Approach
Add defensive coding to handle Redis edge cases:
redis.smembers(key) || []to handle nil responsesCourse.find_by_id(member)with nil guard to handle deleted coursesrescue Redis::BaseErrorto catch connection errors gracefullyTesting
Added comprehensive unit tests covering:
redis.smembersreturnsnil(the bug scenario)redis.smembersreturns empty arrayRun tests:
bundle exec rspec spec/decorators/models/course_decorator_spec.rbInfrastructure Note
The error only affects
cdcr.strongmind.comand no cdcr-specific Redis cluster was found in AWS ElastiCache monitoring. Please verify:REDIS_SERVERenv var value for cdcr?Screenshots/Video
N/A - Backend fix, no UI changes.