Skip to content

Commit c6cecdf

Browse files
author
James Turner
committed
Add exception logging on WriteLoop
1 parent 9f29079 commit c6cecdf

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

projects/RabbitMQ.Client/client/impl/SocketFrameHandler.cs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff 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
295297
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

0 commit comments

Comments
 (0)