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
wg := sync.WaitGroup{}
for sb, subs := range g.subscribers {
for _, sub := range subs {
if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Infof("Unsubscribing from topic: %s", sub.Topic())
}
sub.Unsubscribe()
wg.Add(1)
go func(s broker.Subscriber) {
defer wg.Done()
if logger.V(logger.InfoLevel, logger.DefaultLogger) {
logger.Infof("Unsubscribing from topic: %s", s.Topic())
}
s.Unsubscribe()
}(sub)
}
g.subscribers[sb] = nil
}
wg.Wait()
g.Unlock()
return nil