레일 버전을 4.2.5.2
에서 5.0.0
으로 업그레이드했습니다. 나의 현재 Sidekiq 버전은 내가 2 개 모델 참여이 많은 참여의이 4.2.10
레일 5로 업그레이드 - 사이드킥 작업자를위한 교착 상태 발생
입니다.
각 참여에 대해 나는 다른 측면의 직원이 병렬로 실행되고 있습니다. 동일한 부모 참여를 업데이트하려고합니다.
participation = @engagement.participation
participation.update_attributes(
likes_count: engagement_metrics_for_participation.likes,
comments_count: engagement_metrics_for_participation.comments,
shares_count: engagement_metrics_for_participation.shares,
total_engagement: engagement_metrics_for_participation.total_engagement,
total_impression: engagement_metrics_for_participation.total_impression
)
이제 직원들이 교착 상태에 빠져서 영원히 뛰고 있습니다. 그래서 나는
http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html을 시도하고 코드
participation = @engagement.participation
participation.with_lock do
participation.likes_count = engagement_metrics_for_participation.likes
participation.comments_count = engagement_metrics_for_participation.comments
participation.shares_count = engagement_metrics_for_participation.shares
participation.total_engagement = engagement_metrics_for_participation.total_engagement
participation.total_impression = engagement_metrics_for_participation.total_impression
participation.save
end
하지만 여전히 같은 문제에 직면 업데이트. 이 문제를 해결하려면 귀하의 도움이 필요합니다.
이 교착 상태가 발생하지 않아야합니다. 단일 행 업데이트이고 활성 레코드가 차단을 처리 할 수 있습니다. 교착 상태가 있다고 생각합니까? –
시간 초과 문제가 더 많아서 업데이트 시간 초과가 5 초 이내에 잠금을받지 못했다고 생각합니까? –
몇 가지 수정 사항이 적용된 레일 5.0.2를 사용하고 있는지 확인하십시오. –