Skip to content

Commit ae62635

Browse files
authored
transport: Ensure stream context is cancelled in test (#8647)
Fixes: #8646 The server stream's timer to monitor the deadline is closed when the stream's cancel method is invoked. https://github.com/grpc/grpc-go/blob/2d922719c02bb46f34482d592c35e72dc4a9ad92/internal/transport/http2_server.go#L623-L637 The cancel method is called when `closeStream` is called, just before it calls `deleteStream`. https://github.com/grpc/grpc-go/blob/2d922719c02bb46f34482d592c35e72dc4a9ad92/internal/transport/http2_server.go#L1347-L1357 The cancel method is not called in [`deleteStream`](https://github.com/grpc/grpc-go/blob/2d922719c02bb46f34482d592c35e72dc4a9ad92/internal/transport/http2_server.go#L1302). This change invokes `deleteStream` through `closeStream` in the flaking test to ensure the stream is always cancelled to avoid leaking timers. RELEASE NOTES: N/A
1 parent 7902ebe commit ae62635

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

internal/transport/transport_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3360,6 +3360,8 @@ func (s) TestClientTransport_Handle1xxHeaders(t *testing.T) {
33603360
}
33613361

33623362
func (s) TestDeleteStreamMetricsIncrementedOnlyOnce(t *testing.T) {
3363+
ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
3364+
defer cancel()
33633365
// Enable channelz for metrics collection
33643366
defer internal.ChannelzTurnOffForTesting()
33653367
if !channelz.IsOn() {
@@ -3386,9 +3388,6 @@ func (s) TestDeleteStreamMetricsIncrementedOnlyOnce(t *testing.T) {
33863388
},
33873389
} {
33883390
t.Run(test.name, func(t *testing.T) {
3389-
ctx, cancel := context.WithTimeout(context.Background(), defaultTestTimeout)
3390-
defer cancel()
3391-
33923391
// Setup server configuration with channelz support
33933392
serverConfig := &ServerConfig{
33943393
ChannelzParent: channelz.RegisterServer(t.Name()),
@@ -3449,8 +3448,10 @@ func (s) TestDeleteStreamMetricsIncrementedOnlyOnce(t *testing.T) {
34493448
t.Fatalf("Server stream not found for client stream ID %d", clientStream.id)
34503449
}
34513450

3452-
// First call to deleteStream should remove the stream from activeStreams and update metrics
3453-
serverTransport.deleteStream(serverStream, test.eosReceived)
3451+
// First call to closeStream should remove the stream from
3452+
// the activeStreams and update metrics. closeStream will also
3453+
// cancel the stream, stopping the deadline timer.
3454+
serverTransport.closeStream(serverStream, false, 0, test.eosReceived)
34543455

34553456
// Check metrics after first deleteStream call
34563457
streamsSucceeded := serverTransport.channelz.SocketMetrics.StreamsSucceeded.Load()

0 commit comments

Comments
 (0)