libi / dcron

轻量分布式定时任务库 a lightweight distributed job scheduler library
MIT License
422 stars 73 forks source link

leaseRespChan 满了 lease keepalive response queue is full; dropping response send #23

Closed thriee closed 1 year ago

thriee commented 1 year ago

版本:master 本地测试

leaseRespChan 满了

func (e *EtcdDriver) SetHeartBeat(nodeID string) {
    leaseID, err := e.putKeyWithLease(nodeID, nodeID)
    if err != nil {
        log.Printf("putKeyWithLease error: %v", err)
        return
    }

    leaseRespChan, err := e.cli.KeepAlive(context.Background(), leaseID)

    if err != nil {
        log.Printf("keepalive error:%v", err)
        return
    }

         // 尝试修复
    go func (){
        for {
            select {
            case resp := <-leaseRespChan:
                if resp == nil {
                    log.Printf("ectd cli keepalive unexpected nil")
                }
            case <-time.After(businessTimeout):
                log.Printf("ectd cli keepalive timeout")
            }
        }
    } ()
}
libi commented 1 year ago

可以提交一个 pr 哦