apache / servicecomb-mesher

A high performance service mesh implementation written in go

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

runtime error: invalid memory address or nil pointer dereference

t-xinlin opened this issue · comments

resp.Body为nil的话 这里抛出异常了
io.Copy(w, resp.Body)
resp.Body.Close()
路径: /github.com/go-mesh/mesher/protocol/http/reverse_proxy.go:214
func copyChassisResp2HttpResp(w http.ResponseWriter, resp *http.Response) {
postProcessResponse(resp)
copyHeader(w.Header(), resp.Header)
w.WriteHeader(resp.StatusCode)
if resp == nil {
openlogging.GetLogger().Warn("response is nil because of unknown reason, plz report issue")
return
}
io.Copy(w, resp.Body)
resp.Body.Close()
}

异常:
goroutine 7435 [running]:
net/http.(*conn).serve.func1(0xc4212375e0)
/opt/go/src/net/http/server.go:1697 +0xd0
panic(0x13eaaa0, 0x1cb7eb0)
/opt/go/src/runtime/panic.go:491 +0x283
io.copyBuffer(0x1ccf9c0, 0xc420bae0d0, 0x0, 0x0, 0xc4214a8000, 0x8000, 0x8000, 0xc420bae0d0, 0xc420bae0d0, 0x1429fe0)
/opt/go/src/io/io.go:392 +0x102
io.CopyBuffer(0x1ccf9c0, 0xc420bae0d0, 0x0, 0x0, 0xc4214a8000, 0x8000, 0x8000, 0xc420cba9c0, 0x3, 0xc42001f300)
/opt/go/src/io/io.go:373 +0x82
net/http.(*response).ReadFrom(0xc420c42700, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/net/http/server.go:564 +0x557
io.copyBuffer(0x1cccb80, 0xc420c42700, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14e1540, 0x0, 0x1cccb80)
/opt/go/src/io/io.go:386 +0x2bb
io.Copy(0x1cccb80, 0xc420c42700, 0x0, 0x0, 0x0, 0x0, 0x0)
/opt/go/src/io/io.go:362 +0x68
github.com/go-mesh/mesher/protocol/http.copyChassisResp2HttpResp(0x1cd6d00, 0xc420c42700, 0xc421315050)
/opt/build/workspace/mesher/br_fst2.3/compile/src/github.com/go-mesh/mesher/protocol/http/reverse_proxy.go:214 +0x11a
github.com/go-mesh/mesher/protocol/http.handleRequest(0x1cd6d00, 0xc420c42700, 0xc4213f66c0, 0xc420e485d0, 0xbc56139881, 0x1d27c40, 0x0)
/opt/build/workspace/mesher/br_fst2.3/compile/src/github.com/go-mesh/mesher/protocol/http/reverse_proxy.go:239 +0x168
github.com/go-mesh/mesher/protocol/http.LocalRequestHandler(0x1cd6d00, 0xc420c42700, 0xc4214a0000)
/opt/build/workspace/mesher/br_fst2.3/compile/src/github.com/go-mesh/mesher/protocol/http/reverse_proxy.go:136 +0x49d
net/http.HandlerFunc.ServeHTTP(0x1568788, 0x1cd6d00, 0xc420c42700, 0xc4214a0000)
/opt/go/src/net/http/server.go:1918 +0x44
net/http.serverHandler.ServeHTTP(0xc4201ae000, 0x1cd6d00, 0xc420c42700, 0xc4214a0000)
/opt/go/src/net/http/server.go:2619 +0xb4
net/http.(*conn).serve(0xc4212375e0, 0x1cdc780, 0xc4214b8800)
/opt/go/src/net/http/server.go:1801 +0x71d
created by net/http.(*Server).Serve
/opt/go/src/net/http/server.go:2720 +0x288

commented

请描述如何复现

服务器异常, 请求返回的resp.Body为nil