mirror of
https://github.com/fnproject/fn.git
synced 2022-10-28 21:29:17 +03:00
Merge branch 'rm-nanny' into 'master'
remove the nanny See merge request !125
This commit is contained in:
@@ -394,12 +394,7 @@ func (drv *DockerDriver) run(ctx context.Context, container string, task drivers
|
|||||||
} else {
|
} else {
|
||||||
ctx, cancel = context.WithTimeout(ctx, timeout)
|
ctx, cancel = context.WithTimeout(ctx, timeout)
|
||||||
}
|
}
|
||||||
defer cancel() // do this so that after Run exits, nanny and collect stop
|
defer cancel() // do this so that after Run exits, collect stops
|
||||||
var complete bool
|
|
||||||
defer func() { complete = true }() // run before cancel is called
|
|
||||||
ctx = context.WithValue(ctx, completeKey, &complete)
|
|
||||||
|
|
||||||
go drv.nanny(ctx, container)
|
|
||||||
go drv.collectStats(ctx, container, task)
|
go drv.collectStats(ctx, container, task)
|
||||||
|
|
||||||
mwOut, mwErr := task.Logger()
|
mwOut, mwErr := task.Logger()
|
||||||
@@ -446,28 +441,6 @@ func (drv *DockerDriver) run(ctx context.Context, container string, task drivers
|
|||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
const completeKey = "complete"
|
|
||||||
|
|
||||||
// watch for cancel or timeout and kill process.
|
|
||||||
func (drv *DockerDriver) nanny(ctx context.Context, container string) {
|
|
||||||
select {
|
|
||||||
case <-ctx.Done():
|
|
||||||
if *(ctx.Value(completeKey).(*bool)) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
drv.cancel(container)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (drv *DockerDriver) cancel(container string) {
|
|
||||||
stopTimer := drv.NewTimer("docker", "stop_container", 1.0)
|
|
||||||
err := drv.docker.StopContainer(container, 30)
|
|
||||||
stopTimer.Measure()
|
|
||||||
if err != nil {
|
|
||||||
logrus.WithError(err).WithFields(logrus.Fields{"container": container, "errType": fmt.Sprintf("%T", err)}).Error("something managed to escape our retries web, could not kill container")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (drv *DockerDriver) collectStats(ctx context.Context, container string, task drivers.ContainerTask) {
|
func (drv *DockerDriver) collectStats(ctx context.Context, container string, task drivers.ContainerTask) {
|
||||||
log := common.Logger(ctx)
|
log := common.Logger(ctx)
|
||||||
done := make(chan bool)
|
done := make(chan bool)
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ type dockerClient interface {
|
|||||||
PullImage(opts docker.PullImageOptions, auth docker.AuthConfiguration) error
|
PullImage(opts docker.PullImageOptions, auth docker.AuthConfiguration) error
|
||||||
InspectImage(name string) (*docker.Image, error)
|
InspectImage(name string) (*docker.Image, error)
|
||||||
InspectContainer(id string) (*docker.Container, error)
|
InspectContainer(id string) (*docker.Container, error)
|
||||||
StopContainer(id string, timeout uint) error
|
|
||||||
Stats(opts docker.StatsOptions) error
|
Stats(opts docker.StatsOptions) error
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -281,16 +280,6 @@ func (d *dockerWrap) InspectContainer(id string) (c *docker.Container, err error
|
|||||||
return c, err
|
return c, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (d *dockerWrap) StopContainer(id string, timeout uint) (err error) {
|
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), retryTimeout)
|
|
||||||
defer cancel()
|
|
||||||
err = d.retry(ctx, func() error {
|
|
||||||
err = d.docker.StopContainer(id, timeout)
|
|
||||||
return err
|
|
||||||
})
|
|
||||||
return filterNotRunning(ctx, filterNoSuchContainer(ctx, err))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (d *dockerWrap) Stats(opts docker.StatsOptions) (err error) {
|
func (d *dockerWrap) Stats(opts docker.StatsOptions) (err error) {
|
||||||
// we can't retry this one this way since the callee closes the
|
// we can't retry this one this way since the callee closes the
|
||||||
// stats chan, need a fancier retry mechanism where we can swap out
|
// stats chan, need a fancier retry mechanism where we can swap out
|
||||||
|
|||||||
Reference in New Issue
Block a user