Merge pull request #33764 from keloyang/fix-queue-mem-leak
Fix mem leak in libcontainerd/queue/append Upstream-commit: f88626b270827da7e8a2d668dc2e16bbe1ac53f0 Component: engine
This commit is contained in:
@ -27,5 +27,11 @@ func (q *queue) append(id string, f func()) {
|
||||
}
|
||||
f()
|
||||
close(done)
|
||||
|
||||
q.Lock()
|
||||
if q.fns[id] == done {
|
||||
delete(q.fns, id)
|
||||
}
|
||||
q.Unlock()
|
||||
}()
|
||||
}
|
||||
|
||||
33
components/engine/libcontainerd/queue_unix_test.go
Normal file
33
components/engine/libcontainerd/queue_unix_test.go
Normal file
@ -0,0 +1,33 @@
|
||||
// +build linux solaris
|
||||
|
||||
package libcontainerd
|
||||
|
||||
import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestSerialization(t *testing.T) {
|
||||
var (
|
||||
q queue
|
||||
serialization = 1
|
||||
)
|
||||
|
||||
q.append("aaa", func() {
|
||||
//simulate a long time task
|
||||
time.Sleep(10 * time.Millisecond)
|
||||
require.EqualValues(t, serialization, 1)
|
||||
serialization = 2
|
||||
})
|
||||
q.append("aaa", func() {
|
||||
require.EqualValues(t, serialization, 2)
|
||||
serialization = 3
|
||||
})
|
||||
q.append("aaa", func() {
|
||||
require.EqualValues(t, serialization, 3)
|
||||
serialization = 4
|
||||
})
|
||||
time.Sleep(20 * time.Millisecond)
|
||||
}
|
||||
Reference in New Issue
Block a user