mirror of
https://github.com/yusing/godoxy.git
synced 2025-06-01 01:22:34 +02:00
46 lines
1 KiB
Go
46 lines
1 KiB
Go
package task
|
|
|
|
import (
|
|
"github.com/rs/zerolog/log"
|
|
"github.com/yusing/go-proxy/internal/gperr"
|
|
)
|
|
|
|
// debug only.
|
|
func (t *Task) listStuckedCallbacks() []string {
|
|
callbacks := make([]string, 0, len(t.callbacks))
|
|
for c := range t.callbacks {
|
|
if !c.done.Load() {
|
|
callbacks = append(callbacks, c.about)
|
|
}
|
|
}
|
|
return callbacks
|
|
}
|
|
|
|
// debug only.
|
|
func (t *Task) listStuckedChildren() []string {
|
|
children := make([]string, 0, len(t.children))
|
|
for c := range t.children {
|
|
if c.isFinished() {
|
|
continue
|
|
}
|
|
children = append(children, c.String())
|
|
if len(c.children) > 0 {
|
|
children = append(children, c.listStuckedChildren()...)
|
|
}
|
|
}
|
|
return children
|
|
}
|
|
|
|
func (t *Task) reportStucked() {
|
|
callbacks := t.listStuckedCallbacks()
|
|
children := t.listStuckedChildren()
|
|
fmtOutput := gperr.Multiline().
|
|
Addf("stucked callbacks: %d, stucked children: %d",
|
|
len(callbacks), len(children),
|
|
).
|
|
Addf("callbacks").
|
|
AddLinesString(callbacks...).
|
|
Addf("children").
|
|
AddLinesString(children...)
|
|
log.Warn().Msg(fmtOutput.Error())
|
|
}
|