Commit 6e961eef authored by Adrian Sutton's avatar Adrian Sutton

op-challenger: Flush logs after program exits.

The last line emitted by programs typically doesn't include a newline.
parent 5e4996fe
...@@ -80,8 +80,12 @@ func (e *Executor) GenerateProof(ctx context.Context, dir string, i uint64) erro ...@@ -80,8 +80,12 @@ func (e *Executor) GenerateProof(ctx context.Context, dir string, i uint64) erro
func runCmd(ctx context.Context, l log.Logger, binary string, args ...string) error { func runCmd(ctx context.Context, l log.Logger, binary string, args ...string) error {
cmd := exec.CommandContext(ctx, binary, args...) cmd := exec.CommandContext(ctx, binary, args...)
cmd.Stdout = oplog.NewWriter(l, log.LvlInfo) stdOut := oplog.NewWriter(l, log.LvlInfo)
cmd.Stderr = oplog.NewWriter(l, log.LvlError) defer stdOut.Close()
stdErr := oplog.NewWriter(l, log.LvlError)
defer stdErr.Close()
cmd.Stdout = stdOut
cmd.Stderr = stdErr
return cmd.Run() return cmd.Run()
} }
......
...@@ -50,3 +50,13 @@ func (w *Writer) Write(b []byte) (int, error) { ...@@ -50,3 +50,13 @@ func (w *Writer) Write(b []byte) (int, error) {
} }
return len(b), nil return len(b), nil
} }
func (w *Writer) Close() error {
w.lock.Lock()
defer w.lock.Unlock()
if len(w.pending) > 0 {
w.log(string(w.pending))
w.pending = nil
}
return nil
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment