fixed cronjob problems, Web now stores the entryID instead of entry struct
This commit is contained in:
parent
53e50853cc
commit
189a37405a
2 changed files with 15 additions and 14 deletions
28
main.go
28
main.go
|
@ -35,7 +35,7 @@ type Web struct {
|
||||||
templates multitemplate.Renderer
|
templates multitemplate.Renderer
|
||||||
cron *cron.Cron
|
cron *cron.Cron
|
||||||
urlCache map[string]string
|
urlCache map[string]string
|
||||||
cronWatch map[uint]cron.Entry
|
cronWatch map[uint]cron.EntryID
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
notifiers map[string]notifiers.Notifier
|
notifiers map[string]notifiers.Notifier
|
||||||
}
|
}
|
||||||
|
@ -132,7 +132,7 @@ func (web *Web) initTemplates() {
|
||||||
func (web *Web) initCronJobs() {
|
func (web *Web) initCronJobs() {
|
||||||
var cronFilters []Filter
|
var cronFilters []Filter
|
||||||
web.db.Model(&Filter{}).Find(&cronFilters, "type = 'cron'")
|
web.db.Model(&Filter{}).Find(&cronFilters, "type = 'cron'")
|
||||||
web.cronWatch = make(map[uint]cron.Entry, len(cronFilters))
|
web.cronWatch = make(map[uint]cron.EntryID, len(cronFilters))
|
||||||
web.cron = cron.New()
|
web.cron = cron.New()
|
||||||
for _, cronFilter := range cronFilters {
|
for _, cronFilter := range cronFilters {
|
||||||
entryID, err := web.cron.AddFunc(cronFilter.Var1, func() { triggerSchedule(cronFilter.WatchID, web, &cronFilter.ID) })
|
entryID, err := web.cron.AddFunc(cronFilter.Var1, func() { triggerSchedule(cronFilter.WatchID, web, &cronFilter.ID) })
|
||||||
|
@ -141,7 +141,7 @@ func (web *Web) initCronJobs() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
log.Println("Started CronJob for WatchID", cronFilter.WatchID, "with schedule:", cronFilter.Var1)
|
log.Println("Started CronJob for WatchID", cronFilter.WatchID, "with schedule:", cronFilter.Var1)
|
||||||
web.cronWatch[cronFilter.ID] = web.cron.Entry(entryID)
|
web.cronWatch[cronFilter.ID] = entryID
|
||||||
}
|
}
|
||||||
web.cron.Start()
|
web.cron.Start()
|
||||||
}
|
}
|
||||||
|
@ -192,11 +192,12 @@ func (web *Web) index(c *gin.Context) {
|
||||||
var filters []Filter
|
var filters []Filter
|
||||||
web.db.Model(&Filter{}).Find(&filters, "type = 'cron'")
|
web.db.Model(&Filter{}).Find(&filters, "type = 'cron'")
|
||||||
for _, filter := range filters {
|
for _, filter := range filters {
|
||||||
entry, exists := web.cronWatch[filter.ID]
|
entryID, exists := web.cronWatch[filter.ID]
|
||||||
if !exists {
|
if !exists {
|
||||||
log.Println("No cron entry for filter", filter.ID, filter.Name)
|
log.Println("No cron entry for filter", filter.ID, filter.Name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
entry := web.cron.Entry(entryID)
|
||||||
watchMap[filter.WatchID].CronEntry = &entry
|
watchMap[filter.WatchID].CronEntry = &entry
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -228,9 +229,9 @@ func (web *Web) deleteWatch(c *gin.Context) {
|
||||||
var cronFilters []Filter
|
var cronFilters []Filter
|
||||||
web.db.Model(&Filter{}).Find(&cronFilters, "watch_id = ? AND type = 'cron'", id)
|
web.db.Model(&Filter{}).Find(&cronFilters, "watch_id = ? AND type = 'cron'", id)
|
||||||
for _, filter := range cronFilters {
|
for _, filter := range cronFilters {
|
||||||
entry, exist := web.cronWatch[filter.ID]
|
entryID, exist := web.cronWatch[filter.ID]
|
||||||
if exist {
|
if exist {
|
||||||
web.cron.Remove(entry.ID)
|
web.cron.Remove(entryID)
|
||||||
delete(web.cronWatch, filter.ID)
|
delete(web.cronWatch, filter.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -249,11 +250,12 @@ func (web *Web) watchView(c *gin.Context) {
|
||||||
var cronFilters []Filter
|
var cronFilters []Filter
|
||||||
web.db.Model(&Filter{}).Find(&cronFilters, "watch_id = ? AND type = 'cron'", id)
|
web.db.Model(&Filter{}).Find(&cronFilters, "watch_id = ? AND type = 'cron'", id)
|
||||||
for _, filter := range cronFilters {
|
for _, filter := range cronFilters {
|
||||||
entry, exists := web.cronWatch[filter.ID]
|
entryID, exists := web.cronWatch[filter.ID]
|
||||||
if !exists {
|
if !exists {
|
||||||
log.Println("Could not find entry for filter", filter.ID, filter.Name)
|
log.Println("Could not find entry for filter", filter.ID, filter.Name)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
entry := web.cron.Entry(entryID)
|
||||||
watch.CronEntry = &entry
|
watch.CronEntry = &entry
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,9 +342,9 @@ func (web *Web) watchUpdate(c *gin.Context) {
|
||||||
var cronFilters []Filter
|
var cronFilters []Filter
|
||||||
web.db.Model(&Filter{}).Where("watch_id = ? AND type = 'cron'", watch.ID).Find(&cronFilters)
|
web.db.Model(&Filter{}).Where("watch_id = ? AND type = 'cron'", watch.ID).Find(&cronFilters)
|
||||||
for _, filter := range cronFilters {
|
for _, filter := range cronFilters {
|
||||||
entry, exist := web.cronWatch[filter.ID]
|
entryID, exist := web.cronWatch[filter.ID]
|
||||||
if exist {
|
if exist {
|
||||||
web.cron.Remove(entry.ID)
|
web.cron.Remove(entryID)
|
||||||
delete(web.cronWatch, filter.ID)
|
delete(web.cronWatch, filter.ID)
|
||||||
} else {
|
} else {
|
||||||
log.Println("Tried removing cron entry but ID not found ", filter.ID)
|
log.Println("Tried removing cron entry but ID not found ", filter.ID)
|
||||||
|
@ -373,7 +375,7 @@ func (web *Web) watchUpdate(c *gin.Context) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
log.Println("Started CronJob for WatchID", filter.WatchID, "FilterID", filter.ID, "with schedule:", filter.Var1)
|
log.Println("Started CronJob for WatchID", filter.WatchID, "FilterID", filter.ID, "with schedule:", filter.Var1)
|
||||||
web.cronWatch[filter.ID] = web.cron.Entry(entryID)
|
web.cronWatch[filter.ID] = entryID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,9 +448,9 @@ func (web *Web) importWatch(c *gin.Context) {
|
||||||
var cronFilters []Filter
|
var cronFilters []Filter
|
||||||
web.db.Model(&Filter{}).Where("watch_id = ? AND type = 'cron'", watchID).Find(&cronFilters)
|
web.db.Model(&Filter{}).Where("watch_id = ? AND type = 'cron'", watchID).Find(&cronFilters)
|
||||||
for _, filter := range cronFilters {
|
for _, filter := range cronFilters {
|
||||||
entry, exist := web.cronWatch[filter.ID]
|
entryID, exist := web.cronWatch[filter.ID]
|
||||||
if exist {
|
if exist {
|
||||||
web.cron.Remove(entry.ID)
|
web.cron.Remove(entryID)
|
||||||
delete(web.cronWatch, filter.ID)
|
delete(web.cronWatch, filter.ID)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -476,7 +478,7 @@ func (web *Web) importWatch(c *gin.Context) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
log.Println("Started CronJob for WatchID", filter.WatchID, "with schedule:", filter.Var1)
|
log.Println("Started CronJob for WatchID", filter.WatchID, "with schedule:", filter.Var1)
|
||||||
web.cronWatch[filter.ID] = web.cron.Entry(entryID)
|
web.cronWatch[filter.ID] = entryID
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
1
todo.md
1
todo.md
|
@ -8,5 +8,4 @@
|
||||||
- sms?
|
- sms?
|
||||||
- etch?
|
- etch?
|
||||||
- trusted proxies in conf?
|
- trusted proxies in conf?
|
||||||
- cron jobs not starting on startup
|
|
||||||
- log things to db for cron runs
|
- log things to db for cron runs
|
Loading…
Add table
Reference in a new issue