Add log and more context to errors in Create

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
This commit is contained in:
Alexander Morozov 2015-12-08 10:07:55 -08:00
parent 4adf5d2c0d
commit cf3b72852a

View file

@ -14,6 +14,7 @@ import (
"strings" "strings"
"syscall" "syscall"
"github.com/Sirupsen/logrus"
"github.com/docker/containerd/runtime" "github.com/docker/containerd/runtime"
"github.com/opencontainers/runc/libcontainer" "github.com/opencontainers/runc/libcontainer"
"github.com/opencontainers/runc/libcontainer/configs" "github.com/opencontainers/runc/libcontainer/configs"
@ -355,13 +356,17 @@ func (r *libcontainerRuntime) Create(id, bundlePath string, stdio *runtime.Stdio
if err != nil { if err != nil {
return nil, err return nil, err
} }
logrus.WithFields(logrus.Fields{
"id": id,
"bundlePath": bundlePath,
}).Debugf("create container")
config, err := r.createLibcontainerConfig(id, bundlePath, spec, rspec) config, err := r.createLibcontainerConfig(id, bundlePath, spec, rspec)
if err != nil { if err != nil {
return nil, err return nil, err
} }
container, err := r.factory.Create(id, config) container, err := r.factory.Create(id, config)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("create container: %v", err)
} }
process, err := r.newProcess(spec.Process, stdio) process, err := r.newProcess(spec.Process, stdio)
if err != nil { if err != nil {
@ -413,14 +418,14 @@ func (r *libcontainerRuntime) newProcess(p specs.Process, stdio *runtime.Stdio)
if stdio.Stdout != "" { if stdio.Stdout != "" {
f, err := os.OpenFile(stdio.Stdout, os.O_CREATE|os.O_WRONLY, 0755) f, err := os.OpenFile(stdio.Stdout, os.O_CREATE|os.O_WRONLY, 0755)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("open stdout: %v", err)
} }
stdout = f stdout = f
} }
if stdio.Stderr != "" { if stdio.Stderr != "" {
f, err := os.OpenFile(stdio.Stderr, os.O_CREATE|os.O_WRONLY, 0755) f, err := os.OpenFile(stdio.Stderr, os.O_CREATE|os.O_WRONLY, 0755)
if err != nil { if err != nil {
return nil, err return nil, fmt.Errorf("open stderr: %v", err)
} }
stderr = f stderr = f
} }
@ -458,10 +463,10 @@ func (r *libcontainerRuntime) loadSpec(cPath, rPath string) (spec *specs.LinuxSp
defer rf.Close() defer rf.Close()
if err = json.NewDecoder(cf).Decode(&spec); err != nil { if err = json.NewDecoder(cf).Decode(&spec); err != nil {
return spec, rspec, err return spec, rspec, fmt.Errorf("unmarshal %s: %v", cPath, err)
} }
if err = json.NewDecoder(rf).Decode(&rspec); err != nil { if err = json.NewDecoder(rf).Decode(&rspec); err != nil {
return spec, rspec, err return spec, rspec, fmt.Errorf("unmarshal %s: %v", rPath, err)
} }
return spec, rspec, r.checkSpecVersion(spec) return spec, rspec, r.checkSpecVersion(spec)
} }