Fix goroutine leak in docker fs handler logic.
Signed-off-by: Vishnu kannan <vishnuk@google.com>
This commit is contained in:
parent
1d6e0ec9bc
commit
a6daa760c8
@ -78,4 +78,7 @@ type ContainerHandler interface {
|
||||
|
||||
// Returns whether the container still exists.
|
||||
Exists() bool
|
||||
|
||||
// Cleanup frees up any resources being held like fds or go routines, etc.
|
||||
Cleanup()
|
||||
}
|
||||
|
@ -160,6 +160,10 @@ func newDockerContainerHandler(
|
||||
return handler, nil
|
||||
}
|
||||
|
||||
func (self *dockerContainerHandler) Cleanup() {
|
||||
self.fsHandler.stop()
|
||||
}
|
||||
|
||||
func (self *dockerContainerHandler) ContainerReference() (info.ContainerReference, error) {
|
||||
return info.ContainerReference{
|
||||
Name: self.name,
|
||||
|
@ -51,6 +51,8 @@ func (self *MockContainerHandler) ContainerReference() (info.ContainerReference,
|
||||
return args.Get(0).(info.ContainerReference), args.Error(1)
|
||||
}
|
||||
|
||||
func (self *MockContainerHandler) Cleanup() {}
|
||||
|
||||
func (self *MockContainerHandler) GetSpec() (info.ContainerSpec, error) {
|
||||
args := self.Called()
|
||||
return args.Get(0).(info.ContainerSpec), args.Error(1)
|
||||
|
@ -166,6 +166,9 @@ func (self *rawContainerHandler) GetRootNetworkDevices() ([]info.NetInfo, error)
|
||||
return nd, nil
|
||||
}
|
||||
|
||||
// Nothing to clean up.
|
||||
func (self *rawContainerHandler) Cleanup() {}
|
||||
|
||||
func (self *rawContainerHandler) GetSpec() (info.ContainerSpec, error) {
|
||||
var spec info.ContainerSpec
|
||||
|
||||
|
@ -373,6 +373,8 @@ func (c *containerData) housekeeping() {
|
||||
for {
|
||||
select {
|
||||
case <-c.stop:
|
||||
// Cleanup container resources before stopping housekeeping.
|
||||
c.handler.Cleanup()
|
||||
// Stop housekeeping when signaled.
|
||||
return
|
||||
default:
|
||||
|
Loading…
Reference in New Issue
Block a user