Skip to content

HTTP2: Exceptions being thrown while posting multiform Data #30268

@Anipik

Description

@Anipik
dotnet run -n 10 -maxContentLength 4000 -http 2.0 -ops 7 -numParameters 200
[15-07-2019 16:23:17] Total: 76,700
        POST Multipart Data           Success: 76,680   Fail: 20

Error from iteration 7664 (POST Multipart Data) in task 7 with 76680 successes / 20 fails:
System.Net.Http.HttpRequestException: Error while copying content to a stream.
 ---> System.IO.IOException: The request was aborted.
 ---> System.IO.IOException: The response ended prematurely, with at least 9 additional bytes expected.
   at System.Net.Http.Http2Connection.ReadAtLeastAsync(Stream stream, Memory`1 buffer, Int32 minReadBytes)
   at System.Net.Http.Http2Connection.EnsureIncomingBytesAsync(Int32 minReadBytes)
   at System.Net.Http.Http2Connection.ReadFrameAsync(Boolean initialFrame)
   at System.Net.Http.Http2Connection.ProcessIncomingFramesAsync()
   --- End of inner exception stack trace ---
   at System.Net.Http.Http2Connection.Http2Stream.CheckIfDisposedOrAborted()
   at System.Net.Http.Http2Connection.Http2Stream.TryReadFromBuffer(Span`1 buffer)
   at System.Net.Http.Http2Connection.Http2Stream.ReadDataAsync(Memory`1 buffer, CancellationToken cancellationToken)
   at System.IO.Stream.CopyToAsyncInternal(Stream destination, Int32 bufferSize, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionResponseContent.SerializeToStreamAsync(Stream stream, TransportContext context, CancellationToken cancellationToken)
   at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, MemoryStream tempBuffer)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpContent.LoadIntoBufferAsyncCore(Task serializeToStreamTask, MemoryStream tempBuffer)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Program.<>c__DisplayClass1_0.<<Run>b__9>d.MoveNext() in C:\git\corefx\src\System.Net.Http\tests\StressTests\HttpStress\Program.cs:line 269
--- End of stack trace from previous location where exception was thrown ---
   at Program.<>c__DisplayClass1_4.<<Run>b__43>d.MoveNext() in C:\git\corefx\src\System.Net.Http\tests\StressTests\HttpStress\Program.cs:line 634

Error from iteration 7632 (POST Multipart Data) in task 3 with 76680 successes / 20 fails:
System.Net.Http.HttpRequestException: Error while copying content to a stream.
 ---> System.ObjectDisposedException: The object was disposed while operations were in progress.
Object name: 'CreditManager:Http2Connection:_connectionWindow'.
   at System.Net.Http.Http2Connection.SendStreamDataAsync(Int32 streamId, ReadOnlyMemory`1 buffer, CancellationToken cancellationToken)
   at System.Net.Http.Http2Connection.Http2Stream.SendDataAsync(ReadOnlyMemory`1 buffer, CancellationToken cancellationToken)
   at System.Net.Http.MultipartContent.SerializeToStreamAsync(Stream stream, TransportContext context)
   at System.Net.Http.HttpContent.CopyToAsyncCore(ValueTask copyTask)
   --- End of inner exception stack trace ---
   at System.Net.Http.HttpContent.CopyToAsyncCore(ValueTask copyTask)
   at System.Net.Http.Http2Connection.Http2Stream.SendRequestBodyAsync(CancellationToken cancellationToken)
   at System.Net.Http.Http2Connection.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean doRequestAuth, CancellationToken cancellationToken)
   at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
   at System.Net.Http.HttpClient.FinishSendAsyncBuffered(Task`1 sendTask, HttpRequestMessage request, CancellationTokenSource cts, Boolean disposeCts)
   at Program.<>c__DisplayClass1_0.<<Run>b__9>d.MoveNext() in C:\git\corefx\src\System.Net.Http\tests\StressTests\HttpStress\Program.cs:line 269
--- End of stack trace from previous location where exception was thrown ---

However, the 1.1 version never fails or throws exception.

cc @stephentoub @danmosemsft

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions