Skip to content

Commit

Permalink
Update to tick wait when it quick-fails
Browse files Browse the repository at this point in the history
Resolves #210
  • Loading branch information
LordRalex committed Mar 21, 2023
1 parent a1c1c40 commit db4e5aa
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 8 deletions.
2 changes: 0 additions & 2 deletions environments/docker/docker.go
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,6 @@ func (d *docker) dockerExecuteAsync(steps pufferpanel.ExecutionData) error {
return pufferpanel.ErrContainerRunning
}

d.Wait.Wait()

if d.downloadingImage {
return pufferpanel.ErrImageDownloading
}
Expand Down
7 changes: 5 additions & 2 deletions environments/standard/standard.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func (s *standard) standardExecuteAsync(steps pufferpanel.ExecutionData) (err er
err = pufferpanel.ErrProcessRunning
return
}
s.Wait.Wait()

s.Wait.Add(1)
s.mainProcess = exec.Command(steps.Command, steps.Arguments...)
s.mainProcess.Dir = path.Join(s.GetRootDirectory(), steps.WorkingDirectory)
Expand All @@ -67,6 +67,7 @@ func (s *standard) standardExecuteAsync(steps pufferpanel.ExecutionData) (err er
s.mainProcess.Stderr = wrapper
pipe, err := s.mainProcess.StdinPipe()
if err != nil {
s.Wait.Done()
return
}
s.stdInWriter = pipe
Expand All @@ -78,6 +79,7 @@ func (s *standard) standardExecuteAsync(steps pufferpanel.ExecutionData) (err er

err = s.mainProcess.Start()
if err != nil && err.Error() != "exit status 1" {
s.Wait.Done()
msg := messages.Status{Running: false}
_ = s.WSManager.WriteMessage(msg)
s.Log(logging.Info, "Process failed to start: %s", err)
Expand Down Expand Up @@ -189,7 +191,6 @@ func (s *standard) SendCode(code int) error {

func (s *standard) handleClose(callback func(exitCode int)) {
err := s.mainProcess.Wait()
s.Wait.Done()

msg := messages.Status{Running: false}
_ = s.WSManager.WriteMessage(msg)
Expand All @@ -209,6 +210,8 @@ func (s *standard) handleClose(callback func(exitCode int)) {
s.mainProcess = nil
s.stdInWriter = nil

s.Wait.Done()

if callback != nil {
callback(exitCode)
}
Expand Down
8 changes: 4 additions & 4 deletions environments/tty/tty.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,6 @@ func (t *tty) ttyExecuteAsync(steps pufferpanel.ExecutionData) (err error) {
err = pufferpanel.ErrProcessRunning
return
}
t.Wait.Wait()

pr := exec.Command(steps.Command, steps.Arguments...)
pr.Dir = path.Join(t.GetRootDirectory(), steps.WorkingDirectory)
Expand All @@ -69,15 +68,16 @@ func (t *tty) ttyExecuteAsync(steps pufferpanel.ExecutionData) (err error) {
msg := messages.Status{Running: true}
_ = t.WSManager.WriteMessage(msg)

tty, err := pty.Start(pr)
processTty, err := pty.Start(pr)
if err != nil {
t.Wait.Done()
return
}

t.stdInWriter = tty
t.stdInWriter = processTty

go func(proxy io.Writer) {
_, _ = io.Copy(proxy, tty)
_, _ = io.Copy(proxy, processTty)
}(wrapper)

go t.handleClose(steps.Callback)
Expand Down

0 comments on commit db4e5aa

Please sign in to comment.