diff --git a/libnetwork/sandbox/namespace_linux.go b/libnetwork/sandbox/namespace_linux.go index 1b9b7fae6d..9d827f0b03 100644 --- a/libnetwork/sandbox/namespace_linux.go +++ b/libnetwork/sandbox/namespace_linux.go @@ -107,12 +107,20 @@ func removeFromGarbagePaths(path string) { // GC triggers garbage collection of namespace path right away // and waits for it. func GC() { + gpmLock.Lock() + if len(garbagePathMap) == 0 { + // No need for GC if map is empty + gpmLock.Unlock() + return + } + gpmLock.Unlock() + + // if content exists in the garbage paths + // we can trigger GC to run, providing a + // channel to be notified on completion waitGC := make(chan struct{}) - - // Trigger GC now gpmChan <- waitGC - - // wait for gc to complete + // wait for GC completion <-waitGC }