Merge pull request #2059 from stevvooe/update-go-runc

vendor: update go-runc to reduce gc pressure
This commit is contained in:
Michael Crosby 2018-01-25 10:11:19 -05:00 committed by GitHub
commit b268261446
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 6 deletions

View File

@ -1,5 +1,5 @@
github.com/coreos/go-systemd 48702e0da86bd25e76cfef347e2adeb434a0d0a6
github.com/containerd/go-runc ed1cbe1fc31f5fb2359d3a54b6330d1a097858b7
github.com/containerd/go-runc 4f6e87ae043f859a38255247b49c9abc262d002f
github.com/containerd/console 84eeaae905fa414d03e07bcd6c8d3f19e7cf180e
github.com/containerd/cgroups 29da22c6171a4316169f9205ab6c49f59b5b852f
github.com/containerd/typeurl f6943554a7e7e88b3c14aad190bf05932da84788

View File

@ -1,7 +1,6 @@
package runc
import (
"bytes"
"context"
"encoding/json"
"errors"
@ -532,7 +531,9 @@ func (r *Runc) Restore(context context.Context, id, bundle string, opts *Restore
// Update updates the current container with the provided resource spec
func (r *Runc) Update(context context.Context, id string, resources *specs.LinuxResources) error {
buf := bytes.NewBuffer(nil)
buf := getBuf()
defer putBuf(buf)
if err := json.NewEncoder(buf).Encode(resources); err != nil {
return err
}
@ -638,11 +639,12 @@ func (r *Runc) runOrError(cmd *exec.Cmd) error {
}
func cmdOutput(cmd *exec.Cmd, combined bool) ([]byte, error) {
var b bytes.Buffer
b := getBuf()
defer putBuf(b)
cmd.Stdout = &b
cmd.Stdout = b
if combined {
cmd.Stderr = &b
cmd.Stderr = b
}
ec, err := Monitor.Start(cmd)
if err != nil {

View File

@ -1,8 +1,10 @@
package runc
import (
"bytes"
"io/ioutil"
"strconv"
"sync"
"syscall"
)
@ -26,3 +28,18 @@ func exitStatus(status syscall.WaitStatus) int {
}
return status.ExitStatus()
}
var bytesBufferPool = sync.Pool{
New: func() interface{} {
return bytes.NewBuffer(nil)
},
}
func getBuf() *bytes.Buffer {
return bytesBufferPool.Get().(*bytes.Buffer)
}
func putBuf(b *bytes.Buffer) {
b.Reset()
bytesBufferPool.Put(b)
}