@@ -409,6 +409,7 @@ public async Task PickAsync_DoesNotDeadlockAfterReconnect_WithResolverError()
409
409
services . AddNUnitLogger ( ) ;
410
410
await using var serviceProvider = services . BuildServiceProvider ( ) ;
411
411
var loggerFactory = serviceProvider . GetRequiredService < ILoggerFactory > ( ) ;
412
+ var logger = loggerFactory . CreateLogger ( GetType ( ) ) ;
412
413
413
414
var resolver = new TestResolver ( loggerFactory ) ;
414
415
@@ -427,22 +428,29 @@ public async Task PickAsync_DoesNotDeadlockAfterReconnect_WithResolverError()
427
428
clientChannel ) ) ;
428
429
429
430
// Act
431
+ logger . LogInformation ( "Client connecting." ) ;
430
432
var connectTask = clientChannel . ConnectAsync ( waitForReady : true , cancellationToken : CancellationToken . None ) ;
433
+
434
+ logger . LogInformation ( "Starting pick on connecting channel." ) ;
431
435
var pickTask = clientChannel . PickAsync (
432
436
new PickContext { Request = new HttpRequestMessage ( ) } ,
433
437
waitForReady : true ,
434
438
CancellationToken . None ) . AsTask ( ) ;
435
439
440
+ logger . LogInformation ( "Waiting for resolve to complete." ) ;
441
+ await resolver . HasResolvedTask . DefaultTimeout ( ) ;
442
+
436
443
resolver . UpdateAddresses ( new List < BalancerAddress >
437
444
{
438
445
new BalancerAddress ( "localhost" , 80 )
439
446
} ) ;
440
447
await Task . WhenAll ( connectTask , pickTask ) . DefaultTimeout ( ) ;
441
448
442
- // Simulate transport/network issue
449
+ logger . LogInformation ( " Simulate transport/network issue." ) ;
443
450
transportFactory . Transports . ForEach ( t => t . Disconnect ( ) ) ;
444
451
resolver . UpdateError ( new Status ( StatusCode . Unavailable , "Test error" ) ) ;
445
452
453
+ logger . LogInformation ( "Starting pick on disconnected channel." ) ;
446
454
pickTask = clientChannel . PickAsync (
447
455
new PickContext { Request = new HttpRequestMessage ( ) } ,
448
456
waitForReady : true ,
@@ -454,7 +462,10 @@ public async Task PickAsync_DoesNotDeadlockAfterReconnect_WithResolverError()
454
462
455
463
// Assert
456
464
// Should not timeout (deadlock)
465
+ logger . LogInformation ( "Wait for pick task to complete." ) ;
457
466
await pickTask . DefaultTimeout ( ) ;
467
+
468
+ logger . LogInformation ( "Done." ) ;
458
469
}
459
470
460
471
[ Test ]
@@ -489,6 +500,8 @@ public async Task PickAsync_DoesNotDeadlockAfterReconnect_WithZeroAddressResolve
489
500
waitForReady : true ,
490
501
CancellationToken . None ) . AsTask ( ) ;
491
502
503
+ await resolver . HasResolvedTask . DefaultTimeout ( ) ;
504
+
492
505
resolver . UpdateAddresses ( new List < BalancerAddress >
493
506
{
494
507
new BalancerAddress ( "localhost" , 80 )
@@ -560,6 +573,8 @@ public async Task PickAsync_ExecutionContext_DoesNotCaptureAsyncLocalsInConnect(
560
573
waitForReady : true ,
561
574
CancellationToken . None ) . AsTask ( ) ;
562
575
576
+ await resolver . HasResolvedTask . DefaultTimeout ( ) ;
577
+
563
578
resolver . UpdateAddresses ( new List < BalancerAddress >
564
579
{
565
580
new BalancerAddress ( "localhost" , 80 )
0 commit comments