feat: implement strict retention runtime parity for jetstream
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user