Fix EventStreamSSE Memory Leak

The `Config.Services.Pubsub.Subscribe` is being initialized with the global Gin Context. This causes the publisher object to [hang at line 58](https://github.com/cncd/pubsub/blob/master/pub.go#L58) and the goroutine remains opened indefinetly, which can be a source of memory leak.

Setting it to the locally defined ctx object correctly causes the goroutine to close when the function exits due to the deferred close.

See https://discourse.drone.io/t/memory-leak-on-drone-server/1884 for further information.
This commit is contained in:
Fernando Barbosa 2018-03-27 19:19:22 -03:00 committed by GitHub
parent d78cadbbad
commit 00f72ef206
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -78,7 +78,7 @@ func EventStreamSSE(c *gin.Context) {
go func() { go func() {
// TODO remove this from global config // TODO remove this from global config
Config.Services.Pubsub.Subscribe(c, "topic/events", func(m pubsub.Message) { Config.Services.Pubsub.Subscribe(ctx, "topic/events", func(m pubsub.Message) {
name := m.Labels["repo"] name := m.Labels["repo"]
priv := m.Labels["private"] priv := m.Labels["private"]
if repo[name] || priv == "false" { if repo[name] || priv == "false" {