panjf2000 / ants

🐜🐜🐜 ants is the most powerful and reliable pooling solution for Go.
https://ants.andypan.me/
MIT License
12.69k stars 1.36k forks source link

[Bug]: 设置了ants.WithExpiryDuration(5*time.Second) 没起作用,导致pool满后一直未释放worker,阻塞新task #313

Open wowo666 opened 7 months ago

wowo666 commented 7 months ago

Actions I've taken before I'm here

What happened?

OS: mac GO: go1.17.12 ants: v2.9.0 使用方式 : pool:= ants.NewPool(50, ants.WithExpiryDuration(5*time.Second)) 当我通过pool..Submit(funcxx) 用完 pool里worker时, 会一直阻塞无法再继续submit,等了1个小时也没释放执行完的worker

Major version of ants

v2

Specific version of ants

v2.9.0

Operating system

macOS

OS version

14.2.1 (23C71)

Go version

go1.17.12

Relevant log output

for _, v := range administrative.Child {
        firstData := *v
        fmt.Print("开始submit")
        err := vars.CronPool.Submit(func() {
            c.checkFirstData(context.Background(), &firstData)
        })
        fmt.Print("提交完submit")
        if err != nil {
            vars.ErrorLogger.WithFields(yklog.Fields{"firstData": firstData}).Errorf(ctx, "创建 检查第一级(省or市)数据异步任务失败: %s", err.Error())
            _err = err
        }
    }

Code snippets (optional)

No response

How to Reproduce

for _, v := range administrative.Child {
    firstData := *v
    fmt.Print("开始submit")
    err := vars.CronPool.Submit(func() {
        c.checkFirstData(context.Background(), &firstData)
    })
    fmt.Print("提交完submit")
    if err != nil {
        vars.ErrorLogger.WithFields(yklog.Fields{"firstData": firstData}).Errorf(ctx, "创建 检查第一级(省or市)数据异步任务失败: %s", err.Error())
        _err = err
    }
}

Does this issue reproduce with the latest release?

I haven't verified it with the latest release

panjf2000 commented 7 months ago

你提交的任务是不是都卡住了?需要等有任务结束之后新的任务才能被运行,否则就是会阻塞住。