|
@@ -107,12 +107,20 @@ func removeFromGarbagePaths(path string) {
|
|
// GC triggers garbage collection of namespace path right away
|
|
// GC triggers garbage collection of namespace path right away
|
|
// and waits for it.
|
|
// and waits for it.
|
|
func GC() {
|
|
func GC() {
|
|
- waitGC := make(chan struct{})
|
|
|
|
|
|
+ gpmLock.Lock()
|
|
|
|
+ if len(garbagePathMap) == 0 {
|
|
|
|
+ // No need for GC if map is empty
|
|
|
|
+ gpmLock.Unlock()
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ gpmLock.Unlock()
|
|
|
|
|
|
- // Trigger GC now
|
|
|
|
|
|
+ // 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{})
|
|
gpmChan <- waitGC
|
|
gpmChan <- waitGC
|
|
-
|
|
|
|
- // wait for gc to complete
|
|
|
|
|
|
+ // wait for GC completion
|
|
<-waitGC
|
|
<-waitGC
|
|
}
|
|
}
|
|
|
|
|