jbe@287: local seq = 0 jbe@287: local saved_tree jbe@287: jbe@287: request.for_each(function() jbe@287: if seq == 0 then jbe@287: -- prepare for configuration/initialization phase jbe@287: trace._disabled = false jbe@287: trace._tree = { type = "root", start_hires_time = extos.monotonic_hires_time() } jbe@287: trace._stack = { trace._tree } jbe@287: seq = 1 jbe@287: elseif seq == 1 then jbe@287: -- save current state before processing first request jbe@287: if not (trace._stack[1] == trace._tree and trace._stack[2] == nil) then jbe@287: error("Trace stack unbalanced after initialization") jbe@287: end jbe@287: if not trace._disabled then jbe@287: saved_tree = table.new(trace._tree) jbe@287: end jbe@287: seq = 2 jbe@287: elseif saved_tree then jbe@287: -- restore state before processing next request jbe@287: if saved_tree then jbe@287: trace._disabled = false jbe@287: trace._tree = table.new(saved_tree) jbe@287: trace._stack = { trace._tree } jbe@287: end jbe@287: end jbe@287: end)