Bump go-runc for buffer race fix
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
This commit is contained in:
parent
640ca7812f
commit
cd23ad2447
@ -5,7 +5,7 @@ github.com/containerd/cgroups abd0b19954a6b05e0963f4842706
|
|||||||
github.com/containerd/console 0650fd9eeb50bab4fc99dceb9f2e14cf58f36e7f
|
github.com/containerd/console 0650fd9eeb50bab4fc99dceb9f2e14cf58f36e7f
|
||||||
github.com/containerd/continuity f2a389ac0a02ce21c09edd7344677a601970f41c
|
github.com/containerd/continuity f2a389ac0a02ce21c09edd7344677a601970f41c
|
||||||
github.com/containerd/fifo bda0ff6ed73c67bfb5e62bc9c697f146b7fd7f13
|
github.com/containerd/fifo bda0ff6ed73c67bfb5e62bc9c697f146b7fd7f13
|
||||||
github.com/containerd/go-runc a2952bc25f5116103a8b78f3817f6df759aa7def
|
github.com/containerd/go-runc a5c2862aed5e6358b305b0e16bfce58e0549b1cd
|
||||||
github.com/containerd/ttrpc 92c8520ef9f86600c650dd540266a007bf03670f
|
github.com/containerd/ttrpc 92c8520ef9f86600c650dd540266a007bf03670f
|
||||||
github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40
|
github.com/containerd/typeurl a93fcdb778cd272c6e9b3028b2f42d813e785d40
|
||||||
github.com/coreos/go-systemd 48702e0da86bd25e76cfef347e2adeb434a0d0a6
|
github.com/coreos/go-systemd 48702e0da86bd25e76cfef347e2adeb434a0d0a6
|
||||||
|
38
vendor/github.com/containerd/go-runc/runc.go
generated
vendored
38
vendor/github.com/containerd/go-runc/runc.go
generated
vendored
@ -17,6 +17,7 @@
|
|||||||
package runc
|
package runc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"bytes"
|
||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"errors"
|
"errors"
|
||||||
@ -72,11 +73,12 @@ type Runc struct {
|
|||||||
// List returns all containers created inside the provided runc root directory
|
// List returns all containers created inside the provided runc root directory
|
||||||
func (r *Runc) List(context context.Context) ([]*Container, error) {
|
func (r *Runc) List(context context.Context) ([]*Container, error) {
|
||||||
data, err := cmdOutput(r.command(context, "list", "--format=json"), false)
|
data, err := cmdOutput(r.command(context, "list", "--format=json"), false)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
var out []*Container
|
var out []*Container
|
||||||
if err := json.Unmarshal(data, &out); err != nil {
|
if err := json.Unmarshal(data.Bytes(), &out); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return out, nil
|
return out, nil
|
||||||
@ -85,11 +87,12 @@ func (r *Runc) List(context context.Context) ([]*Container, error) {
|
|||||||
// State returns the state for the container provided by id
|
// State returns the state for the container provided by id
|
||||||
func (r *Runc) State(context context.Context, id string) (*Container, error) {
|
func (r *Runc) State(context context.Context, id string) (*Container, error) {
|
||||||
data, err := cmdOutput(r.command(context, "state", id), true)
|
data, err := cmdOutput(r.command(context, "state", id), true)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%s: %s", err, data)
|
return nil, fmt.Errorf("%s: %s", err, data.String())
|
||||||
}
|
}
|
||||||
var c Container
|
var c Container
|
||||||
if err := json.Unmarshal(data, &c); err != nil {
|
if err := json.Unmarshal(data.Bytes(), &c); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return &c, nil
|
return &c, nil
|
||||||
@ -154,8 +157,9 @@ func (r *Runc) Create(context context.Context, id, bundle string, opts *CreateOp
|
|||||||
|
|
||||||
if cmd.Stdout == nil && cmd.Stderr == nil {
|
if cmd.Stdout == nil && cmd.Stderr == nil {
|
||||||
data, err := cmdOutput(cmd, true)
|
data, err := cmdOutput(cmd, true)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %s", err, data)
|
return fmt.Errorf("%s: %s", err, data.String())
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -233,8 +237,9 @@ func (r *Runc) Exec(context context.Context, id string, spec specs.Process, opts
|
|||||||
}
|
}
|
||||||
if cmd.Stdout == nil && cmd.Stderr == nil {
|
if cmd.Stdout == nil && cmd.Stderr == nil {
|
||||||
data, err := cmdOutput(cmd, true)
|
data, err := cmdOutput(cmd, true)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %s", err, data)
|
return fmt.Errorf("%s: %s", err, data.String())
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
@ -399,11 +404,12 @@ func (r *Runc) Resume(context context.Context, id string) error {
|
|||||||
// Ps lists all the processes inside the container returning their pids
|
// Ps lists all the processes inside the container returning their pids
|
||||||
func (r *Runc) Ps(context context.Context, id string) ([]int, error) {
|
func (r *Runc) Ps(context context.Context, id string) ([]int, error) {
|
||||||
data, err := cmdOutput(r.command(context, "ps", "--format", "json", id), true)
|
data, err := cmdOutput(r.command(context, "ps", "--format", "json", id), true)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%s: %s", err, data)
|
return nil, fmt.Errorf("%s: %s", err, data.String())
|
||||||
}
|
}
|
||||||
var pids []int
|
var pids []int
|
||||||
if err := json.Unmarshal(data, &pids); err != nil {
|
if err := json.Unmarshal(data.Bytes(), &pids); err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
return pids, nil
|
return pids, nil
|
||||||
@ -412,11 +418,12 @@ func (r *Runc) Ps(context context.Context, id string) ([]int, error) {
|
|||||||
// Top lists all the processes inside the container returning the full ps data
|
// Top lists all the processes inside the container returning the full ps data
|
||||||
func (r *Runc) Top(context context.Context, id string, psOptions string) (*TopResults, error) {
|
func (r *Runc) Top(context context.Context, id string, psOptions string) (*TopResults, error) {
|
||||||
data, err := cmdOutput(r.command(context, "ps", "--format", "table", id, psOptions), true)
|
data, err := cmdOutput(r.command(context, "ps", "--format", "table", id, psOptions), true)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%s: %s", err, data)
|
return nil, fmt.Errorf("%s: %s", err, data.String())
|
||||||
}
|
}
|
||||||
|
|
||||||
topResults, err := ParsePSOutput(data)
|
topResults, err := ParsePSOutput(data.Bytes())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("%s: ", err)
|
return nil, fmt.Errorf("%s: ", err)
|
||||||
}
|
}
|
||||||
@ -606,10 +613,11 @@ type Version struct {
|
|||||||
// Version returns the runc and runtime-spec versions
|
// Version returns the runc and runtime-spec versions
|
||||||
func (r *Runc) Version(context context.Context) (Version, error) {
|
func (r *Runc) Version(context context.Context) (Version, error) {
|
||||||
data, err := cmdOutput(r.command(context, "--version"), false)
|
data, err := cmdOutput(r.command(context, "--version"), false)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return Version{}, err
|
return Version{}, err
|
||||||
}
|
}
|
||||||
return parseVersion(data)
|
return parseVersion(data.Bytes())
|
||||||
}
|
}
|
||||||
|
|
||||||
func parseVersion(data []byte) (Version, error) {
|
func parseVersion(data []byte) (Version, error) {
|
||||||
@ -687,15 +695,17 @@ func (r *Runc) runOrError(cmd *exec.Cmd) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
data, err := cmdOutput(cmd, true)
|
data, err := cmdOutput(cmd, true)
|
||||||
|
defer putBuf(data)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("%s: %s", err, data)
|
return fmt.Errorf("%s: %s", err, data.String())
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func cmdOutput(cmd *exec.Cmd, combined bool) ([]byte, error) {
|
// callers of cmdOutput are expected to call putBuf on the returned Buffer
|
||||||
|
// to ensure it is released back to the shared pool after use.
|
||||||
|
func cmdOutput(cmd *exec.Cmd, combined bool) (*bytes.Buffer, error) {
|
||||||
b := getBuf()
|
b := getBuf()
|
||||||
defer putBuf(b)
|
|
||||||
|
|
||||||
cmd.Stdout = b
|
cmd.Stdout = b
|
||||||
if combined {
|
if combined {
|
||||||
@ -711,5 +721,5 @@ func cmdOutput(cmd *exec.Cmd, combined bool) ([]byte, error) {
|
|||||||
err = fmt.Errorf("%s did not terminate successfully", cmd.Args[0])
|
err = fmt.Errorf("%s did not terminate successfully", cmd.Args[0])
|
||||||
}
|
}
|
||||||
|
|
||||||
return b.Bytes(), err
|
return b, err
|
||||||
}
|
}
|
||||||
|
4
vendor/github.com/containerd/go-runc/utils.go
generated
vendored
4
vendor/github.com/containerd/go-runc/utils.go
generated
vendored
@ -57,6 +57,10 @@ func getBuf() *bytes.Buffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func putBuf(b *bytes.Buffer) {
|
func putBuf(b *bytes.Buffer) {
|
||||||
|
if b == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
b.Reset()
|
b.Reset()
|
||||||
bytesBufferPool.Put(b)
|
bytesBufferPool.Put(b)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user