From caf513e6c0c68cfa7d61e1b294de7be693d94df0 Mon Sep 17 00:00:00 2001 From: t0350 Date: Tue, 23 Apr 2024 15:32:36 +0800 Subject: [PATCH] make task/uniqtask consistent (#1902) --- lualib/skynet.lua | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/lualib/skynet.lua b/lualib/skynet.lua index 64b5b81d..f983b2b3 100644 --- a/lualib/skynet.lua +++ b/lualib/skynet.lua @@ -1076,10 +1076,20 @@ function skynet.stat(what) return c.intcommand("STAT", what) end +local function task_traceback(co) + if co == "BREAK" then + return co + elseif timeout_traceback and timeout_traceback[co] then + return timeout_traceback[co] + else + return traceback(co) + end +end + function skynet.task(ret) if ret == nil then local t = 0 - for session,co in pairs(session_id_coroutine) do + for _,co in pairs(session_id_coroutine) do if co ~= "BREAK" then t = t + 1 end @@ -1097,23 +1107,13 @@ function skynet.task(ret) if tt == "table" then for session,co in pairs(session_id_coroutine) do local key = string.format("%s session: %d", tostring(co), session) - if co == "BREAK" then - ret[key] = "BREAK" - elseif timeout_traceback and timeout_traceback[co] then - ret[key] = timeout_traceback[co] - else - ret[key] = traceback(co) - end + ret[key] = task_traceback(co) end return elseif tt == "number" then local co = session_id_coroutine[ret] if co then - if co == "BREAK" then - return "BREAK" - else - return traceback(co) - end + return task_traceback(co) else return "No session" end @@ -1130,7 +1130,7 @@ end function skynet.uniqtask() local stacks = {} for session, co in pairs(session_id_coroutine) do - local stack = traceback(co) + local stack = task_traceback(co) local info = stacks[stack] or {count = 0, sessions = {}} info.count = info.count + 1 if info.count < 10 then