Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tclegg@veritasgenetics.com>
}
func (q *Queue) Lock(uuid string) error {
}
func (q *Queue) Lock(uuid string) error {
+ q.mtx.Lock()
+ defer q.mtx.Unlock()
return q.changeState(uuid, arvados.ContainerStateQueued, arvados.ContainerStateLocked)
}
func (q *Queue) Unlock(uuid string) error {
return q.changeState(uuid, arvados.ContainerStateQueued, arvados.ContainerStateLocked)
}
func (q *Queue) Unlock(uuid string) error {
+ q.mtx.Lock()
+ defer q.mtx.Unlock()
return q.changeState(uuid, arvados.ContainerStateLocked, arvados.ContainerStateQueued)
}
func (q *Queue) Cancel(uuid string) error {
return q.changeState(uuid, arvados.ContainerStateLocked, arvados.ContainerStateQueued)
}
func (q *Queue) Cancel(uuid string) error {
+ q.mtx.Lock()
+ defer q.mtx.Unlock()
return q.changeState(uuid, q.entries[uuid].Container.State, arvados.ContainerStateCancelled)
}
return q.changeState(uuid, q.entries[uuid].Container.State, arvados.ContainerStateCancelled)
}
+// caller must have lock.
func (q *Queue) changeState(uuid string, from, to arvados.ContainerState) error {
func (q *Queue) changeState(uuid string, from, to arvados.ContainerState) error {
- q.mtx.Lock()
- defer q.mtx.Unlock()
ent := q.entries[uuid]
if ent.Container.State != from {
return fmt.Errorf("lock failed: state=%q", ent.Container.State)
ent := q.entries[uuid]
if ent.Container.State != from {
return fmt.Errorf("lock failed: state=%q", ent.Container.State)