lileio / pubsub

A Publish & Subscribe library, with pluggable providers and middleware for Golang
MIT License
137 stars 23 forks source link

Potential shutdown subscriptions leaks #26

Open weidonglian opened 3 years ago

weidonglian commented 3 years ago

I notice the subscribe client when being closed/shutdown, it will loop a map[string]subscription and wait to close each subscription. How about if we subscribe to the same topic a couple of times in one app which could be possibly done through different modules? Then we will override the subscription in the map with the same topic and we won't gracefully shutdown.

type struct subscriptionEntry { topic string subscription *stan.Subscription }

A slice []subscriptionEntryt might be good enough instead of a map.

How to do unsubscribe? I know in most cases, we do not need to.

arbarlow commented 3 years ago

I think you're referring to the nats plugin? I'm afraid I don't personally use this at the moment, so that would explain little bugs like this.

But I think you're right! I'll happily accept a pr that fixes this if you have the time.