File tree Expand file tree Collapse file tree 2 files changed +29
-22
lines changed
projects/RabbitMQ.Client/Impl Expand file tree Collapse file tree 2 files changed +29
-22
lines changed Original file line number Diff line number Diff line change @@ -166,5 +166,31 @@ private void HandleReturn(BasicReturnEventArgs basicReturnEvent)
166
166
HandleNack ( publishSequenceNumber , multiple : false , isReturn : true ) ;
167
167
}
168
168
}
169
+
170
+ private async Task MaybeHandlePublisherConfirmationTcsOnChannelShutdownAsync ( ShutdownEventArgs reason )
171
+ {
172
+ if ( _publisherConfirmationsEnabled )
173
+ {
174
+ await _confirmSemaphore . WaitAsync ( reason . CancellationToken )
175
+ . ConfigureAwait ( false ) ;
176
+ try
177
+ {
178
+ if ( ! _confirmsTaskCompletionSources . IsEmpty )
179
+ {
180
+ var exception = new AlreadyClosedException ( reason ) ;
181
+ foreach ( TaskCompletionSource < bool > confirmsTaskCompletionSource in _confirmsTaskCompletionSources . Values )
182
+ {
183
+ confirmsTaskCompletionSource . TrySetException ( exception ) ;
184
+ }
185
+
186
+ _confirmsTaskCompletionSources . Clear ( ) ;
187
+ }
188
+ }
189
+ finally
190
+ {
191
+ _confirmSemaphore . Release ( ) ;
192
+ }
193
+ }
194
+ }
169
195
}
170
196
}
Original file line number Diff line number Diff line change @@ -482,31 +482,12 @@ internal Task OnCallbackExceptionAsync(CallbackExceptionEventArgs args)
482
482
private async Task OnChannelShutdownAsync ( ShutdownEventArgs reason )
483
483
{
484
484
_continuationQueue . HandleChannelShutdown ( reason ) ;
485
+
485
486
await _channelShutdownAsyncWrapper . InvokeAsync ( this , reason )
486
487
. ConfigureAwait ( false ) ;
487
488
488
- if ( _publisherConfirmationsEnabled )
489
- {
490
- await _confirmSemaphore . WaitAsync ( reason . CancellationToken )
491
- . ConfigureAwait ( false ) ;
492
- try
493
- {
494
- if ( ! _confirmsTaskCompletionSources . IsEmpty )
495
- {
496
- var exception = new AlreadyClosedException ( reason ) ;
497
- foreach ( TaskCompletionSource < bool > confirmsTaskCompletionSource in _confirmsTaskCompletionSources . Values )
498
- {
499
- confirmsTaskCompletionSource . TrySetException ( exception ) ;
500
- }
501
-
502
- _confirmsTaskCompletionSources . Clear ( ) ;
503
- }
504
- }
505
- finally
506
- {
507
- _confirmSemaphore . Release ( ) ;
508
- }
509
- }
489
+ await MaybeHandlePublisherConfirmationTcsOnChannelShutdownAsync ( reason )
490
+ . ConfigureAwait ( false ) ;
510
491
511
492
_flowControlBlock . Set ( ) ;
512
493
}
You can’t perform that action at this time.
0 commit comments