Skip to content

Commit 1d2d38d

Browse files
committed
Merge pull request #1006 from vishh/gr-leak
Fix goroutine leak in docker fs handler logic.
2 parents 1d6e0ec + a6daa76 commit 1d2d38d

File tree

5 files changed

+14
-0
lines changed

5 files changed

+14
-0
lines changed

container/container.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,4 +78,7 @@ type ContainerHandler interface {
7878

7979
// Returns whether the container still exists.
8080
Exists() bool
81+
82+
// Cleanup frees up any resources being held like fds or go routines, etc.
83+
Cleanup()
8184
}

container/docker/handler.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,10 @@ func newDockerContainerHandler(
160160
return handler, nil
161161
}
162162

163+
func (self *dockerContainerHandler) Cleanup() {
164+
self.fsHandler.stop()
165+
}
166+
163167
func (self *dockerContainerHandler) ContainerReference() (info.ContainerReference, error) {
164168
return info.ContainerReference{
165169
Name: self.name,

container/mock.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ func (self *MockContainerHandler) ContainerReference() (info.ContainerReference,
5151
return args.Get(0).(info.ContainerReference), args.Error(1)
5252
}
5353

54+
func (self *MockContainerHandler) Cleanup() {}
55+
5456
func (self *MockContainerHandler) GetSpec() (info.ContainerSpec, error) {
5557
args := self.Called()
5658
return args.Get(0).(info.ContainerSpec), args.Error(1)

container/raw/handler.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,9 @@ func (self *rawContainerHandler) GetRootNetworkDevices() ([]info.NetInfo, error)
166166
return nd, nil
167167
}
168168

169+
// Nothing to clean up.
170+
func (self *rawContainerHandler) Cleanup() {}
171+
169172
func (self *rawContainerHandler) GetSpec() (info.ContainerSpec, error) {
170173
var spec info.ContainerSpec
171174

manager/container.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,8 @@ func (c *containerData) housekeeping() {
373373
for {
374374
select {
375375
case <-c.stop:
376+
// Cleanup container resources before stopping housekeeping.
377+
c.handler.Cleanup()
376378
// Stop housekeeping when signaled.
377379
return
378380
default:

0 commit comments

Comments
 (0)