From 6e8fdcfeef6f11154854253048e76fc4e974f713 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Wed, 5 Mar 2025 09:56:49 -0600 Subject: [PATCH] fix: parrellel safe changes --- src/BlitzKit.CLI/Functions/Mangler.cs | 2 -- src/BlitzKit.CLI/Models/BlitzKitAssets.cs | 19 ++++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/BlitzKit.CLI/Functions/Mangler.cs b/src/BlitzKit.CLI/Functions/Mangler.cs index f98788ff1..d0fc52559 100644 --- a/src/BlitzKit.CLI/Functions/Mangler.cs +++ b/src/BlitzKit.CLI/Functions/Mangler.cs @@ -134,8 +134,6 @@ namespace BlitzKit.CLI.Functions // MangleHull(id, pda); - Console.WriteLine(slug); - Tank tank = new() { Id = id, diff --git a/src/BlitzKit.CLI/Models/BlitzKitAssets.cs b/src/BlitzKit.CLI/Models/BlitzKitAssets.cs index 0a22553f0..4e4353ac8 100644 --- a/src/BlitzKit.CLI/Models/BlitzKitAssets.cs +++ b/src/BlitzKit.CLI/Models/BlitzKitAssets.cs @@ -1,3 +1,4 @@ +using System.Collections.Concurrent; using System.Diagnostics; using System.Net; using BlitzKit.CLI.Utils; @@ -41,7 +42,8 @@ namespace BlitzKit.CLI.Models { Credentials = new(Env.GetString("GH_TOKEN")), }; - List changes = []; + var seenPaths = new ConcurrentDictionary(); + var changes = new ConcurrentBag(); // Thread-safe alternative await Task.WhenAll( changesRaw @@ -55,16 +57,19 @@ namespace BlitzKit.CLI.Models if (response.StatusCode == HttpStatusCode.NotFound) { - Console.WriteLine( - $"🟢 (+{change.Content.Count.ToString("N0", Program.Culture)}B) {blobPath}" - ); - changes.Add(change); + if (seenPaths.TryAdd(change.Path, true)) // Ensures uniqueness + { + Console.WriteLine( + $"🟢 (+{change.Content.Count.ToString("N0", Program.Culture)}B) {blobPath}" + ); + changes.Add(change); + } } else if (response.StatusCode == HttpStatusCode.OK) { var bytes = await response.Content.ReadAsByteArrayAsync(); - if (!bytes.SequenceEqual([.. change.Content])) + if (!bytes.SequenceEqual([.. change.Content]) && seenPaths.TryAdd(change.Path, true)) { var diff = change.Content.Count - bytes.Length; @@ -83,7 +88,7 @@ namespace BlitzKit.CLI.Models .ToList() ); - if (changes.Count == 0) + if (changes.IsEmpty) return; var repoRawSplit = repoRaw.Split('/');