- Fixed a disaster recovery bug preventing the Editor from recovering a session because another instance of the Editor on another project already locked all the sessions.
Problem:
On windows, the CrashReportClientEditor (hosting disaster recovery service) is started in the static initialization, before the engine is initialized, not allowing lot of command line configuration. The Editor project browser would start a first CrashReportClientEditor instance, which would load and lock all the available sessions (unless another CrashReportClientEditor was running). When the user selected a project, a new Editor and CrashReportClientEditor were launched before the first one was closed. The second instance could not access the existing sessions because they were still locked by the first instance.
Solution:
Because CrashReportClientEditor is launch before the engine is initialized, we don't have any context at the launch time. The best the was to delay the moment when the server reloads the existing sessions and enable each clients to store their sessions in different folders (repositories) mounted on demand by the server.
Implementation details:
- Implemented new RPC API to allow the client to list/create/load/drop specific repositories containing its own sessions on demand.
- Updated the Concert server to manage multiples directories where session can be stored/found (session repositories) rather than just one.
- Added a settings to allow the user to specify where the disaster recovery sessions should be stored on the disk. Now default in the current project folder.
- Added a settings to prevent the Concert server from scanning the sessions in the default location.
- Updated disaster recovery to start without any session repository and let the client decide if a new one needs to be created or an existing one be mounted to restore a previous session.
- Changed the code to let disaster recovery client manage its session history rather than letting the server rotate the old session. Defaulted the history to 0, user has no flow to visualize and pick from the history.
#rb Jamie.Dale
#ROBOMERGE-SOURCE: CL 10260823 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v591-10236483)
[CL 10260830 by patrick laflamme in Main branch]
This ensures that we honor the user-settings for reporting analytics correctly if they change while the editor is running.
#jira UE-82764
[FYI] Johan.Berg
#rb Sebastian.Nordgren
#rnx
#ROBOMERGE-SOURCE: CL 9902945 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v558-9892490)
[CL 9902964 by jamie dale in Main branch]
When the user has allowed usage data to be sent we initialize the analytics backend in the crash report client. If the user has also enabled sending unattended reports and an ensure is encountered followed by a crash the crash reporter would assert because the analytics backend was being initialized twice.
#rb sebastian.nordgren
#jira UE-82764
#ROBOMERGE-SOURCE: CL 9899678 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v558-9892490)
[CL 9899681 by johan berg in Main branch]
A previous change moved the signal to the game/editor that it's okay to continue to after the crash report client was completely done with sending and resolving callstacks, because it was assumed that there was a syncronization problem. However that proved to be another issue, so moving the signal back to where it was originally. This should make the editor only "freeze" a short time, while necessary data is collected.
#jira UE-82333
#rb pj.kack
(ushell-p4-cherrypick of 9868282 by Johan.Berg)
#ROBOMERGE-SOURCE: CL 9868804 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v548-9842178)
[CL 9868810 by johan berg in Main branch]
#rb none
[FYI] sebastian.nordgren
#jira UE-82436
#ROBOMERGE-SOURCE: CL 9838412 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v546-9757112)
[CL 9838415 by ben marsh in Main branch]
Reverted change to where FCrashReportAnalytics was initialized now that we get those settings from the UECrashContext file.
Added DelayedSend analytics attribute that determines whether or not the process that is sending an analytics event was the same one that created it.
#rb jamie.dale
#jira UETOOL-1826
#ROBOMERGE-SOURCE: CL 9731024 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v539-9700858)
[CL 9731027 by sebastian nordgren in Main branch]
#rb none
#jira UE-82092
#rnx
#ROBOMERGE-SOURCE: CL 9710426 in //UE4/Release-4.24/...
#ROBOMERGE-BOT: RELEASE (Release-4.24 -> Main) (v539-9700858)
[CL 9710427 by ben marsh in Main branch]
- Cleared the concert server instance info on server shutdown.
- Shutdown the disaster recovery service when a crash is created. This enable the next server instance to grab the file lock and restore.
- Fixed archive rotation (delete oldest) that did not work when concurrent servers existed.
- Improved disaster recovery error messages.
- Fixed disaster recovery client not restoring a session that was crashed (server managed the crash), but for which the client process was still hanging around.
- Prevent showing the recovery UI if -unattended is specified on command line.
#rb Jamie.Dale
[CL 9617188 by Patrick Laflamme in 4.24 branch]
Get GIsRequestingExit now by IsEngineRequestingExit()
Set GIsRequestingExit now by RequestEngineExit(const TCHAR* Reason) or RequestEngineExit(const FString& Reason)
NOTE If Reason is 4 or less chars it will generate an ensure to force a reason to exit
The reason behind this change is right now setting GIsRequestingExit to true can cause many things to break mainly early on and with out any sort of log warning we have entered this state. We should wrap this behind a function to allow for proper handling
#rb Chris.Babcock, Michael.Trepka, Michael.Noland
#jira UE-79933
[FYI] Michael.Noland
#ROBOMERGE-SOURCE: CL 8649683 via CL 8653683
#ROBOMERGE-BOT: (v417-8656536)
[CL 8658680 by brandon schaefer in Main branch]
- Up to CL8320930 from DevOnline and 8311605 Merge Down from Main
- skipped some Fortnite content/plugins/code where it tried to reintegrate files that had been moved pending investigation
#rb none
[CL 8321295 by Josh Markiewicz in Main branch]
Fix an issue where FCrashReportClient would not call its dtor due to being held by SCrashReportClient
#jira UE-75354
[CODEREVIEW] Arciel.Rekman
[at]Arciel.Rekman
#rb Arciel.Rekman
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: brandon.schaefer
#ROBOMERGE-SOURCE: CL 7675363 in //UE4/Release-4.23/... via CL 7675365
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build) (v388-7785529)
[CL 7802542 by brandon schaefer in Dev-Build branch]
- This allows for Confidential platforms to exist outside of the engine, and insert themselves in as needed
- Directory structure is, where .... mirrors the directory structure for Engine and projects
- /Platforms/XXX/....
- Moving to more data driven approach for ShaderPlatforms and PlatformInfo, where they can be read from DataDrivenPlatformInfo.ini files that live in the platform config folders
- Removed platform mentions from UBT, by way of changing some enums to partial classes with static members (see UnrealTargetPlatform)
- Various other UBT/UAT modifications to allow for looking in other locations for files
- THIS IS NOT A COMPLETE AND FINAL SOLUTION. WE WILL CONTINUE WORK IN DEV-BUILD BEFORE ITS READY FOR PRIMETIME
#rb ben.marsh
[CL 6271418 by Josh Adams in Dev-Build branch]
Remove old CrashReportHelper
Move files dealing with crash upload and reporting to Runtime/CrashReportCore from CrashReportClient
Addition of CrashReporter Plugin in Fortnite for use with IOS
#rb brandon.schaefer, chris.bunner
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: peter.sauerbrei
#ROBOMERGE-SOURCE: CL 5814730 via CL 5814731 via CL 5814748 via CL 5817030 via CL 5817031
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)
[CL 5847894 by peter sauerbrei in Dev-Build branch]
#rb Wes.Hunt
#ROBOMERGE-OWNER: ben.marsh
#ROBOMERGE-AUTHOR: chris.bunner
#ROBOMERGE-SOURCE: CL 5810111 via CL 5810112 via CL 5810369 via CL 5813350 via CL 5813469
#ROBOMERGE-BOT: BUILD (Main -> Dev-Build)
[CL 5843141 by chris bunner in Dev-Build branch]
Remove old CrashReportHelper
Move files dealing with crash upload and reporting to Runtime/CrashReportCore from CrashReportClient
Addition of CrashReporter Plugin in Fortnite for use with IOS
#rb brandon.schaefer, chris.bunner
#ROBOMERGE-OWNER: peter.sauerbrei
#ROBOMERGE-AUTHOR: peter.sauerbrei
#ROBOMERGE-SOURCE: CL 5814730 via CL 5814731 via CL 5814748 via CL 5817030
[CL 5817031 by peter sauerbrei in Main branch]