File tree Expand file tree Collapse file tree 1 file changed +17
-9
lines changed
projects/RabbitMQ.Client/client/impl Expand file tree Collapse file tree 1 file changed +17
-9
lines changed Original file line number Diff line number Diff line change @@ -286,21 +286,29 @@ public void Write(ReadOnlyMemory<byte> memory)
286286
287287 private async Task WriteLoop ( )
288288 {
289- while ( await _channelReader . WaitToReadAsync ( ) . ConfigureAwait ( false ) )
289+ try
290290 {
291- while ( _channelReader . TryRead ( out ReadOnlyMemory < byte > memory ) )
291+ while ( await _channelReader . WaitToReadAsync ( ) . ConfigureAwait ( false ) )
292292 {
293- MemoryMarshal . TryGetArray ( memory , out ArraySegment < byte > segment ) ;
293+ while ( _channelReader . TryRead ( out ReadOnlyMemory < byte > memory ) )
294+ {
295+ MemoryMarshal . TryGetArray ( memory , out ArraySegment < byte > segment ) ;
294296#if NETSTANDARD
295- await _writer . WriteAsync ( segment . Array , segment . Offset , segment . Count ) . ConfigureAwait ( false ) ;
297+ await _writer . WriteAsync ( segment . Array , segment . Offset , segment . Count ) . ConfigureAwait ( false ) ;
296298#else
297- await _writer . WriteAsync ( memory ) . ConfigureAwait ( false ) ;
299+ await _writer . WriteAsync ( memory ) . ConfigureAwait ( false ) ;
298300#endif
299- RabbitMqClientEventSource . Log . CommandSent ( segment . Count ) ;
300- ArrayPool < byte > . Shared . Return ( segment . Array ) ;
301- }
301+ RabbitMqClientEventSource . Log . CommandSent ( segment . Count ) ;
302+ ArrayPool < byte > . Shared . Return ( segment . Array ) ;
303+ }
302304
303- await _writer . FlushAsync ( ) . ConfigureAwait ( false ) ;
305+ await _writer . FlushAsync ( ) . ConfigureAwait ( false ) ;
306+ }
307+ }
308+ catch ( Exception ex )
309+ {
310+ ESLog . Error ( "Background socket write loop has crashed" , ex ) ;
311+ throw ;
304312 }
305313 }
306314
You can’t perform that action at this time.
0 commit comments