webmcp
changeset 287:a9ad9186a922
Adjusted env/trace/__init.lua to deal with forking
author | jbe |
---|---|
date | Sun Mar 22 04:08:53 2015 +0100 (2015-03-22) |
parents | fc2aba7d5db9 |
children | c51f283dfb0d |
files | framework/env/trace/__init.lua |
line diff
1.1 --- a/framework/env/trace/__init.lua Sun Mar 22 02:10:57 2015 +0100 1.2 +++ b/framework/env/trace/__init.lua Sun Mar 22 04:08:53 2015 +0100 1.3 @@ -1,3 +1,28 @@ 1.4 -trace._disabled = false 1.5 -trace._tree = { type = "root", start_hires_time = extos.monotonic_hires_time() } 1.6 -trace._stack = { trace._tree } 1.7 +local seq = 0 1.8 +local saved_tree 1.9 + 1.10 +request.for_each(function() 1.11 + if seq == 0 then 1.12 + -- prepare for configuration/initialization phase 1.13 + trace._disabled = false 1.14 + trace._tree = { type = "root", start_hires_time = extos.monotonic_hires_time() } 1.15 + trace._stack = { trace._tree } 1.16 + seq = 1 1.17 + elseif seq == 1 then 1.18 + -- save current state before processing first request 1.19 + if not (trace._stack[1] == trace._tree and trace._stack[2] == nil) then 1.20 + error("Trace stack unbalanced after initialization") 1.21 + end 1.22 + if not trace._disabled then 1.23 + saved_tree = table.new(trace._tree) 1.24 + end 1.25 + seq = 2 1.26 + elseif saved_tree then 1.27 + -- restore state before processing next request 1.28 + if saved_tree then 1.29 + trace._disabled = false 1.30 + trace._tree = table.new(saved_tree) 1.31 + trace._stack = { trace._tree } 1.32 + end 1.33 + end 1.34 +end)