Merge pull request #4 from StevanFreeborn/stevanfreeborn/fix/infinite-loop-when-checking-to-renew-subscription

fix: stop requeuing immediately inside loop that just continually dequeues item
This commit is contained in:
Stevan Freeborn
2025-06-05 23:19:26 -05:00
committed by GitHub
@@ -72,6 +72,8 @@ internal sealed class SubscriptionWorker(
private async Task ProcessSubscriptionQueueAsync(CancellationToken cancellationToken) private async Task ProcessSubscriptionQueueAsync(CancellationToken cancellationToken)
{ {
var tasksToRequeue = new List<SubscribeTask>();
while (_subscriptionQueue.TryDequeue(out var task)) while (_subscriptionQueue.TryDequeue(out var task))
{ {
// We will attempt to process the task // We will attempt to process the task
@@ -90,7 +92,7 @@ internal sealed class SubscriptionWorker(
now now
); );
_subscriptionQueue.Enqueue(task); tasksToRequeue.Add(task);
continue; continue;
} }
@@ -111,6 +113,8 @@ internal sealed class SubscriptionWorker(
_logger.LogWarning("Failed to subscribe to topic: {TopicUrl}", task.TopicUrl); _logger.LogWarning("Failed to subscribe to topic: {TopicUrl}", task.TopicUrl);
} }
tasksToRequeue.ForEach(_subscriptionQueue.Enqueue);
} }
public void Dispose() public void Dispose()