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 {
|
||||
ctx, cancel = context.WithTimeout(ctx, timeout)
|
||||
}
|
||||
defer cancel() // do this so that after Run exits, nanny and collect stop
|
||||
var complete bool
|
||||
defer func() { complete = true }() // run before cancel is called
|
||||
ctx = context.WithValue(ctx, completeKey, &complete)
|
||||
|
||||
go drv.nanny(ctx, container)
|
||||
defer cancel() // do this so that after Run exits, collect stops
|
||||
go drv.collectStats(ctx, container, task)
|
||||
|
||||
mwOut, mwErr := task.Logger()
|
||||
@@ -446,28 +441,6 @@ func (drv *DockerDriver) run(ctx context.Context, container string, task drivers
|
||||
}, 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) {
|
||||
log := common.Logger(ctx)
|
||||
done := make(chan bool)
|
||||
|
||||
@@ -37,7 +37,6 @@ type dockerClient interface {
|
||||
PullImage(opts docker.PullImageOptions, auth docker.AuthConfiguration) error
|
||||
InspectImage(name string) (*docker.Image, error)
|
||||
InspectContainer(id string) (*docker.Container, error)
|
||||
StopContainer(id string, timeout uint) error
|
||||
Stats(opts docker.StatsOptions) error
|
||||
}
|
||||
|
||||
@@ -281,16 +280,6 @@ func (d *dockerWrap) InspectContainer(id string) (c *docker.Container, err error
|
||||
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) {
|
||||
// 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
|
||||
|
||||
Reference in New Issue
Block a user