mirror of https://github.com/grpc/grpc-go.git
Close errorChan even when there is no pending I/O
This commit is contained in:
parent
1a5928317d
commit
293b2f9fa8
|
|
@ -746,6 +746,24 @@ func testHealthCheckServingStatus(t *testing.T, e env) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestErrorChanNoIO(t *testing.T) {
|
||||||
|
defer leakCheck(t)()
|
||||||
|
for _, e := range listTestEnv() {
|
||||||
|
testErrorChanNoIO(t, e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func testErrorChanNoIO(t *testing.T, e env) {
|
||||||
|
te := newTest(t, e)
|
||||||
|
te.startServer()
|
||||||
|
defer te.tearDown()
|
||||||
|
|
||||||
|
tc := testpb.NewTestServiceClient(te.clientConn())
|
||||||
|
if _, err := tc.FullDuplexCall(context.Background()); err != nil {
|
||||||
|
t.Fatalf("%v.FullDuplexCall(_) = _, %v, want <nil>", tc, err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestEmptyUnaryWithUserAgent(t *testing.T) {
|
func TestEmptyUnaryWithUserAgent(t *testing.T) {
|
||||||
defer leakCheck(t)()
|
defer leakCheck(t)()
|
||||||
for _, e := range listTestEnv() {
|
for _, e := range listTestEnv() {
|
||||||
|
|
|
||||||
|
|
@ -427,6 +427,9 @@ func (t *http2Client) CloseStream(s *Stream, err error) {
|
||||||
// accessed any more.
|
// accessed any more.
|
||||||
func (t *http2Client) Close() (err error) {
|
func (t *http2Client) Close() (err error) {
|
||||||
t.mu.Lock()
|
t.mu.Lock()
|
||||||
|
if t.state == reachable {
|
||||||
|
close(t.errorChan)
|
||||||
|
}
|
||||||
if t.state == closing {
|
if t.state == closing {
|
||||||
t.mu.Unlock()
|
t.mu.Unlock()
|
||||||
return errors.New("transport: Close() was already called")
|
return errors.New("transport: Close() was already called")
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue