Skip to content

Commit 6d6f0b1

Browse files
committed
fix: fix the issue which the server-side did not report failure after a panic occurred during request processing
1 parent 8a6cebe commit 6d6f0b1

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

pkg/remote/trans/default_server_handler.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,18 +88,19 @@ func (t *svrTransHandler) Write(ctx context.Context, conn net.Conn, sendMsg remo
8888
// Read implements the remote.ServerTransHandler interface.
8989
func (t *svrTransHandler) Read(ctx context.Context, conn net.Conn, recvMsg remote.Message) (nctx context.Context, err error) {
9090
var bufReader remote.ByteBuffer
91+
ri := recvMsg.RPCInfo()
9192
defer func() {
9293
if r := recover(); r != nil {
9394
stack := string(debug.Stack())
9495
panicErr := kerrors.ErrPanic.WithCauseAndStack(fmt.Errorf("[happened in Read] %s", r), stack)
95-
rpcinfo.AsMutableRPCStats(recvMsg.RPCInfo().Stats()).SetPanicked(panicErr)
96+
rpcinfo.AsMutableRPCStats(ri.Stats()).SetPanicked(panicErr)
9697
err = remote.NewTransError(remote.ProtocolError, panicErr)
9798
nctx = ctx
9899
}
99100
t.ext.ReleaseBuffer(bufReader, err)
100-
rpcinfo.Record(ctx, recvMsg.RPCInfo(), stats.ReadFinish, err)
101+
rpcinfo.Record(ctx, ri, stats.ReadFinish, err)
101102
}()
102-
rpcinfo.Record(ctx, recvMsg.RPCInfo(), stats.ReadStart, nil)
103+
rpcinfo.Record(ctx, ri, stats.ReadStart, nil)
103104

104105
bufReader = t.ext.NewReadByteBuffer(ctx, conn, recvMsg)
105106
if codec, ok := t.codec.(remote.MetaDecoder); ok {

0 commit comments

Comments
 (0)