From 0b77107b1eae3c065890cea7e0a0b139a9d436b9 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Sat, 27 Apr 2024 20:05:42 +0200 Subject: [PATCH] [backend/database] Add connection pool size configuration option --- Iceshrimp.Backend/Core/Configuration/Config.cs | 11 ++++++----- Iceshrimp.Backend/Core/Database/DatabaseContext.cs | 11 ++++++----- Iceshrimp.Backend/configuration.ini | 3 +++ 3 files changed, 15 insertions(+), 10 deletions(-) diff --git a/Iceshrimp.Backend/Core/Configuration/Config.cs b/Iceshrimp.Backend/Core/Configuration/Config.cs index ac40f487..f7f0a356 100644 --- a/Iceshrimp.Backend/Core/Configuration/Config.cs +++ b/Iceshrimp.Backend/Core/Configuration/Config.cs @@ -68,11 +68,12 @@ public sealed class Config public sealed class DatabaseSection { - [Required] public string Host { get; init; } = "localhost"; - [Range(1, 65535)] public int Port { get; init; } = 5432; - [Required] public string Database { get; init; } = null!; - [Required] public string Username { get; init; } = null!; - public string? Password { get; init; } + [Required] public string Host { get; init; } = "localhost"; + [Range(1, 65535)] public int Port { get; init; } = 5432; + [Required] public string Database { get; init; } = null!; + [Required] public string Username { get; init; } = null!; + public string? Password { get; init; } + [Range(1, 1000)] public int MaxConnections { get; init; } = 100; } public sealed class StorageSection diff --git a/Iceshrimp.Backend/Core/Database/DatabaseContext.cs b/Iceshrimp.Backend/Core/Database/DatabaseContext.cs index 616c44af..35dbc323 100644 --- a/Iceshrimp.Backend/Core/Database/DatabaseContext.cs +++ b/Iceshrimp.Backend/Core/Database/DatabaseContext.cs @@ -98,11 +98,12 @@ public class DatabaseContext(DbContextOptions options) if (config == null) throw new Exception("Failed to initialize database: Failed to load configuration"); - dataSourceBuilder.ConnectionStringBuilder.Host = config.Host; - dataSourceBuilder.ConnectionStringBuilder.Port = config.Port; - dataSourceBuilder.ConnectionStringBuilder.Username = config.Username; - dataSourceBuilder.ConnectionStringBuilder.Password = config.Password; - dataSourceBuilder.ConnectionStringBuilder.Database = config.Database; + dataSourceBuilder.ConnectionStringBuilder.Host = config.Host; + dataSourceBuilder.ConnectionStringBuilder.Port = config.Port; + dataSourceBuilder.ConnectionStringBuilder.Username = config.Username; + dataSourceBuilder.ConnectionStringBuilder.Password = config.Password; + dataSourceBuilder.ConnectionStringBuilder.Database = config.Database; + dataSourceBuilder.ConnectionStringBuilder.MaxPoolSize = config.MaxConnections; return ConfigureDataSource(dataSourceBuilder); } diff --git a/Iceshrimp.Backend/configuration.ini b/Iceshrimp.Backend/configuration.ini index 8e4537cd..bd3c8070 100644 --- a/Iceshrimp.Backend/configuration.ini +++ b/Iceshrimp.Backend/configuration.ini @@ -66,6 +66,9 @@ Database = iceshrimp Username = iceshrimp Password = iceshrimp +;; The maximum amount of connections for the connection pool. Valid range: 1-1000. Defaults to 100 if unset. +MaxConnections = 100 + [Storage] ;; Where to store media attachments ;; Options: [Local, ObjectStorage]