mirror of
https://github.com/cloudwu/skynet.git
synced 2026-07-22 02:53:09 +00:00
make task/uniqtask consistent (#1902)
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user