|
@@ -43,18 +43,18 @@ func (s *LoggerServer) FollowLog(_ *FollowLogRequest, stream LoggerService_Follo
|
|
|
if !ok {
|
|
if !ok {
|
|
|
return newError("logger not support following")
|
|
return newError("logger not support following")
|
|
|
}
|
|
}
|
|
|
- done := make(chan struct{})
|
|
|
|
|
|
|
+ ctx, cancel := context.WithCancel(stream.Context())
|
|
|
f := func(msg cmlog.Message) {
|
|
f := func(msg cmlog.Message) {
|
|
|
err := stream.Send(&FollowLogResponse{
|
|
err := stream.Send(&FollowLogResponse{
|
|
|
Message: msg.String(),
|
|
Message: msg.String(),
|
|
|
})
|
|
})
|
|
|
if err != nil {
|
|
if err != nil {
|
|
|
- close(done)
|
|
|
|
|
|
|
+ cancel()
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
follower.AddFollower(f)
|
|
follower.AddFollower(f)
|
|
|
defer follower.RemoveFollower(f)
|
|
defer follower.RemoveFollower(f)
|
|
|
- <-done
|
|
|
|
|
|
|
+ <-ctx.Done()
|
|
|
return nil
|
|
return nil
|
|
|
}
|
|
}
|
|
|
|
|
|