Add some more resiliency to DB errors

This commit is contained in:
Ske 2020-10-14 23:35:10 +02:00
parent 5b262fdc7b
commit 9282d5e9fb
2 changed files with 7 additions and 1 deletions

View File

@ -52,6 +52,9 @@ namespace PluralKit.Bot
// Ignore "Database is shutting down" error // Ignore "Database is shutting down" error
if (e is PostgresException pe && pe.SqlState == "57P03") return false; if (e is PostgresException pe && pe.SqlState == "57P03") return false;
// Ignore thread pool exhaustion errors
if (e is NpgsqlException npe && npe.Message.Contains("The connection pool has been exhausted")) return false;
// This may expanded at some point. // This may expanded at some point.
return true; return true;
} }

View File

@ -37,7 +37,10 @@ namespace PluralKit.Core
_connectionString = new NpgsqlConnectionStringBuilder(_config.Database) _connectionString = new NpgsqlConnectionStringBuilder(_config.Database)
{ {
Pooling = true, MaxPoolSize = 500, Enlist = false, NoResetOnClose = true Pooling = true, MaxPoolSize = 500, Enlist = false, NoResetOnClose = true,
// Lower timeout than default (15s -> 2s), should ideally fail-fast instead of hanging
Timeout = 2
}.ConnectionString; }.ConnectionString;
} }