Change location of cleanup function

Signed-off-by: AKU <tom@tdpain.net>
This commit is contained in:
akp 2021-11-26 22:23:27 +00:00
parent 412646bec5
commit 9d2310ca08
No known key found for this signature in database
GPG key ID: AA5726202C8879B7
5 changed files with 23 additions and 22 deletions

View file

@ -63,7 +63,8 @@ func run() error {
fmt.Println("\nRunning...\n")
for roe := range runner.Run() {
r, cleanupFn := runner.Run()
for roe := range r {
if roe.Error != nil {
return roe.Error
}
@ -71,6 +72,10 @@ func run() error {
lookupTable[roe.Result.TaskID](roe.Result)
}
if cleanupFn != nil {
cleanupFn()
}
return nil
}

View file

@ -66,7 +66,7 @@ func (c *customWriter) GetEntry() ([]byte, error) {
return x, nil
}
func readResultsFromCommand(cmd *exec.Cmd, cleanupFn func()) chan ResultOrError {
func readResultsFromCommand(cmd *exec.Cmd) chan ResultOrError {
stdoutWriter := &customWriter{}
stderrBuffer := new(bytes.Buffer)
@ -123,10 +123,6 @@ func readResultsFromCommand(cmd *exec.Cmd, cleanupFn func()) chan ResultOrError
close(c)
_ = cmd.Process.Kill()
if cleanupFn != nil {
cleanupFn()
}
}()
return c

View file

@ -33,7 +33,7 @@ func (g *golangRunner) Queue(task *Task) {
//go:embed interface/go.go
var golangInterface []byte
func (g *golangRunner) Run() chan ResultOrError {
func (g *golangRunner) Run() (chan ResultOrError, func()) {
wrapperFilename := "runtime-wrapper.go"
wrapperExecutable := "runtime-wrapper"
@ -44,7 +44,7 @@ func (g *golangRunner) Run() chan ResultOrError {
// generate interaction data
taskJSON, err := json.Marshal(g.tasks)
if err != nil {
return makeErrorChan(err)
return makeErrorChan(err), nil
}
// determine package import path
@ -60,7 +60,7 @@ func (g *golangRunner) Run() chan ResultOrError {
ImportPath string
}{importPath})
if err != nil {
return makeErrorChan(err)
return makeErrorChan(err), nil
}
wrapperContent = b.Bytes()
}
@ -68,7 +68,7 @@ func (g *golangRunner) Run() chan ResultOrError {
// save interaction code
err = ioutil.WriteFile(wrapperFilepath, wrapperContent, 0644)
if err != nil {
return makeErrorChan(err)
return makeErrorChan(err), nil
}
// compile executable
@ -78,16 +78,16 @@ func (g *golangRunner) Run() chan ResultOrError {
cmd.Stderr = stderrBuffer
err = cmd.Run()
if err != nil {
return makeErrorChan(fmt.Errorf("compilation failed: %s: %s", err, stderrBuffer.String()))
return makeErrorChan(fmt.Errorf("compilation failed: %s: %s", err, stderrBuffer.String())), nil
}
if !cmd.ProcessState.Success() {
return makeErrorChan(errors.New("compilation failed, hence cannot continue"))
return makeErrorChan(errors.New("compilation failed, hence cannot continue")), nil
}
absExecPath, err := filepath.Abs(wrapperExecutableFilepath)
if err != nil {
return makeErrorChan(err)
return makeErrorChan(err), nil
}
// run executable
@ -96,9 +96,9 @@ func (g *golangRunner) Run() chan ResultOrError {
cmd.Stdin = bytes.NewReader(append(taskJSON, '\n'))
return readResultsFromCommand(cmd, func() {
return readResultsFromCommand(cmd), func() {
// remove leftover files
_ = os.Remove(wrapperFilepath)
_ = os.Remove(wrapperExecutableFilepath)
})
}
}

View file

@ -30,7 +30,7 @@ func (p *pythonRunner) Queue(task *Task) {
//go:embed interface/python.py
var pythonInterface []byte
func (p *pythonRunner) Run() chan ResultOrError {
func (p *pythonRunner) Run() (chan ResultOrError, func()) {
wrapperFilename := "runtime-wrapper.py"
wrapperFilepath := filepath.Join(p.dir, wrapperFilename)
@ -38,18 +38,18 @@ func (p *pythonRunner) Run() chan ResultOrError {
// Generate interaction data
taskJSON, err := json.Marshal(p.tasks)
if err != nil {
return makeErrorChan(err)
return makeErrorChan(err), nil
}
// Save interaction code
err = ioutil.WriteFile(wrapperFilepath, pythonInterface, 0644)
if err != nil {
return makeErrorChan(err)
return makeErrorChan(err), nil
}
cwd, err := os.Getwd()
if err != nil {
return makeErrorChan(err)
return makeErrorChan(err), nil
}
pythonPathVar := filepath.Join(cwd, "lib")
@ -61,8 +61,8 @@ func (p *pythonRunner) Run() chan ResultOrError {
cmd.Stdin = bytes.NewReader(append(taskJSON, '\n'))
return readResultsFromCommand(cmd, func() {
return readResultsFromCommand(cmd), func() {
// Remove leftover files
_ = os.Remove(wrapperFilepath)
})
}
}

View file

@ -10,7 +10,7 @@ const (
type Runner interface {
Queue(task *Task)
Run() chan ResultOrError
Run() (chan ResultOrError, func())
}
type ResultOrError struct {