未验证 提交 aa3669ff 编写于 作者: Z zhang-wei 提交者: GitHub

recover the panic caused by close sendCh (#50)

上级 929c90dc
......@@ -264,6 +264,12 @@ func (r *gRPCReporter) Send(spans []go2sky.ReportedSpan) {
r.logger.Printf("marshal segment object err %v", err)
return
}
defer func() {
// recover the panic caused by close sendCh
if err := recover(); err != nil {
r.logger.Printf("reporter segment err %v", err)
}
}()
segment.Segment = b
select {
case r.sendCh <- segment:
......
......@@ -25,6 +25,7 @@ import (
"os"
"strings"
"testing"
"time"
"github.com/golang/mock/gomock"
......@@ -85,6 +86,25 @@ func Test_e2e(t *testing.T) {
}
}
func TestGRPCReporter_Close(t *testing.T) {
serviceName, _, instance, _, reporter := createMockReporter(t)
reporter.sendCh = make(chan *common.UpstreamSegment, 1)
tracer, err := go2sky.NewTracer(serviceName, go2sky.WithReporter(reporter), go2sky.WithInstance(instance))
if err != nil {
t.Error(err)
}
tracer.WaitUntilRegister()
entry, _, err := tracer.CreateEntrySpan(context.Background(), "/close", func() (s string, err error) {
return header, nil
})
if err != nil {
t.Error(err)
}
reporter.Close()
entry.End()
time.Sleep(time.Second)
}
func createMockReporter(t *testing.T) (string, int32, string, int32, *gRPCReporter) {
ctrl := gomock.NewController(t)
mockRegisterClient := mock_register.NewMockRegisterClient(ctrl)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册