add waitGroups for waiting finish all connects #131

Merged
vtolstov merged 7 commits from devstigneev/micro-server-tcp:issue_130 into v3 2024-03-13 15:36:35 +03:00
Member

closes #130

closes #130
devstigneev added 1 commit 2024-03-05 21:21:44 +03:00
Owner

https://pkg.go.dev/go.unistack.org/micro/v3/server#Options - там уже есть wg =)
глянь как сделано в грпц , там вроде было. нужно просто добавить грейсфул таймаут.

https://pkg.go.dev/go.unistack.org/micro/v3/server#Options - там уже есть wg =) глянь как сделано в грпц , там вроде было. нужно просто добавить грейсфул таймаут.
devstigneev added 1 commit 2024-03-06 13:00:57 +03:00
devstigneev reviewed 2024-03-06 13:02:50 +03:00
tcp.go Outdated
@ -425,0 +435,4 @@
}()
// wait timeout or finish all connects
<-ctx.Done()
Author
Member

Тут мы ждем либо у нас концертны все закрылись и вызвался cancel()
либо ctx.Done выполнился по GracefulTimeout

Тут мы ждем либо у нас концертны все закрылись и вызвался cancel() либо ctx.Done выполнился по GracefulTimeout
Author
Member

если я использую time.Timer, не совсем смог прийти к решению, что я его в ручную остановил и мог без препятствий завершить метод

если я использую time.Timer, не совсем смог прийти к решению, что я его в ручную остановил и мог без препятствий завершить метод
Author
Member

но возникает другая проблема, если Wait - залочился, то горутина с ней утекла

но возникает другая проблема, если Wait - залочился, то горутина с ней утекла
devstigneev added 1 commit 2024-03-06 18:44:52 +03:00
Author
Member

Нужна ли нам вообще ошибка от результата gracefullStop

Нужна ли нам вообще ошибка от результата gracefullStop
vtolstov reviewed 2024-03-07 00:21:56 +03:00
tcp.go Outdated
@ -473,0 +501,4 @@
h.opts.Wait.Add(1)
go func() {
defer h.opts.Wait.Done()
Owner

а тут дефер нужен вообще ? почему после hd.Serve(c)
просто не вызывать h.opts.Wait.Done()

а тут дефер нужен вообще ? почему после hd.Serve(c) просто не вызывать h.opts.Wait.Done()
Author
Member

теоретически, если hd.Serve может запаниковать?
то с дефиром вгДон исполниться

теоретически, если hd.Serve может запаниковать? то с дефиром вгДон исполниться
vtolstov reviewed 2024-03-07 00:22:16 +03:00
tcp.go Outdated
@ -27,2 +29,4 @@
registered bool
init bool
wg sync.WaitGroup
Owner

это как я понимаю больше не нужно?

это как я понимаю больше не нужно?
vtolstov requested changes 2024-03-07 00:24:04 +03:00
tcp.go Outdated
@ -425,0 +443,4 @@
case <-tm.C:
return nil
case <-gctx.Done():
return gctx.Err()
Owner

тут везде нужно возвращать ошибку иначе ерргруппа будет висеть пока все горутины не закончатся

тут везде нужно возвращать ошибку иначе ерргруппа будет висеть пока все горутины не закончатся
devstigneev added 1 commit 2024-03-07 16:31:01 +03:00
vtolstov requested changes 2024-03-08 15:34:22 +03:00
tcp.go Outdated
@ -425,0 +429,4 @@
done := make(chan struct{})
go func() {
h.opts.Wait.Wait()
Owner

смотри, лучше сделать канал и если вейтгруппа кончилась- прямо там закрывать канал, тогда в селекте мы сразу попадем на нужный кейс

смотри, лучше сделать канал и если вейтгруппа кончилась- прямо там закрывать канал, тогда в селекте мы сразу попадем на нужный кейс
Author
Member

да, я прикинул потом, что закрытие нужно сместить

да, я прикинул потом, что закрытие нужно сместить
vtolstov marked this conversation as resolved
devstigneev added 1 commit 2024-03-08 16:50:02 +03:00
devstigneev added 1 commit 2024-03-13 15:19:13 +03:00
devstigneev added 1 commit 2024-03-13 15:21:07 +03:00
vtolstov merged commit db00f3bb91 into v3 2024-03-13 15:36:35 +03:00
vtolstov deleted branch issue_130 2024-03-13 15:36:38 +03:00
Sign in to join this conversation.
No description provided.