fix race on lb (#679)

* fix race on lb

* second pass on lb logic
This commit is contained in:
Echo
2025-12-02 07:49:18 -05:00
committed by GitHub
parent 64fc0f1f1b
commit 451182e4f6

View File

@@ -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