From c7404cb81dd49a80f0a0b060070ba9f53b37aa4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bart=C5=82omiej=20Dach?= Date: Mon, 26 May 2025 11:21:44 +0200 Subject: [PATCH] Add even more logging to beatmap submission process Every now and again someone will report having done something horrible to their beatmap via lazer submission, always claim having done "nothing" while invariably having done *something*, will not provide me with a workable reproduction scenario, and even if they attempt to do so, I will be unable to reproduce the issue anyway. So this change is just desperation mostly. It's logging pretty much all that it is possible to log of client-side state. --- .../Submission/BeatmapSubmissionScreen.cs | 43 +++++++++++++++---- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/osu.Game/Screens/Edit/Submission/BeatmapSubmissionScreen.cs b/osu.Game/Screens/Edit/Submission/BeatmapSubmissionScreen.cs index 94ed813461..3a9eb2c1b0 100644 --- a/osu.Game/Screens/Edit/Submission/BeatmapSubmissionScreen.cs +++ b/osu.Game/Screens/Edit/Submission/BeatmapSubmissionScreen.cs @@ -197,13 +197,22 @@ namespace osu.Game.Screens.Edit.Submission { bool beatmapHasOnlineId = Beatmap.Value.BeatmapSetInfo.OnlineID > 0; - var createRequest = beatmapHasOnlineId - ? PutBeatmapSetRequest.UpdateExisting( + PutBeatmapSetRequest createRequest; + + if (beatmapHasOnlineId) + { + createRequest = PutBeatmapSetRequest.UpdateExisting( (uint)Beatmap.Value.BeatmapSetInfo.OnlineID, Beatmap.Value.BeatmapSetInfo.Beatmaps.Where(b => b.OnlineID > 0).Select(b => (uint)b.OnlineID).ToArray(), (uint)Beatmap.Value.BeatmapSetInfo.Beatmaps.Count(b => b.OnlineID <= 0), - settings) - : PutBeatmapSetRequest.CreateNew((uint)Beatmap.Value.BeatmapSetInfo.Beatmaps.Count, settings); + settings); + log($"Updating existing beatmap set (id:{createRequest.BeatmapSetID} beatmapsToKeep:[{string.Join(",", createRequest.BeatmapsToKeep)}] beatmapsToCreate:{createRequest.BeatmapsToCreate})"); + } + else + { + createRequest = PutBeatmapSetRequest.CreateNew((uint)Beatmap.Value.BeatmapSetInfo.Beatmaps.Count, settings); + log($"Creating new beatmap set (beatmapsToCreate:{createRequest.BeatmapsToCreate})"); + } createRequest.Success += async response => { @@ -228,7 +237,7 @@ namespace osu.Game.Screens.Edit.Submission createRequest.Failure += ex => { createSetStep.SetFailed(ex.Message); - Logger.Log($"Beatmap set submission failed on creation: {ex}"); + log($"Beatmap set creation/update failed: {ex}"); allowExit(); }; @@ -257,7 +266,7 @@ namespace osu.Game.Screens.Edit.Submission { exportStep.SetFailed(ex.Message); exportProgressNotification = null; - Logger.Log($"Beatmap set submission failed on export: {ex}"); + log($"Export failed: {ex}"); allowExit(); return; } @@ -277,6 +286,7 @@ namespace osu.Game.Screens.Edit.Submission { Debug.Assert(beatmapSetId != null); Debug.Assert(beatmapPackageStream != null); + log("Determining list of files to patch..."); var onlineFilesByFilename = onlineFiles.ToDictionary(f => f.Filename, f => f.SHA2Hash); @@ -291,12 +301,16 @@ namespace osu.Game.Screens.Edit.Submission if (!onlineFilesByFilename.Remove(filename, out string? onlineHash)) { + log($@"new file: {filename}"); filesToUpdate.Add(filename); continue; } if (!localHash.Equals(onlineHash, StringComparison.OrdinalIgnoreCase)) + { + log($@"changed file: {filename} (localHash:{localHash} onlineHash:{onlineHash})"); filesToUpdate.Add(filename); + } } var changedFiles = new Dictionary(); @@ -307,11 +321,15 @@ namespace osu.Game.Screens.Edit.Submission var patchRequest = new PatchBeatmapPackageRequest(beatmapSetId.Value); patchRequest.FilesChanged.AddRange(changedFiles); patchRequest.FilesDeleted.AddRange(onlineFilesByFilename.Keys); + + foreach (string file in patchRequest.FilesDeleted) + log($@"deleted file: {file}"); + patchRequest.Success += uploadCompleted; patchRequest.Failure += ex => { uploadStep.SetFailed(ex.Message); - Logger.Log($"Beatmap submission failed on upload: {ex}"); + log($"Upload failed: {ex}"); allowExit(); }; patchRequest.Progressed += (current, total) => uploadStep.SetInProgress(total > 0 ? (float)current / total : null); @@ -322,6 +340,8 @@ namespace osu.Game.Screens.Edit.Submission private void replaceBeatmapSet() { + log("Peforming full package upload..."); + Debug.Assert(beatmapSetId != null); Debug.Assert(beatmapPackageStream != null); @@ -331,7 +351,7 @@ namespace osu.Game.Screens.Edit.Submission uploadRequest.Failure += ex => { uploadStep.SetFailed(ex.Message); - Logger.Log($"Beatmap submission failed on upload: {ex}"); + log($"Full package upload failed: {ex}"); allowExit(); }; uploadRequest.Progressed += (current, total) => uploadStep.SetInProgress((float)current / Math.Max(total, 1)); @@ -348,6 +368,8 @@ namespace osu.Game.Screens.Edit.Submission private async Task updateLocalBeatmap() { + log(@"Updating local beatmap set..."); + Debug.Assert(beatmapSetId != null); Debug.Assert(beatmapPackageStream != null); @@ -364,7 +386,7 @@ namespace osu.Game.Screens.Edit.Submission catch (Exception ex) { updateStep.SetFailed(ex.Message); - Logger.Log($"Beatmap submission failed on local update: {ex}"); + log($@"Local update failed: {ex}"); allowExit(); return; } @@ -449,6 +471,9 @@ namespace osu.Game.Screens.Edit.Submission overlay.Show(); } + private static void log(string message) + => Logger.Log($@"[{nameof(BeatmapSubmissionScreen)}] {message}", LoggingTarget.Database); + protected override void Dispose(bool isDisposing) { base.Dispose(isDisposing);