Action Dispatch DebugLocks
此中间件可用于诊断自动加载互锁中的死锁。
要使用它,请使用 config/application.rb
将其插入中间件堆栈的顶部附近。
config.middleware.insert_before Rack::Sendfile, ActionDispatch::DebugLocks
重新启动应用程序并重新触发死锁条件后,路由 /rails/locks
将显示互锁当前已知的线程摘要,它们持有的或等待的锁定级别以及它们的当前回溯。
通常,死锁是由互锁与其他外部锁定或阻止 I/O 调用冲突引起的。这些无法自动识别,但应该在显示的回溯中可见。
注意:此中间件输出的格式和内容旨在供人类使用,并且应预期在不同版本之间发生变化。
此中间件公开了服务器的操作细节,没有任何访问控制。它只应在使用时启用,并在之后删除。
方法
类公共方法
new(app, path = "/rails/locks") 链接
来源:显示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 30 def initialize(app, path = "/rails/locks") @app = app @path = path end
实例公共方法
call(env) 链接
来源:显示 | 在 GitHub 上
# File actionpack/lib/action_dispatch/middleware/debug_locks.rb, line 35 def call(env) req = ActionDispatch::Request.new env if req.get? path = req.path_info.chomp("/") if path == @path return render_details(req) end end @app.call(env) end