#jira UE-222396
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rob.cannaday [at]rafa.lecina [at]ryan.hairyes
#rb Rob.Cannaday
#tests Reproduced with new test case in WebTests and passed the test with the changelist.
[CL 35784008 by lorry li in ue5-main branch]
Change CVarHttpUrlPatternsToLogResponse to use space instead of comma to separate url patterns;
Add CVarHttpUrlPatternsToMockFailure to mock http connect error or response failures through url patterns.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]rob.cannaday
#tests Tried in game client also passed all the tests including new added test cases in WebTests
#rb Rafa.Lecina
[CL 34648656 by lorry li in ue5-main branch]
Add test case for canceling request without calling ProcessRequest, make sure complete delegate will be invoked;
Add test case for canceling request which called ProcessRequest, but still in the queue, the complete delegate will be invoked immediately(Make sure canceled queued requests will complete immediately instead of waiting until they are popped from the queue).
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rob.cannaday [at]rafa.lecina
#rb michael.atchison, Rafa.Lecina, Rob.Cannaday
[CL 34082567 by lorry li in ue5-main branch]
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]rob.cannaday
#rb michael.atchison
#tests Tested through new test case in WebTests project.
[CL 34073981 by lorry li in ue5-main branch]
[FYI] lorry.li
Original CL Desc
-----------------------------------------------------------------
Use safer call ExecuteIfBound for http response stream delegate, to avoid potential thread data race issue.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]jan.orlowski
#rb michael.atchison, Rafa.Lecina
[CL 34013724 by grant medine in ue5-main branch]
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger, Rafa.Lecina
#tests Validated through test cases in WebTests project
[CL 33200296 by lorry li in ue5-main branch]
Reason: UserStreamingInstance instance got deleted before http module shutdown, the data received delegates only unbind when http module shutdown.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger
[CL 32946476 by lorry li in ue5-main branch]
Filter out the test case "Cancel http request connect before timeout" for platforms which doesn't support connect timeout retry with precise timeout value.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison
[CL 32840155 by lorry li in ue5-main branch]
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Rafa.Lecina
#tests Covered by test case in WebTests.
[CL 32735428 by lorry li in ue5-main branch]
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]jon.cook
#rb jon.cook, michael.atchison
#tests Passed WebTests test case
[CL 32409091 by lorry li in ue5-main branch]
Reason: Currently when shutdown and flush in http manager, it gives up and cancels remaining requests after waiting a short period. When cancel, it holds the RequestLock, and in FHttpRequestCommon::CancelRequest, it tries to access HttpTaskTimerHandleCriticalSection to stop activity timer. In the mean time, the request itself could be in activity or total timeout callback, which is holding the HttpTaskTimerHandleCriticalSection, and trying to AbortRequest which will try to access RequstLock in HttpManager.IsValidRequest.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger, Rafa.Lecina
#tests Reproduced with test case in WebTests and fixed it. Tried launch and quit game on Win64.
[CL 32281657 by lorry li in ue5-main branch]
Use FTSTicker in http manager instead to manage game thread tasks.
#jira UE-163631
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Rafa.Lecina
#tests Passed all tests in WebTests project
[CL 32052075 by lorry li in ue5-main branch]
Only output log if request had completed when activity timeout, it can continue to run even if that happened.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina
#rb Rafa.Lecina
[CL 31948912 by lorry li in ue5-main branch]
Make the test case "Test platform request requests limits" covers the cancelling using CompleteOnHttpThread as delegate thread policy.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina [at]stephen.ma
#rb Rafa.Lecina
#tests Passed the WebTests.
[CL 31879765 by lorry li in ue5-main branch]
Deperecate the FGenericPlatformHttp::UsesThreadedHttp interface and remove corresponding impls, now all platforms are using threaded http requests;
Re-enable retry system off-game thread support.
Reason:
When accessing requests lock and trigger complete callback in http manager Tick from main thread, the complete callback could have been bound to retry manager which will try to access retry manager lock, while retry manager lock can be holding by FHttpRetrySystem::FManager::RetryHttpRequestWithDelay, which triggered by timer callback from http thread and is trying to access http manager's requests lock in order to add the retry request to http manager.
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina
#rb michael.atchison
[CL 31821069 by lorry li in ue5-main branch]
Add test cases to test that after canceling/shut down request, the response body receive delegate won't ever been called.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]jens.petersam
#jira UE-207423, FORT-706402
#rb michael.atchison, Rafa.Lecina
[CL 31820574 by lorry li in ue5-main branch]
Get rid of platform specific code in WebTests, define macros in Http.Build.cs instead.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#jira UE-207067, UE-207061
#rb Rafa.Lecina
[CL 31777105 by lorry li in ue5-main branch]
- Retry period changed from linear to exponential;
- Adds random jitter multiplication to computed backoff.
Final default retry lockout period formula looks like this:
RandRange(JitterMin, JitterMax) * Pow(Base, RetryNumber + 1 + Bias) where RetryNumber is 0, 1, 2, 3...
Defaults:
JitterMin = 0.5
JitterMax = 1.0
Base = 2.0
Bias = 1.0
[REVIEW] [at]david.parton [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Rafa.Lecina
[CL 31776593 by lorry li in ue5-main branch]