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)
|
return c.intcommand("STAT", what)
|
||||||
end
|
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)
|
function skynet.task(ret)
|
||||||
if ret == nil then
|
if ret == nil then
|
||||||
local t = 0
|
local t = 0
|
||||||
for session,co in pairs(session_id_coroutine) do
|
for _,co in pairs(session_id_coroutine) do
|
||||||
if co ~= "BREAK" then
|
if co ~= "BREAK" then
|
||||||
t = t + 1
|
t = t + 1
|
||||||
end
|
end
|
||||||
@@ -1097,23 +1107,13 @@ function skynet.task(ret)
|
|||||||
if tt == "table" then
|
if tt == "table" then
|
||||||
for session,co in pairs(session_id_coroutine) do
|
for session,co in pairs(session_id_coroutine) do
|
||||||
local key = string.format("%s session: %d", tostring(co), session)
|
local key = string.format("%s session: %d", tostring(co), session)
|
||||||
if co == "BREAK" then
|
ret[key] = task_traceback(co)
|
||||||
ret[key] = "BREAK"
|
|
||||||
elseif timeout_traceback and timeout_traceback[co] then
|
|
||||||
ret[key] = timeout_traceback[co]
|
|
||||||
else
|
|
||||||
ret[key] = traceback(co)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
elseif tt == "number" then
|
elseif tt == "number" then
|
||||||
local co = session_id_coroutine[ret]
|
local co = session_id_coroutine[ret]
|
||||||
if co then
|
if co then
|
||||||
if co == "BREAK" then
|
return task_traceback(co)
|
||||||
return "BREAK"
|
|
||||||
else
|
|
||||||
return traceback(co)
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
return "No session"
|
return "No session"
|
||||||
end
|
end
|
||||||
@@ -1130,7 +1130,7 @@ end
|
|||||||
function skynet.uniqtask()
|
function skynet.uniqtask()
|
||||||
local stacks = {}
|
local stacks = {}
|
||||||
for session, co in pairs(session_id_coroutine) do
|
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 = {}}
|
local info = stacks[stack] or {count = 0, sessions = {}}
|
||||||
info.count = info.count + 1
|
info.count = info.count + 1
|
||||||
if info.count < 10 then
|
if info.count < 10 then
|
||||||
|
|||||||
Reference in New Issue
Block a user