From bca6f283ef9322b86b3afa23ec56d771e3048b34 Mon Sep 17 00:00:00 2001 From: stidsborg Date: Sun, 24 May 2026 10:54:19 +0200 Subject: [PATCH] Replay pending deletions on QueueManager.Initialize MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit DeliveredPositionsId was migrated in d8fefadb from a parent-with-children layout to a single List value, but Initialize still scanned for children — which no writer produces anymore. Restarted flows therefore never replayed pending message deletions. Read the persisted List directly, matching the AfterFlush write pattern. --- .../Queuing/QueueManager.cs | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/Core/Cleipnir.ResilientFunctions/Queuing/QueueManager.cs b/Core/Cleipnir.ResilientFunctions/Queuing/QueueManager.cs index 88ee685fd..5f2fc0f80 100644 --- a/Core/Cleipnir.ResilientFunctions/Queuing/QueueManager.cs +++ b/Core/Cleipnir.ResilientFunctions/Queuing/QueueManager.cs @@ -83,19 +83,11 @@ private async Task Initialize() _idempotencyKeys.Initialize(); - var children = _effect.GetChildren(DeliveredPositionsId); - var positions = new List(); - foreach (var childId in children) - { - var position = _effect.Get(childId); - positions.Add(position); - } - - if (positions.Any()) + if (_effect.TryGet>(DeliveredPositionsId, out var positions) && positions is { Count: > 0 }) { await _messageStore.DeleteMessages(_storedId, positions); - foreach (var childId in children) - await _effect.Clear(childId, flush: false); + positions.Clear(); + _effect.FlushlessUpsert(DeliveredPositionsId, positions, alias: null); } _initialized = true;