Skip to content

Commit 99d5703

Browse files
committed
Handle missing users in KafkaUpdater
1 parent 5b84f58 commit 99d5703

1 file changed

Lines changed: 23 additions & 3 deletions

File tree

lib/kafka_updater.rb

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ def task_type(task)
1616

1717
def update_user_progress(task)
1818
finished_successfully = false
19-
user = User.find(task.user_id)
19+
user = User.find_by(id: task.user_id)
20+
unless user
21+
Rails.logger.warn("KafkaUpdater#update_user_progress: missing user id=#{task.user_id} task_id=#{task.id}")
22+
return true
23+
end
2024
course = Course.find(task.course_id)
2125
Rails.logger.info("Publishing progress for user #{user.id} with moocfi id: #{course.moocfi_id}.")
2226
if !course.moocfi_id || course.moocfi_id.blank?
@@ -69,6 +73,10 @@ def update_course_progress(task)
6973
available_points = AvailablePoint.course_sheet_points(course, parts)
7074
points_per_user.each do |username, points_by_group|
7175
current_user = User.find_by(login: username)
76+
unless current_user
77+
Rails.logger.warn("KafkaUpdater#update_course_progress: no user for login=#{username.inspect} course_id=#{course.id}")
78+
next
79+
end
7280
Rails.logger.info("Publishing progress for user #{current_user.id}")
7381
progress = points_by_group.map do |group_name, awarded_points|
7482
max_points = available_points[group_name] || 0
@@ -98,8 +106,12 @@ def update_course_progress(task)
98106

99107
def update_user_points(task)
100108
finished_successfully = false
109+
user = User.find_by(id: task.user_id)
110+
unless user
111+
Rails.logger.warn("KafkaUpdater#update_user_points: missing user id=#{task.user_id} task_id=#{task.id}")
112+
return true
113+
end
101114
course = Course.find(task.course_id)
102-
user = User.find(task.user_id)
103115
Rails.logger.info("Publishing points for user #{user.id} with moocfi id: #{course.moocfi_id}.")
104116
if !course.moocfi_id
105117
Rails.logger.error('Cannot publish points because moocfi id is not specified. Removing extra task (this task never should have been created.)')
@@ -142,6 +154,10 @@ def update_course_points(task)
142154
exercises = Exercise.where(course_id: course.id).where(disabled_status: 0)
143155
points_per_user.each do |username, _points_by_group|
144156
current_user = User.find_by(login: username)
157+
unless current_user
158+
Rails.logger.warn("KafkaUpdater#update_course_points: no user for login=#{username.inspect} course_id=#{course.id}")
159+
next
160+
end
145161
Rails.logger.info("Publishing points for user #{current_user.id}")
146162
exercises_data = []
147163
exercises.map do |exercise|
@@ -216,8 +232,12 @@ def update_exercises(task)
216232

217233
def update_user_course_points(task)
218234
finished_successfully = false
235+
user = User.find_by(id: task.user_id)
236+
unless user
237+
Rails.logger.warn("KafkaUpdater#update_user_course_points: missing user id=#{task.user_id} task_id=#{task.id}")
238+
return true
239+
end
219240
course = Course.find(task.course_id)
220-
user = User.find(task.user_id)
221241
Rails.logger.info("Publishing points for user #{user.id} with moocfi id: #{course.moocfi_id}.")
222242
if !course.moocfi_id
223243
Rails.logger.error('Cannot publish points because moocfi id is not specified')

0 commit comments

Comments
 (0)