Fix: loopstate mutex unlocking

- Fix #547
- Fix all run loops for restarts
This commit is contained in:
Quentin McGaw (desktop)
2021-08-09 14:35:55 +00:00
parent 6d1a90cac0
commit a021ff6b22

View File

@@ -37,6 +37,7 @@ func (s *State) ApplyStatus(ctx context.Context, status models.LoopStatus) (
switch existingStatus { switch existingStatus {
case constants.Stopped, constants.Completed: case constants.Stopped, constants.Completed:
default: default:
s.statusMu.Unlock()
return "already " + existingStatus.String(), nil return "already " + existingStatus.String(), nil
} }
@@ -50,11 +51,13 @@ func (s *State) ApplyStatus(ctx context.Context, status models.LoopStatus) (
case <-ctx.Done(): case <-ctx.Done():
case newStatus = <-s.running: case newStatus = <-s.running:
} }
s.SetStatus(newStatus) s.SetStatus(newStatus)
return newStatus.String(), nil return newStatus.String(), nil
case constants.Stopped: case constants.Stopped:
if existingStatus != constants.Running { if existingStatus != constants.Running {
s.statusMu.Unlock()
return "already " + existingStatus.String(), nil return "already " + existingStatus.String(), nil
} }
@@ -73,6 +76,7 @@ func (s *State) ApplyStatus(ctx context.Context, status models.LoopStatus) (
return newStatus.String(), nil return newStatus.String(), nil
default: default:
s.statusMu.Unlock()
return "", fmt.Errorf("%w: %s: it can only be one of: %s, %s", return "", fmt.Errorf("%w: %s: it can only be one of: %s, %s",
ErrInvalidStatus, status, constants.Running, constants.Stopped) ErrInvalidStatus, status, constants.Running, constants.Stopped)
} }