镜像自地址
https://github.com/tuna/tunasync.git
已同步 2025-12-07 15:06:47 +00:00
[bug fix] stalled scheduler if post-sync hook runs for a time which is longer than the sync interval
这个提交包含在:
@@ -183,27 +183,33 @@ func (m *mirrorJob) Run(managerChan chan<- jobMessage, semaphore chan empty) err
|
|||||||
if syncErr == nil {
|
if syncErr == nil {
|
||||||
// syncing success
|
// syncing success
|
||||||
logger.Noticef("succeeded syncing %s", m.Name())
|
logger.Noticef("succeeded syncing %s", m.Name())
|
||||||
m.size = provider.DataSize()
|
|
||||||
managerChan <- jobMessage{tunasync.Success, m.Name(), "", (m.State() == stateReady)}
|
|
||||||
// post-success hooks
|
// post-success hooks
|
||||||
|
logger.Debug("post-success hooks")
|
||||||
err := runHooks(rHooks, func(h jobHook) error { return h.postSuccess() }, "post-success")
|
err := runHooks(rHooks, func(h jobHook) error { return h.postSuccess() }, "post-success")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
} else {
|
||||||
|
// syncing failed
|
||||||
|
logger.Warningf("failed syncing %s: %s", m.Name(), syncErr.Error())
|
||||||
|
// post-fail hooks
|
||||||
|
logger.Debug("post-fail hooks")
|
||||||
|
err := runHooks(rHooks, func(h jobHook) error { return h.postFail() }, "post-fail")
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if syncErr == nil {
|
||||||
|
// syncing success
|
||||||
|
m.size = provider.DataSize()
|
||||||
|
managerChan <- jobMessage{tunasync.Success, m.Name(), "", (m.State() == stateReady)}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// syncing failed
|
// syncing failed
|
||||||
logger.Warningf("failed syncing %s: %s", m.Name(), syncErr.Error())
|
|
||||||
managerChan <- jobMessage{tunasync.Failed, m.Name(), syncErr.Error(), (retry == provider.Retry()-1) && (m.State() == stateReady)}
|
managerChan <- jobMessage{tunasync.Failed, m.Name(), syncErr.Error(), (retry == provider.Retry()-1) && (m.State() == stateReady)}
|
||||||
|
|
||||||
// post-fail hooks
|
|
||||||
logger.Debug("post-fail hooks")
|
|
||||||
err = runHooks(rHooks, func(h jobHook) error { return h.postFail() }, "post-fail")
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
// gracefully exit
|
// gracefully exit
|
||||||
if stopASAP {
|
if stopASAP {
|
||||||
logger.Debug("No retry, exit directly")
|
logger.Debug("No retry, exit directly")
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户