free signal join response to gc after forwarding (#1619)

This commit is contained in:
Paul Wells authored and GitHub committed 2023-04-16 17:38:09 -07:00
1 parent 9c64d71e91
commit 96f3aaa587
2 files changed
+26 -35

No files matched your search

+11 -12
View File
@@ -180,7 +180,6 @@ func CopySignalStreamToMessageChannel[SendType, RecvType RelaySignalMessage](
config: config,
}
for msg := range stream.Channel() {
var res []proto.Message
res, err := r.Read(msg)
if err != nil {
return err
@@ -280,20 +279,17 @@ func (s *signalMessageSink[SendType, RecvType]) nextMessage() (msg SendType, n i
func (s *signalMessageSink[SendType, RecvType]) write() {
interval := s.Config.MinRetryInterval
deadline := time.Now().Add(s.Config.RetryTimeout)
var err error
s.mu.Lock()
for {
msg, n := s.nextMessage()
if n == 0 || s.IsClosed() {
if s.draining {
s.Stream.Close(nil)
}
s.writing = false
break
}
s.mu.Unlock()
err := s.Stream.Send(msg, psrpc.WithTimeout(interval))
err = s.Stream.Send(msg, psrpc.WithTimeout(interval))
if err != nil {
if time.Now().After(deadline) {
s.Logger.Warnw("could not send signal message", err)
@@ -301,12 +297,7 @@ func (s *signalMessageSink[SendType, RecvType]) write() {
s.mu.Lock()
s.seq += uint64(len(s.queue))
s.queue = nil
if s.CloseOnFailure {
s.Stream.Close(ErrSignalFailed)
}
s.mu.Unlock()
return
break
}
interval *= 2
@@ -324,6 +315,14 @@ func (s *signalMessageSink[SendType, RecvType]) write() {
s.queue = s.queue[n:]
}
}
s.writing = false
if s.draining {
s.Stream.Close(nil)
}
if err != nil && s.CloseOnFailure {
s.Stream.Close(ErrSignalFailed)
}
s.mu.Unlock()
}