Merge pull request #33764 from keloyang/fix-queue-mem-leak

Fix mem leak in libcontainerd/queue/append
This commit is contained in:
Sebastiaan van Stijn 2017-06-22 10:57:07 -07:00 committed by GitHub
commit f88626b270
2 changed files with 39 additions and 0 deletions

View File

@ -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()
}()
}

View 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)
}