作为一个团队,我们运行一个以 Ruby on Rails 编写的软件即服务,用于国家家庭守望协会,以帮助团队监控租户的小屋、住宅、小屋、车库、船屋、水疗中心、游泳池、车道和院子缺席。
自我们上次部署以来,Airbrake 中记录了一个问题,出现了 67 次。这是 Airbrake 概要的抄本:
Error class PG::TRDeadlockDetected
Error message PG::TRDeadlockDetected: ERROR: deadlock detected DETAIL: Process i waits for ShareLock on transaction j; blocked by process k. Process k waits for ShareLock on transaction j; blocked by process i. HINT: See server log for query details.
Action tenant/tasks#update
URL https://subdomain.qridithomewatch.com/tasks/{id}
File [GEM_ROOT]/gems/activerecord-4.0.4/lib/active_record/connection_adapters/postgresql_adapter.rb:791
这是租户/任务#update 操作的片段:
def update
respond_smart_with @resource, {}, (@resource.qrid_id ? edit_tenant_qrid_url(@resource.qrid_id) : tenant_tasks_url(work_type_id: @resource.work_type_id, client_type: @resource.client_type)) if @resource.update(resource_params)
end
此外,我还包括了负责任的关注(respond_smart_with),以防万一: http ://pastebin.com/pFQuRc4P
感谢您的时间和考虑。
亲切的问候,快速报告系统的杰森