Fix race condition in sync status monitor (#2412)
Move family timestamp update to after_commit callback to ensure database visibility before cache invalidation
This commit was merged in pull request #2412.
This commit is contained in:
@@ -19,6 +19,8 @@ class Sync < ApplicationRecord
|
||||
scope :incomplete, -> { where("syncs.status IN (?)", %w[pending syncing]) }
|
||||
scope :visible, -> { incomplete.where("syncs.created_at > ?", VISIBLE_FOR.ago) }
|
||||
|
||||
after_commit :update_family_sync_timestamp
|
||||
|
||||
validate :window_valid
|
||||
|
||||
# Sync state machine
|
||||
@@ -169,7 +171,6 @@ class Sync < ApplicationRecord
|
||||
|
||||
def handle_transition
|
||||
log_status_change
|
||||
family.touch(:latest_sync_activity_at)
|
||||
end
|
||||
|
||||
def handle_completion_transition
|
||||
@@ -182,6 +183,10 @@ class Sync < ApplicationRecord
|
||||
end
|
||||
end
|
||||
|
||||
def update_family_sync_timestamp
|
||||
family.touch(:latest_sync_activity_at)
|
||||
end
|
||||
|
||||
def family
|
||||
if syncable.is_a?(Family)
|
||||
syncable
|
||||
|
||||
Reference in New Issue
Block a user