0
0

Simplify postgresql reconnection logic

This commit is contained in:
Rhys Ickeringill
2026-01-07 10:54:34 +11:00
parent db64055acb
commit b96de13414

View File

@@ -173,16 +173,21 @@ internal class PostgreSQLNotificationConfigurationReloader : Microsoft.Extension
var backoffTask = Task.Delay(_options.InitialReconnectionDelay * (1 << i), stoppingToken);
var completedTask = await Task.WhenAny(backoffTask, canConnectTask);
if (ReferenceEquals(completedTask, canConnectTask)) // connect finished first
if (ReferenceEquals(completedTask, backoffTask)) // backoff finished first
{
if (await canConnectTask) return true; // if can connect return immediately
continue; // Assume connection task has failed
}
// can connect task finished first
if (await canConnectTask) // if it finished with success
{
await ListenForNotifications(stoppingToken);
return true;
}
await backoffTask; // connect failed, wait for backoff time before trying again
}
else // backoff finished first, wait for connection task result before decided whether to go around again or return immediately
{
if (await canConnectTask) return true;
}
}
return false;
}