Main implementation by Dominik with build and switchboard support added by me.
#jira UE-147235
#rb Dominik.Peacock
#preflight 6284fa081f474f0660ecb74e
[CL 20264867 by jason walter in ue5-main branch]
#rb none
#jira UE-135725
#ROBOMERGE-AUTHOR: jason.walter
#ROBOMERGE-SOURCE: CL 18284108 in //UE5/Release-5.0/... via CL 18284160
#ROBOMERGE-BOT: STARSHIP (Release-Engine-Staging -> Release-Engine-Test) (v895-18170469)
[CL 18284167 by jason walter in ue5-release-engine-test branch]
On Mac, added a warning log when UnrealMultiUserServer terminates because user closed it with CMD-Q (or from menu) or by logging out, shutting down or rebooting the computer.
On Mac, added a reason (logout, sys. restart, sys shutdown, user quitting) to the engine quit request when UnrealMultiUserServer is asked to quit.
#jira UE-106186 - Expected warnings are not shown in logs when UnrealMultiUserServer window is closed
#rb Jason.Walter, Michael.Trepka
[CL 15145104 by Patrick Laflamme in ue5-main branch]
- 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]
#jira UE-72745
#rb Jamie.Dale
#ROBOMERGE-SOURCE: CL 7248229 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v367-6836689)
[CL 7248230 by francis hurteau in Main branch]
#jira UE-72745
#rb none
[CODEREVIEW] Jamie.Dale
#ROBOMERGE-SOURCE: CL 7233710 in //UE4/Release-4.23/...
#ROBOMERGE-BOT: RELEASE (Release-4.23 -> Main) (v367-6836689)
[CL 7233713 by francis hurteau in Main branch]