You've already forked Extensions.Configuration.EntityFrameworkCore
Simplify postgresql reconnection logic
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user