attempt to fix saving of the folder file

This commit is contained in:
ThatBen 2025-05-05 08:29:03 +02:00
parent 433008b1d0
commit d521a51549
No known key found for this signature in database
GPG Key ID: E020A7DDCD52E1AB
2 changed files with 44 additions and 15 deletions

View File

@ -5,7 +5,7 @@ namespace AutoClient.Modes.FolderStore
{
public class FolderSaver : IFileSaverEventHandler
{
private const string FolderSaverFilename = "foldersaver.json";
public const string FolderSaverFilename = "foldersaver.json";
private readonly App app;
private readonly LoadBalancer loadBalancer;
private readonly JsonFile<FolderStatus> statusFile;
@ -52,6 +52,8 @@ namespace AutoClient.Modes.FolderStore
SaveChanges();
Thread.Sleep(100);
}
app.Log.Log("All files processed.");
}
private void CheckAndSaveChanges()
@ -105,20 +107,9 @@ namespace AutoClient.Modes.FolderStore
Filename = FolderSaverFilename
};
var folderFile = Path.Combine(app.Config.FolderToStore, FolderSaverFilename);
var cidsFile = Path.Combine(app.Config.DataPath, "cids.log");
ApplyPadding(folderFile);
var fileSaver = CreateFileSaver(folderFile, entry);
var fileSaver = CreateFileSaver(folderFile, entry, new FolderSaveResultHandler(app, entry));
fileSaver.Process();
if (!string.IsNullOrEmpty(entry.EncodedCid))
{
app.Log.Log($"!!! {FolderSaverFilename} saved to CID '{entry.EncodedCid}' !!!");
File.AppendAllLines(cidsFile, [entry.EncodedCid]);
}
else
{
app.Log.Error($"Failed to store {FolderSaverFilename} :|");
}
}
private const int MinCodexStorageFilesize = 262144;
@ -136,16 +127,21 @@ namespace AutoClient.Modes.FolderStore
lock (statusLock)
{
status.Padding = paddingMessage + RandomUtils.GenerateRandomString(required);
statusFile.Save(status);
}
SaveChanges();
}
}
private FileSaver CreateFileSaver(string folderFile, FileStatus entry)
{
return CreateFileSaver(folderFile, entry, slowModeHandler);
}
private FileSaver CreateFileSaver(string folderFile, FileStatus entry, IFileSaverResultHandler resultHandler)
{
var fixedLength = entry.Filename.PadRight(35);
var prefix = $"[{fixedLength}] ";
return new FileSaver(new LogPrefixer(app.Log, prefix), loadBalancer, status.Stats, folderFile, entry, this, slowModeHandler);
return new FileSaver(new LogPrefixer(app.Log, prefix), loadBalancer, status.Stats, folderFile, entry, this, resultHandler);
}
public void SaveChanges()
@ -157,4 +153,36 @@ namespace AutoClient.Modes.FolderStore
changeCounter++;
}
}
public class FolderSaveResultHandler : IFileSaverResultHandler
{
private readonly App app;
private readonly FileStatus entry;
public FolderSaveResultHandler(App app, FileStatus entry)
{
this.app = app;
this.entry = entry;
}
public void OnFailure()
{
app.Log.Error($"Failed to store {FolderSaver.FolderSaverFilename} :|");
}
public void OnSuccess()
{
if (!string.IsNullOrEmpty(entry.EncodedCid))
{
var cidsFile = Path.Combine(app.Config.DataPath, "cids.log");
File.AppendAllLines(cidsFile, [entry.EncodedCid]);
app.Log.Log($"!!! {FolderSaver.FolderSaverFilename} saved to CID '{entry.EncodedCid}' !!!");
}
else
{
app.Log.Error($"Foldersaver entry didn't have encoded CID somehow :|");
}
}
}
}

View File

@ -24,6 +24,7 @@ namespace AutoClient.Modes
while (!app.Cts.IsCancellationRequested)
{
saver.Run();
Thread.Sleep(TimeSpan.FromHours(1.0));
}
}
catch (Exception ex)