From 94ca91a03fd32c33fac269a193302f4952750311 Mon Sep 17 00:00:00 2001 From: Mateusz Charytoniuk <mateusz.charytoniuk@protonmail.com> Date: Mon, 16 Oct 2023 20:48:30 +0200 Subject: [PATCH] chore: prefill connection pools --- src/DatabaseConnectionPoolConfiguration.php | 2 ++ src/RedisConnectionPoolConfiguration.php | 2 ++ .../DatabaseConfigurationProvider.php | 3 +++ .../ConfigurationProvider/RedisConfigurationProvider.php | 2 ++ .../DatabaseConnectionPoolRepositoryProvider.php | 9 +++++---- .../RedisConnectionPoolRepositoryProvider.php | 9 +++++---- 6 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/DatabaseConnectionPoolConfiguration.php b/src/DatabaseConnectionPoolConfiguration.php index fe5f6206..1681fab6 100644 --- a/src/DatabaseConnectionPoolConfiguration.php +++ b/src/DatabaseConnectionPoolConfiguration.php @@ -20,6 +20,8 @@ readonly class DatabaseConnectionPoolConfiguration #[SensitiveParameter] public string $password, #[SensitiveParameter] + public int $poolSize, + #[SensitiveParameter] public int $port, #[SensitiveParameter] public string $username, diff --git a/src/RedisConnectionPoolConfiguration.php b/src/RedisConnectionPoolConfiguration.php index 9986d37e..3e56da1a 100644 --- a/src/RedisConnectionPoolConfiguration.php +++ b/src/RedisConnectionPoolConfiguration.php @@ -16,6 +16,8 @@ readonly class RedisConnectionPoolConfiguration #[SensitiveParameter] public string $password, #[SensitiveParameter] + public int $poolSize, + #[SensitiveParameter] public int $port, #[SensitiveParameter] public string $prefix, diff --git a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php index 3442a3ba..6312452c 100644 --- a/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php +++ b/src/SingletonProvider/ConfigurationProvider/DatabaseConfigurationProvider.php @@ -20,6 +20,7 @@ use Nette\Schema\Schema; * host: string, * log_queries: bool, * password: string, + * pool_size: int, * port: int, * username: string, * }> @@ -43,6 +44,7 @@ final readonly class DatabaseConfigurationProvider extends ConfigurationProvider 'host' => Expect::string()->min(1)->required(), 'log_queries' => Expect::bool()->required(), 'password' => Expect::string()->required(), + 'pool_size' => Expect::int()->min(1)->required(), 'port' => Expect::int()->min(1)->max(65535)->required(), 'username' => Expect::string()->min(1)->required(), ]); @@ -63,6 +65,7 @@ final readonly class DatabaseConfigurationProvider extends ConfigurationProvider host: $connectionPoolConfiguration->host, logQueries: $connectionPoolConfiguration->log_queries, password: $connectionPoolConfiguration->password, + poolSize: $connectionPoolConfiguration->pool_size, port: $connectionPoolConfiguration->port, username: $connectionPoolConfiguration->username, ), diff --git a/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php b/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php index 0261d127..fb95a128 100644 --- a/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php +++ b/src/SingletonProvider/ConfigurationProvider/RedisConfigurationProvider.php @@ -40,6 +40,7 @@ final readonly class RedisConfigurationProvider extends ConfigurationProvider 'db_index' => Expect::int()->min(0)->required(), 'host' => Expect::string()->min(1)->required(), 'password' => Expect::string()->required(), + 'pool_size' => Expect::int()->min(1)->required(), 'port' => Expect::int()->min(1)->max(65535)->required(), 'prefix' => Expect::string()->min(1)->required(), 'timeout' => Expect::int()->min(0)->required(), @@ -59,6 +60,7 @@ final readonly class RedisConfigurationProvider extends ConfigurationProvider dbIndex: $connectionPoolConfiguration->db_index, host: $connectionPoolConfiguration->host, password: $connectionPoolConfiguration->password, + poolSize: $connectionPoolConfiguration->pool_size, port: $connectionPoolConfiguration->port, prefix: $connectionPoolConfiguration->prefix, timeout: $connectionPoolConfiguration->timeout, diff --git a/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php b/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php index 1e461b4d..ee16d39e 100644 --- a/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php +++ b/src/SingletonProvider/DatabaseConnectionPoolRepositoryProvider.php @@ -46,10 +46,11 @@ final readonly class DatabaseConnectionPoolRepositoryProvider extends SingletonP PDO::ATTR_ERRMODE => PDO::ERRMODE_SILENT, ]) ; - $databaseConnectionPoolRepository->databaseConnectionPool->put( - $name, - new PDOPool($pdoConfig), - ); + + $pdoPool = new PDOPool($pdoConfig, $connectionPoolConfiguration->poolSize); + $pdoPool->fill(); + + $databaseConnectionPoolRepository->databaseConnectionPool->put($name, $pdoPool); } return $databaseConnectionPoolRepository; diff --git a/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php b/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php index 48c4a745..7e494f5a 100644 --- a/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php +++ b/src/SingletonProvider/RedisConnectionPoolRepositoryProvider.php @@ -37,10 +37,11 @@ final readonly class RedisConnectionPoolRepositoryProvider extends SingletonProv ->withDbIndex($connectionPoolConfiguration->dbIndex) ->withTimeout($connectionPoolConfiguration->timeout) ; - $redisConnectionPoolRepository->redisConnectionPool->put( - $name, - new RedisPool($redisConfig), - ); + + $redisPool = new RedisPool($redisConfig, $connectionPoolConfiguration->poolSize); + $redisPool->fill(); + + $redisConnectionPoolRepository->redisConnectionPool->put($name, $redisPool); } return $redisConnectionPoolRepository; -- GitLab