libi / dcron

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

ERR: node pool is empty #76

Closed fy894684862 closed 9 months ago

fy894684862 commented 10 months ago

最近一直遇到报错:[DCron]2023/11/29 04:38:00 ERR: node pool is empty;

使用的版本

    github.com/libi/dcron v0.2.2
    github.com/robfig/cron/v3 v3.0.1
[root@dev-node1-ops1 log]# go version
go version go1.19.10 linux/amd64

初始化和相关代码,分钟级别的cron有50+,秒级的cron有一个:

`drv, _ := redis.NewDriver(&redis.Conf{ Host: g.Config().RedisStandalone.Host, Port: g.Config().RedisStandalone.Port, })

logger := log.New(os.Stdout, "[DCron]", log.LstdFlags)
rec := dcron.CronOptionChain(cron.Recover(cron.PrintfLogger(logger)))
dc := dcron.NewDcronWithOption("HbsCron", drv, rec, dcron.WithLogger(logger), dcron.WithHashReplicas(10), dcron.WithNodeUpdateDuration(time.Second*10))

dc.AddFunc("cache.WarmUPForCMDB()", g.Config().DCron.WarmUPForCMDB, func() {
    fmt.Println("DCron execute task: cache.WarmUPForCMDB()", time.Now().Format("15:04:05"))
    cache.WarmUPForCMDB()
})

dc.AddFunc("cache.LoopInit()", g.Config().DCron.LoopInit, func() {
    fmt.Println("DCron execute task: cache.LoopInit()", time.Now().Format("15:04:05"))
    cache.MonitoredHosts.Init()
    cache.MonitoredHosts.CorrectInitHost()
})

...... dc.Start()

secondLevelCron := dcron.NewDcron("secondLevelCron", drv, cron.WithSeconds()) secondLevelCron.AddFunc("cache.DeliveryTimeoutCheck()", g.Config().DCron.DeliveryTimeoutCheck, func() { fmt.Println("DCron execute secondLevelCron task: cache.DeliveryTimeoutCheck()", time.Now().Format("15:04:05")) cmd_tunnel.DeliveryTimeoutCheck() })

secondLevelCron.Start()

`

具体报错

Nov 29 04:38:00 dev-node1-ops1 hbs: DCron execute secondLevelCron task: cache.DeliveryTimeoutCheck() 04:38:00
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 INFO: job 'cache.AutoAddStatusForMaintenance()' running in node
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 ERR: node pool is empty
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 INFO: job 'cache.PopulateWorkersByTeamManagers()' running in node
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 ERR: node pool is empty
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 INFO: job 'cache.SyncSpecifiedRecords()' running in node
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 INFO: job 'cache.SetStaleSysProperty()' running in node
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 ERR: node pool is empty
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 ERR: node pool is empty
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 INFO: job 'cache.CallIncident()' running in node
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 ERR: node pool is empty
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 INFO: job 'cache.GetCache2mongo()' running in node
Nov 29 04:38:00 dev-node1-ops1 hbs: [DCron]2023/11/29 04:38:00 ERR: node pool is empty
dxyinme commented 10 months ago

同样的问题在最新的版本中是否可以复现呢? 最新的版本号为v0.5.2

fy894684862 commented 10 months ago

最新版本download redis driver 失败

[root@dev-node1-ops1 hbs]# go run main.go
cron/dcron.go:16:2: no required module provides package github.com/libi/dcron/driver/redis; to add it:
    go get github.com/libi/dcron/driver/redis
[root@dev-node1-ops1 hbs]#
[root@dev-node1-ops1 hbs]#
[root@dev-node1-ops1 hbs]#
[root@dev-node1-ops1 hbs]#
[root@dev-node1-ops1 hbs]#
[root@dev-node1-ops1 hbs]# go get github.com/libi/dcron/driver/redis
go: module github.com/libi/dcron@upgrade found (v0.5.2), but does not contain package github.com/libi/dcron/driver/redis
[root@dev-node1-ops1 hbs]#
dxyinme commented 10 months ago

v0.2.2的API跟v0.5.2差别比较大,请根据最新版本的example修改一下

dxyinme commented 9 months ago

如果还有别的问题的话请reopen这个issue