ensure restart save is exclusive to prevent save corruption
This commit is contained in:
@@ -33,6 +33,11 @@
|
||||
/// <summary>
|
||||
/// The save operation timed out
|
||||
/// </summary>
|
||||
TimedOut = -5
|
||||
TimedOut = -5,
|
||||
|
||||
/// <summary>
|
||||
/// Another save operation is in progress
|
||||
/// </summary>
|
||||
ConcurrentSaveInProgress = -6
|
||||
}
|
||||
}
|
@@ -248,7 +248,7 @@ namespace Torch.Server
|
||||
{
|
||||
if (save)
|
||||
{
|
||||
var saveResult = Save().Result;
|
||||
var saveResult = Save(exclusive: true).Result;
|
||||
if (saveResult is not (GameSaveResult.Success or GameSaveResult.TimedOut))
|
||||
{
|
||||
Log.Error("Save failed due to {Reason}. Restart aborted!", saveResult);
|
||||
|
@@ -330,7 +330,7 @@ namespace Torch
|
||||
if (MyAsyncSaving.InProgress || _inProgressSaves > 0)
|
||||
{
|
||||
Log.Error("Failed to save game, game is already saving");
|
||||
return null;
|
||||
return Task.FromResult(GameSaveResult.ConcurrentSaveInProgress);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user