MCPcopy Create free account
hub / github.com/devld/go-drive / cleanExpired

Method cleanExpired

script/pool.go:176–198  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

174}
175
176func (p *VMPool) cleanExpired() {
177 now := time.Now()
178 p.mu.Lock()
179 removeCount := 0
180 for removeCount < len(p.idle)-p.config.MinIdle &&
181 now.Sub(p.idle[removeCount].returnedAt) >= p.config.IdleTime {
182 removeCount++
183 }
184 if removeCount == 0 {
185 p.mu.Unlock()
186 return
187 }
188 expired := append([]idleVM(nil), p.idle[:removeCount]...)
189 copy(p.idle, p.idle[removeCount:])
190 p.idle = p.idle[:len(p.idle)-removeCount]
191 p.total -= removeCount
192 p.signalLocked()
193 p.mu.Unlock()
194
195 for _, item := range expired {
196 _ = item.vm.Dispose()
197 }
198}
199
200func (p *VMPool) signalLocked() {
201 close(p.changed)

Callers 1

runCleanerMethod · 0.95

Calls 4

signalLockedMethod · 0.95
LockMethod · 0.65
UnlockMethod · 0.65
DisposeMethod · 0.65

Tested by

no test coverage detected