зеркало из https://github.com/microsoft/docker.git
Merge pull request #33764 from keloyang/fix-queue-mem-leak
Fix mem leak in libcontainerd/queue/append
This commit is contained in:
Коммит
f88626b270
|
@ -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()
|
||||
}()
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
}
|
Загрузка…
Ссылка в новой задаче