From 451182e4f6ad53b0bed0d0ce70235c9ad34721ef Mon Sep 17 00:00:00 2001 From: Echo Date: Tue, 2 Dec 2025 07:49:18 -0500 Subject: [PATCH] fix race on lb (#679) * fix race on lb * second pass on lb logic --- app/jobs/leaderboard_update_job.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/jobs/leaderboard_update_job.rb b/app/jobs/leaderboard_update_job.rb index bef5f5f..b94872a 100644 --- a/app/jobs/leaderboard_update_job.rb +++ b/app/jobs/leaderboard_update_job.rb @@ -31,8 +31,6 @@ class LeaderboardUpdateJob < ApplicationJob range = LeaderboardDateRange.calculate(date, period) ActiveRecord::Base.transaction do - board.entries.delete_all - # Build the base heartbeat query heartbeat_query = Heartbeat.where(time: range) .with_valid_timestamps @@ -57,7 +55,14 @@ class LeaderboardUpdateJob < ApplicationJob } end - LeaderboardEntry.insert_all!(entries) if entries.any? + LeaderboardEntry.insert_all!(entries, on_duplicate: :update, update_only: %i[total_seconds streak_count updated_at]) if entries.any? + + if data.keys.any? + board.entries.where.not(user_id: data.keys).delete_all + else + board.entries.delete_all + end + board.update!(finished_generating_at: Time.current) end