From d8b996c6d73822942d5cf168de84a5c83e95d96d Mon Sep 17 00:00:00 2001 From: Robert Paciorek Date: Mon, 4 Mar 2024 01:50:38 +0000 Subject: [PATCH] bugfixes - fix race condition on SetProduct - properly create ModdingService singleton on startup - remove debug print --- src/Controllers/Common/ContentController.cs | 2 +- src/Program.cs | 8 +++----- src/Util/SavedData.cs | 1 - 3 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/Controllers/Common/ContentController.cs b/src/Controllers/Common/ContentController.cs index 34fe6dd..5a00fcc 100644 --- a/src/Controllers/Common/ContentController.cs +++ b/src/Controllers/Common/ContentController.cs @@ -69,7 +69,7 @@ public class ContentController : Controller { [HttpPost] //[Produces("application/xml")] [Route("ContentWebService.asmx/SetProduct")] // used by World Of Jumpstart - [VikingSession] + [VikingSession(UseLock=true)] public bool SetProduct(Viking viking, [FromForm] string contentXml, [FromForm] string apiKey) { Util.SavedData.Set( viking, diff --git a/src/Program.cs b/src/Program.cs index e637dac..fb76f16 100644 --- a/src/Program.cs +++ b/src/Program.cs @@ -21,7 +21,9 @@ builder.Services.AddControllers(options => { }); builder.Services.AddDbContext(); -builder.Services.AddSingleton(); +// create Modding Service singleton here ... do this before start http server to avoid serve invalid assets list +builder.Services.AddSingleton(new ModdingService()); +// other singletons will be created at first use ... builder.Services.AddSingleton(); builder.Services.AddSingleton(); builder.Services.AddSingleton(); @@ -53,10 +55,6 @@ using var scope = app.Services.CreateScope(); scope.ServiceProvider.GetRequiredService().Database.EnsureCreated(); -// create Modding Service singleton ... do this before start http server to avoid serve invalid assets list - -new ModdingService(); - // Configure the HTTP request pipeline. if (assetServer) diff --git a/src/Util/SavedData.cs b/src/Util/SavedData.cs index 845e1ab..4cfa1ed 100644 --- a/src/Util/SavedData.cs +++ b/src/Util/SavedData.cs @@ -7,7 +7,6 @@ public class SavedData { } public static void Set(Viking viking, uint saveId, string? contentXml) { - Console.WriteLine($"\n\n{saveId} {contentXml}\n"); Model.SavedData? savedData = viking.SavedData.FirstOrDefault(s => s.SaveId == saveId); if (savedData is null) { savedData = new() {