From 50891e5a6b1948d98da172b6d49973cb5cc781de Mon Sep 17 00:00:00 2001 From: Chris Midgley Date: Fri, 21 Jan 2022 22:32:38 +0000 Subject: [PATCH] Add overload `EnableRetryOnFailure`. (#2206) Allow specifying `errorCodesToAdd` without count or delay. Fixes #2048. --- .../Infrastructure/NpgsqlDbContextOptionsBuilder.cs | 10 ++++++++++ src/EFCore.PG/NpgsqlRetryingExecutionStrategy.cs | 12 ++++++++++++ 2 files changed, 22 insertions(+) diff --git a/src/EFCore.PG/Infrastructure/NpgsqlDbContextOptionsBuilder.cs b/src/EFCore.PG/Infrastructure/NpgsqlDbContextOptionsBuilder.cs index 3f9526d9..394eb81a 100644 --- a/src/EFCore.PG/Infrastructure/NpgsqlDbContextOptionsBuilder.cs +++ b/src/EFCore.PG/Infrastructure/NpgsqlDbContextOptionsBuilder.cs @@ -151,6 +151,16 @@ public virtual NpgsqlDbContextOptionsBuilder EnableRetryOnFailure() public virtual NpgsqlDbContextOptionsBuilder EnableRetryOnFailure(int maxRetryCount) => ExecutionStrategy(c => new NpgsqlRetryingExecutionStrategy(c, maxRetryCount)); + /// + /// Configures the context to use the default retrying . + /// + /// Additional error codes that should be considered transient. + /// + /// An instance of with the specified parameters. + /// + public virtual NpgsqlDbContextOptionsBuilder EnableRetryOnFailure(ICollection? errorCodesToAdd) + => ExecutionStrategy(c => new NpgsqlRetryingExecutionStrategy(c, errorCodesToAdd)); + /// /// Configures the context to use the default retrying . /// diff --git a/src/EFCore.PG/NpgsqlRetryingExecutionStrategy.cs b/src/EFCore.PG/NpgsqlRetryingExecutionStrategy.cs index e33909f9..0e2d9dc0 100644 --- a/src/EFCore.PG/NpgsqlRetryingExecutionStrategy.cs +++ b/src/EFCore.PG/NpgsqlRetryingExecutionStrategy.cs @@ -53,6 +53,18 @@ public class NpgsqlRetryingExecutionStrategy : ExecutionStrategy { } + /// + /// Creates a new instance of . + /// + /// Parameter object containing service dependencies. + /// Additional error codes that should be considered transient. + public NpgsqlRetryingExecutionStrategy( + ExecutionStrategyDependencies dependencies, + ICollection? errorCodesToAdd) + : this(dependencies, DefaultMaxRetryCount, DefaultMaxDelay, errorCodesToAdd) + { + } + /// /// Creates a new instance of . /// -- GitLab