feat: implement strict retention runtime parity for jetstream

This commit is contained in:
Joseph Doherty
2026-02-23 14:47:24 -05:00
parent b2312c0dac
commit cdde3c7a1d
4 changed files with 78 additions and 6 deletions

View File

@@ -12,6 +12,7 @@ public sealed class ConsumerManager
{
private readonly JetStreamMetaGroup? _metaGroup;
private readonly ConcurrentDictionary<(string Stream, string Name), ConsumerHandle> _consumers = new();
private readonly ConcurrentDictionary<string, ulong> _ackFloors = new(StringComparer.Ordinal);
private readonly PullConsumerEngine _pullConsumerEngine = new();
private readonly PushConsumerEngine _pushConsumerEngine = new();
@@ -130,6 +131,7 @@ public sealed class ConsumerManager
return false;
handle.AckProcessor.AckAll(sequence);
_ackFloors.AddOrUpdate(stream, _ => sequence, (_, existing) => Math.Max(existing, sequence));
return true;
}
@@ -180,6 +182,9 @@ public sealed class ConsumerManager
return true;
}
internal ulong GetAckFloor(string stream)
=> _ackFloors.TryGetValue(stream, out var ackFloor) ? ackFloor : 0;
}
public sealed record ConsumerHandle(string Stream, ConsumerConfig Config)