Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 11 additions & 8 deletions src/lastore-daemon/manager_download.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,13 @@ func (m *Manager) prepareDistUpgrade(sender dbus.Sender, origin system.UpdateTyp
m.statusManager.SetUpdateStatus(mode, system.DownloadErr)
return nil, dbusutil.ToError(errors.New(string(errStr)))
}
done := make(chan bool)
done := make(chan struct{}, 1)
notifyDone := func() {
select {
case done <- struct{}{}:
default:
}
}
if m.config.IntranetUpdate {
//私有化更新有忙闲时下载限速的功能,需要在真正开始下载前刷新一下线上限速配置
if err = m.refreshThrottlingFromPlatform(); err != nil {
Expand Down Expand Up @@ -297,7 +303,7 @@ func (m *Manager) prepareDistUpgrade(sender dbus.Sender, origin system.UpdateTyp
},
string(system.FailedStatus): func() error {
if m.config.IntranetUpdate {
done <- true
notifyDone()
cacheFile := "/tmp/checkpolicy.cache"
_ = os.RemoveAll(cacheFile)
}
Expand Down Expand Up @@ -381,9 +387,6 @@ func (m *Manager) prepareDistUpgrade(sender dbus.Sender, origin system.UpdateTyp
return nil
},
string(system.SucceedStatus): func() error {
if m.config.IntranetUpdate {
done <- true
}
msg := fmt.Sprintf("download %v package success", j.updateTyp.JobType())
m.updatePlatform.PostProcessEventMessage(updateplatform.ProcessEvent{
TaskID: 1,
Expand Down Expand Up @@ -469,11 +472,11 @@ func (m *Manager) prepareDistUpgrade(sender dbus.Sender, origin system.UpdateTyp
return nil
},
string(system.EndStatus): func() error {
if m.config.IntranetUpdate {
done <- true
}
if j.next == nil {
logger.Info("running in last end hook")
if m.config.IntranetUpdate {
notifyDone()
}
// 如果出现单项失败,其他的状态需要修改,IsDownloading->notDownload
// 如果已经有单项下载完成,然后取消下载,DownloadPause->notDownload
m.statusManager.SetUpdateStatus(mode, system.NotDownload)
Expand Down
5 changes: 4 additions & 1 deletion src/lastore-daemon/start_job.go
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ func TransitionJobState(j *Job, to system.Status) error {
if j.next != nil && ((j.Status == system.SucceedStatus && to == system.EndStatus) || (j.Status == system.RunningStatus && to == system.SucceedStatus)) {
inhibitSignalEmit = true
}
logger.Infof("%q transition state from %q to %q (Cancelable:%v)\n", j.Id, j.Status, to, j.Cancelable)
logger.Infof("trying to transition job %q from %q to %q (Cancelable:%v)\n", j.Id, j.Status, to, j.Cancelable)
if to == system.FailedStatus && j.retry > 0 {
j.Status = to
return nil
Expand All @@ -129,10 +129,12 @@ func TransitionJobState(j *Job, to system.Status) error {
j.PropsMu.Lock()
// 在切换running和success状态时触发一些检查,如果出错,需要终止并返回error
if (to == system.RunningStatus || to == system.SucceedStatus) && err != nil {
logger.Warningf("pre hook failed for job %q (state: %s): %v", j.Id, to, err)
return err
}
}
j.Status = to
logger.Infof("job %q successfully transitioned to %q", j.Id, to)
if NotUseDBus {
return nil
}
Expand All @@ -149,6 +151,7 @@ func TransitionJobState(j *Job, to system.Status) error {
j.PropsMu.Lock()
// 在切换running和success状态时触发一些检查,如果出错,需要终止并返回error,不过通常不会有success的after hook返回error
if (to == system.RunningStatus || to == system.SucceedStatus) && err != nil {
logger.Warningf("after hook failed for job %q (state: %s): %v", j.Id, to, err)
return err
}
}
Expand Down
Loading