Skip to content

Commit

Permalink
🐛 preemption (policy) enabled stomped by task manager. Race condition.
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff Ortel <[email protected]>
  • Loading branch information
jortel committed Jul 15, 2024
1 parent 36360b3 commit 2b12f5a
Showing 1 changed file with 53 additions and 22 deletions.
75 changes: 53 additions & 22 deletions task/manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,8 +181,7 @@ func (m *Manager) Update(db *gorm.DB, requested *Task) (err error) {
return
}
switch task.State {
case Created,
Ready:
case Created:
task.UpdateUser = requested.UpdateUser
task.Name = requested.Name
task.Kind = requested.Kind
Expand All @@ -195,29 +194,42 @@ func (m *Manager) Update(db *gorm.DB, requested *Task) (err error) {
task.TTL = requested.TTL
task.Data = requested.Data
task.ApplicationID = requested.ApplicationID
case Pending,
err = m.findRefs(task)
if err != nil {
return
}
db = db.Where("state", Created)
err = db.Save(task).Error
if err != nil {
err = liberr.Wrap(err)
return
}
case Ready,
Pending,
QuotaBlocked,
Postponed:
task.UpdateUser = requested.UpdateUser
task.Name = requested.Name
task.Locator = requested.Locator
task.Data = requested.Data
task.Priority = requested.Priority
task.Policy = requested.Policy
task.TTL = requested.TTL
db = db.Where(
"state IN (?)",
[]string{
Ready,
Pending,
QuotaBlocked,
Postponed,
})
err = db.Save(task).Error
if err != nil {
err = liberr.Wrap(err)
return
}
default:
// discarded.
return
}
err = m.findRefs(task)
if err != nil {
return
}
err = db.Save(task).Error
if err != nil {
err = liberr.Wrap(err)
return
}
return
}

Expand Down Expand Up @@ -268,7 +280,7 @@ func (m *Manager) Cancel(db *gorm.DB, id uint) (err error) {
if err != nil {
return
}
err = m.DB.Save(task).Error
err = task.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -384,7 +396,7 @@ func (m *Manager) disconnected(list []*Task) (kept []*Task, err error) {
task.State = Failed
task.Terminated = &mark
task.Error("Error", "Hub is disconnected.")
err = m.DB.Save(task).Error
err = task.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -455,7 +467,7 @@ func (m *Manager) selectAddons(list []*Task) (kept []*Task, err error) {
task.Error("Error", err.Error())
task.Terminated = &mark
task.State = Failed
err = m.DB.Save(task).Error
err = task.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -608,7 +620,7 @@ func (m *Manager) postpone(list []*Task) (err error) {
updated = true
}
if updated {
err = m.DB.Save(task).Error
err = task.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -640,7 +652,7 @@ func (m *Manager) adjustPriority(list []*Task) (err error) {
return
}
task.State = Ready
err = m.DB.Save(task).Error
err = task.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -671,7 +683,7 @@ func (m *Manager) createPod(list []*Task) (err error) {
Log.Error(err, "")
return
}
err = m.DB.Save(ready).Error
err = ready.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -788,7 +800,7 @@ func (m *Manager) preempt(list []*Task) (err error) {
p.Errors = nil
p.Event(Preempted, reason)
Log.Info(reason)
err = m.DB.Save(p).Error
err = p.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -848,7 +860,7 @@ func (m *Manager) updateRunning() {
}
}
}
err = m.DB.Save(&running).Error
err = running.update(m.DB)
if err != nil {
err = liberr.Wrap(err)
return
Expand Down Expand Up @@ -1627,6 +1639,25 @@ func (r *Task) containsAny(str string, substr ...string) (matched bool) {
return
}

// update manager controlled fields.
func (r *Task) update(db *gorm.DB) (err error) {
db = db.Debug() // REMOVE THIS
db = db.Select(
"Addon",
"Extensions",
"State",
"Priority",
"Started",
"Terminated",
"Events",
"Error",
"Retries",
"Attached",
"Pod")
err = db.Save(r).Error
return
}

// Event represents a pod event.
type Event struct {
Type string
Expand Down

0 comments on commit 2b12f5a

Please sign in to comment.