[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]jon.cook
#rb jon.cook, michael.atchison
#tests Passed WebTests test case
[CL 32500358 by lorry li in 5.4 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 32499301 by lorry li in 5.4 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 32493084 by lorry li in 5.4 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 32493078 by marc audy in 5.4 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 32492903 by lorry li in 5.4 branch]
Make sure to stop activity timeout timer when total timeout triggered;
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
#p4v-cherrypick 31948855
[CL 32141241 by richard smith in 5.4 branch]
Use cvar for the new flow just in case the headers needs to be read when complete for some urls.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Chris.Adams, michael.atchison
#tests Tried through WebTests and the game
[CL 31596531 by lorry li in 5.4 branch]
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]daniel.lamb
#jira UE-206119
#rb Daniel.Lamb, michael.atchison, Rafa.Lecina
#tests Passed new test case in WebTests
[CL 31349566 by lorry li in 5.4 branch]
Make sure when timed out in retry system, during back off or during retrying, it will return the last response instead of empty response.
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
[FYI] daniel.lamb
#rb Rafa.Lecina
#tests Tried in WebTests
[CL 31304508 by lorry li in 5.4 branch]
Stop total timeout timer after request completed in retry manager;
Move the virtual impls of FHttpRequestAdapter to cpp file.
[REVIEW] [at]michael.kirzinger [at]rafa.lecina [at]michael.atchison
#jira UE-197485
[FYI] [at]jens.petersam
#rb Jens.Petersam, Rafa.Lecina
#tests Repro and fixed in WebTests
[CL 31298382 by lorry li in 5.4 branch]
Added more checks in test case "Can do blocking call" of WebTests;
Added duplicated call CancelRequest in test case "Cancel http request connect before timeout" of WebTests;
Some other code clean in WebTests.
[REVIEW] [at]stephen.ma [at]michael.kirzinger [at]rafa.lecina
#rb stephen.ma
[CL 31289772 by lorry li in 5.4 branch]
#jira UE-204044
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]jens.petersam
#rb Rafa.Lecina
#tests Passed WebTests test case, launched the game to main menu.
[CL 31178090 by lorry li in 5.4 branch]
Deprecate HttpTimeout config, use HttpActivityTimeout or HttpTotalTimeout instead;
Deprecate HttpSendTimeout config, only use HttpActivityTimeout;
Make HttpActivityTimeout work on all platforms, not only CurlHttp;
Added corresponding http tests;
Now because timeout migrated, enable new flow by default in retry system to have non-game thread support.
#jira UE-197485, UE-202201
[REVIEW] [at]michael.atchison [at]michael.kirzinger [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger
#tests Tested through WebTests project on all platforms, also tried the game on PC.
[CL 30817277 by lorry li in ue5-main branch]
#jira UE-203992
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina [at]jans.petersam
#rb michael.atchison, Rafa.Lecina
#tests Tested through new test cases in WebTests project
[CL 30726774 by lorry li in ue5-main branch]
Add chunk latency param for streaming api in web tests server;
Make sure streaming api in web tests server can actually return response data by chunks in django asgi server.
#jira UE-197485
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb michael.atchison, Michael.Kirzinger, Rafa.Lecina
#tests Tried in WebTests project
[CL 30669130 by lorry li in ue5-main branch]
[REVIEW] [at]michael.kirzinger [at]rex.hill
#rb Rafa.Lecina, Rex.Hill, stephen.ma
#tests Tested through WebTests in local
[CL 30639345 by lorry li in ue5-main branch]
#jira UE-188438
[REVIEW] [at]michael.kirzinger [at]michael.atchison
#rb jon.fairchild, Ryan.Gerleve
#tests Reproduced and fixed it in WebTests project by a test case.
[CL 30298475 by RiotJoshuaGlazer in ue5-main branch]
#jira UE-201788
[REVIEW] [at]michael.kirzinger [at]michael.atchison [at]rafa.lecina
#rb Michael.Kirzinger, Rafa.Lecina
#tests Test covered in WebTests project
[CL 30245270 by lorry li in ue5-main branch]