1
0
镜像自地址 https://github.com/tuna/tunasync.git 已同步 2025-12-06 06:26:46 +00:00

fix(worker): fixed job status and control logic

这个提交包含在:
bigeagle
2016-04-28 22:46:53 +08:00
父节点 5f78722936
当前提交 292a24ba20
共有 6 个文件被更改,包括 174 次插入70 次删除

查看文件

@@ -194,6 +194,24 @@ func (s *Manager) updateJobOfWorker(c *gin.Context) {
var status MirrorStatus
c.BindJSON(&status)
mirrorName := status.Name
curStatus, err := s.adapter.GetMirrorStatus(workerID, mirrorName)
if err != nil {
err := fmt.Errorf("failed to get job %s of worker %s: %s",
mirrorName, workerID, err.Error(),
)
c.Error(err)
s.returnErrJSON(c, http.StatusInternalServerError, err)
return
}
// Only successful syncing needs last_update
if status.Status == Success {
status.LastUpdate = time.Now()
} else {
status.LastUpdate = curStatus.LastUpdate
}
newStatus, err := s.adapter.UpdateMirrorStatus(workerID, mirrorName, status)
if err != nil {
err := fmt.Errorf("failed to update job %s of worker %s: %s",
@@ -231,6 +249,22 @@ func (s *Manager) handleClientCmd(c *gin.Context) {
Args: clientCmd.Args,
}
// update job status, even if the job did not disable successfully,
// this status should be set as disabled
curStat, _ := s.adapter.GetMirrorStatus(clientCmd.WorkerID, clientCmd.MirrorID)
changed := false
switch clientCmd.Cmd {
case CmdDisable:
curStat.Status = Disabled
changed = true
case CmdStop:
curStat.Status = Paused
changed = true
}
if changed {
s.adapter.UpdateMirrorStatus(clientCmd.WorkerID, clientCmd.MirrorID, curStat)
}
// post command to worker
_, err = PostJSON(workerURL, workerCmd, s.tlsConfig)
if err != nil {