Use helper method for backup retry attempts

This commit is contained in:
Dean Herbert 2024-04-29 10:35:37 +08:00
parent b262497083
commit a4bc5a8fc9
No known key found for this signature in database

View File

@ -35,6 +35,7 @@ using osu.Game.Rulesets.Mods;
using osu.Game.Scoring; using osu.Game.Scoring;
using osu.Game.Scoring.Legacy; using osu.Game.Scoring.Legacy;
using osu.Game.Skinning; using osu.Game.Skinning;
using osu.Game.Utils;
using osuTK.Input; using osuTK.Input;
using Realms; using Realms;
using Realms.Exceptions; using Realms.Exceptions;
@ -1157,33 +1158,18 @@ namespace osu.Game.Database
{ {
Logger.Log($"Creating full realm database backup at {backupFilename}", LoggingTarget.Database); Logger.Log($"Creating full realm database backup at {backupFilename}", LoggingTarget.Database);
int attempts = 10; FileUtils.AttemptOperation(() =>
while (true)
{ {
try using (var source = storage.GetStream(Filename, mode: FileMode.Open))
{ {
using (var source = storage.GetStream(Filename, mode: FileMode.Open)) // source may not exist.
{ if (source == null)
// source may not exist. return;
if (source == null)
return;
using (var destination = storage.GetStream(backupFilename, FileAccess.Write, FileMode.CreateNew)) using (var destination = storage.GetStream(backupFilename, FileAccess.Write, FileMode.CreateNew))
source.CopyTo(destination); source.CopyTo(destination);
}
return;
} }
catch (IOException) }, 20);
{
if (attempts-- <= 0)
throw;
// file may be locked during use.
Thread.Sleep(500);
}
}
} }
/// <summary> /// <summary>