unsubscribe can async (#1596)

Co-authored-by: huangshaojie <huangshaojie@corp.netease.com>
Co-authored-by: Asim Aslam <asim@aslam.me>
This commit is contained in:
Socket 2020-04-30 17:42:13 +08:00 committed by Vasiliy Tolstov
parent 19a313ac4e
commit eac461041a

14
grpc.go
View File

@ -785,15 +785,21 @@ func (g *grpcServer) Deregister() error {
g.registered = false g.registered = false
wg := sync.WaitGroup{}
for sb, subs := range g.subscribers { for sb, subs := range g.subscribers {
for _, sub := range subs { for _, sub := range subs {
if logger.V(logger.InfoLevel, logger.DefaultLogger) { wg.Add(1)
logger.Infof("Unsubscribing from topic: %s", sub.Topic()) go func(s broker.Subscriber) {
} defer wg.Done()
sub.Unsubscribe() if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Infof("Unsubscribing from topic: %s", s.Topic())
}
s.Unsubscribe()
}(sub)
} }
g.subscribers[sb] = nil g.subscribers[sb] = nil
} }
wg.Wait()
g.Unlock() g.Unlock()
return nil return nil