Action Dispatch DebugLocks¶ ↑
此中间件可用于诊断自动加载锁中的死锁。
要使用它,请将其插入中间件堆栈的顶部附近,使用 config/application.rb。
config.middleware.insert_before Rack::Sendfile, ActionDispatch::DebugLocks
在重新启动应用程序并重新触发死锁条件后,路由 /rails/locks 将显示当前已知于锁的所有线程的摘要,它们持有的或正在等待的锁级别,以及它们的当前回溯。
通常,死锁会由锁与某些其他外部锁或阻塞 I/O 调用发生冲突引起。这些无法自动识别,但应该在显示的回溯中可见。
注意:此中间件输出的格式和内容是为人设计的,并可能在不同版本之间发生变化。
此中间件暴露服务器的操作细节,没有访问控制。它应该只在需要时启用,并在之后移除。
方法
类公共方法
new(app, path = "/rails/locks") Link
源码: 显示 | 在 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) Link
源码: 显示 | 在 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