Skip to content

Commit

Permalink
Telemetry doesn't log datagrams failed in send/receive (dotnet#40083)
Browse files Browse the repository at this point in the history
  • Loading branch information
alnikola committed Jul 30, 2020
1 parent 3bef7cb commit 278cc96
Showing 1 changed file with 53 additions and 66 deletions.
119 changes: 53 additions & 66 deletions src/libraries/System.Net.Sockets/src/System/Net/Sockets/Socket.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1180,8 +1180,7 @@ public int Send(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, out
// Don't log transfered byte count in case of a failure.
return 0;
}

if (SocketsTelemetry.Log.IsEnabled())
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
Expand Down Expand Up @@ -1237,8 +1236,7 @@ public int Send(byte[] buffer, int offset, int size, SocketFlags socketFlags, ou
if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, new SocketException((int)errorCode));
return 0;
}

if (SocketsTelemetry.Log.IsEnabled())
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
Expand Down Expand Up @@ -1279,13 +1277,10 @@ public int Send(ReadOnlySpan<byte> buffer, SocketFlags socketFlags, out SocketEr
if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, new SocketException((int)errorCode));
bytesTransferred = 0;
}
else
else if (SocketsTelemetry.Log.IsEnabled())
{
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
}
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
}

return bytesTransferred;
Expand Down Expand Up @@ -1351,13 +1346,10 @@ public int SendTo(byte[] buffer, int offset, int size, SocketFlags socketFlags,

UpdateStatusAfterSocketErrorAndThrowException(errorCode);
}
else
else if (SocketsTelemetry.Log.IsEnabled())
{
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
}
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
}

if (_rightEndPoint == null)
Expand Down Expand Up @@ -1437,11 +1429,6 @@ public int Receive(byte[] buffer, int offset, int size, SocketFlags socketFlags,

int bytesTransferred;
errorCode = SocketPal.Receive(_handle, buffer, offset, size, socketFlags, out bytesTransferred);
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

UpdateReceiveSocketErrorForDisposed(ref errorCode, bytesTransferred);

Expand All @@ -1452,6 +1439,11 @@ public int Receive(byte[] buffer, int offset, int size, SocketFlags socketFlags,
if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, new SocketException((int)errorCode));
return 0;
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

if (NetEventSource.Log.IsEnabled()) NetEventSource.DumpBuffer(this, buffer, offset, bytesTransferred);

Expand All @@ -1475,11 +1467,6 @@ public int Receive(Span<byte> buffer, SocketFlags socketFlags, out SocketError e

int bytesTransferred;
errorCode = SocketPal.Receive(_handle, buffer, socketFlags, out bytesTransferred);
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

UpdateReceiveSocketErrorForDisposed(ref errorCode, bytesTransferred);

Expand All @@ -1489,6 +1476,11 @@ public int Receive(Span<byte> buffer, SocketFlags socketFlags, out SocketError e
if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, new SocketException((int)errorCode));
bytesTransferred = 0;
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

return bytesTransferred;
}
Expand Down Expand Up @@ -1529,11 +1521,6 @@ public int Receive(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, o

int bytesTransferred;
errorCode = SocketPal.Receive(_handle, buffers, socketFlags, out bytesTransferred);
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

UpdateReceiveSocketErrorForDisposed(ref errorCode, bytesTransferred);

Expand All @@ -1544,6 +1531,11 @@ public int Receive(IList<ArraySegment<byte>> buffers, SocketFlags socketFlags, o
if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, new SocketException((int)errorCode));
return 0;
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

return bytesTransferred;
}
Expand Down Expand Up @@ -1595,19 +1587,18 @@ public int ReceiveMessageFrom(byte[] buffer, int offset, int size, ref SocketFla
Internals.SocketAddress receiveAddress;
int bytesTransferred;
SocketError errorCode = SocketPal.ReceiveMessageFrom(this, _handle, buffer, offset, size, ref socketFlags, socketAddress, out receiveAddress, out ipPacketInformation, out bytesTransferred);
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

UpdateReceiveSocketErrorForDisposed(ref errorCode, bytesTransferred);

// Throw an appropriate SocketException if the native call fails.
if (errorCode != SocketError.Success && errorCode != SocketError.MessageSize)
{
UpdateStatusAfterSocketErrorAndThrowException(errorCode);
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (errorCode == SocketError.Success && SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

if (!socketAddressOriginal.Equals(receiveAddress))
{
Expand Down Expand Up @@ -1676,14 +1667,8 @@ public int ReceiveFrom(byte[] buffer, int offset, int size, SocketFlags socketFl

int bytesTransferred;
SocketError errorCode = SocketPal.ReceiveFrom(_handle, buffer, offset, size, socketFlags, socketAddress.Buffer, ref socketAddress.InternalSize, out bytesTransferred);
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

UpdateReceiveSocketErrorForDisposed(ref errorCode, bytesTransferred);

// If the native call fails we'll throw a SocketException.
SocketException? socketException = null;
if (errorCode != SocketError.Success)
Expand All @@ -1697,6 +1682,11 @@ public int ReceiveFrom(byte[] buffer, int offset, int size, SocketFlags socketFl
throw socketException;
}
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

if (!socketAddressOriginal.Equals(socketAddress))
{
Expand Down Expand Up @@ -2641,6 +2631,7 @@ public int EndSend(IAsyncResult asyncResult, out SocketError errorCode)

// Throw an appropriate SocketException if the native call failed asynchronously.
errorCode = (SocketError)castedAsyncResult.ErrorCode;

if (errorCode != SocketError.Success)
{
UpdateSendSocketErrorForDisposed(ref errorCode);
Expand All @@ -2649,8 +2640,7 @@ public int EndSend(IAsyncResult asyncResult, out SocketError errorCode)
if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, new SocketException((int)errorCode));
return 0;
}

if (SocketsTelemetry.Log.IsEnabled())
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
Expand Down Expand Up @@ -2830,13 +2820,10 @@ public int EndSendTo(IAsyncResult asyncResult)
UpdateSendSocketErrorForDisposed(ref errorCode);
UpdateStatusAfterSocketErrorAndThrowException(errorCode);
}
else
else if (SocketsTelemetry.Log.IsEnabled())
{
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
}
SocketsTelemetry.Log.BytesSent(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramSent();
}

return bytesTransferred;
Expand Down Expand Up @@ -3062,11 +3049,6 @@ public int EndReceive(IAsyncResult asyncResult, out SocketError errorCode)

int bytesTransferred = castedAsyncResult.InternalWaitForCompletionInt32Result();
castedAsyncResult.EndCalled = true;
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

// Throw an appropriate SocketException if the native call failed asynchronously.
errorCode = (SocketError)castedAsyncResult.ErrorCode;
Expand All @@ -3079,6 +3061,11 @@ public int EndReceive(IAsyncResult asyncResult, out SocketError errorCode)
if (NetEventSource.Log.IsEnabled()) NetEventSource.Error(this, new SocketException((int)errorCode));
return 0;
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}
return bytesTransferred;
}

Expand Down Expand Up @@ -3223,11 +3210,6 @@ public int EndReceiveMessageFrom(IAsyncResult asyncResult, ref SocketFlags socke

int bytesTransferred = castedAsyncResult.InternalWaitForCompletionInt32Result();
castedAsyncResult.EndCalled = true;
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

// Update socket address size.
castedAsyncResult.SocketAddress!.InternalSize = castedAsyncResult.GetSocketAddressSize();
Expand All @@ -3252,6 +3234,11 @@ public int EndReceiveMessageFrom(IAsyncResult asyncResult, ref SocketFlags socke
{
UpdateStatusAfterSocketErrorAndThrowException(errorCode);
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (errorCode == SocketError.Success && SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

socketFlags = castedAsyncResult.SocketFlags;
ipPacketInformation = castedAsyncResult.IPPacketInformation;
Expand Down Expand Up @@ -3431,11 +3418,6 @@ public int EndReceiveFrom(IAsyncResult asyncResult, ref EndPoint endPoint)

int bytesTransferred = castedAsyncResult.InternalWaitForCompletionInt32Result();
castedAsyncResult.EndCalled = true;
if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}

// Update socket address size.
castedAsyncResult.SocketAddress!.InternalSize = castedAsyncResult.GetSocketAddressSize();
Expand All @@ -3460,6 +3442,11 @@ public int EndReceiveFrom(IAsyncResult asyncResult, ref EndPoint endPoint)
{
UpdateStatusAfterSocketErrorAndThrowException(errorCode);
}
else if (SocketsTelemetry.Log.IsEnabled())
{
SocketsTelemetry.Log.BytesReceived(bytesTransferred);
if (SocketType == SocketType.Dgram) SocketsTelemetry.Log.DatagramReceived();
}
return bytesTransferred;
}

Expand Down

0 comments on commit 278cc96

Please sign in to comment.