Handle shutdowns better, allow retrying multis

This commit is contained in:
2026-01-18 01:28:38 -06:00
parent 24a8613ea0
commit d7dec4b7e9
8 changed files with 117 additions and 10 deletions

View File

@@ -95,5 +95,46 @@
result["status"] = 202;
return result;
}
public async Task<IDictionary<string, object>> RetryMulti(string multiId) {
var files = await this.AzureStorage.GetFiles(multiId);
this.Logger.LogDebug("Found files: {@files}", files.Keys);
var result = new Dictionary<string, object>();
if (!files.TryGetValue("settings.json", out var settingsData)) {
result["status"] = 404;
result["error"] = "multi settings not found";
return result;
}
var settingsJson = JsonDocument.Parse(settingsData.ToString());
var settings = settingsJson.Deserialize<IList<SeedSettings>>(JsonOptions.Default);
if (settings == null) {
result["status"] = 404;
result["error"] = "multi settings not found";
return result;
}
if (files.TryGetValue("patch.bps", out var patchData)) {
result["status"] = 409;
result["error"] = "generation already successful";
return result;
}
if (files.ContainsKey("generating")) {
result["status"] = 409;
result["error"] = "generation still in progress";
return result;
}
await this.RandomizeMultiworld(settings, multiId);
result["status"] = 202;
return result;
}
}
}

View File

@@ -102,6 +102,7 @@
} else {
result["status"] = 404;
result["error"] = "generation failed";
result["retry"] = true;
return result;
}
}