diff --git a/CHANGELOG.md b/CHANGELOG.md index 0c65e07c3..84fa2611a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,11 @@ Write the date in place of the "Unreleased" in the case a new version is release ## Unreleased +### Added + +- Configured recycle and added explicit pre-ping option (disabled by default) for + storage databases. + ### Fixed - Column names in `TableStructure` are explicitly converted to strings. diff --git a/tiled/storage.py b/tiled/storage.py index f5d702e71..30799fa1c 100644 --- a/tiled/storage.py +++ b/tiled/storage.py @@ -103,8 +103,12 @@ def _connection_pool(self) -> "sqlalchemy.pool.QueuePool": if (self.dialect == "duckdb") or (":memory:" in self.uri): pool = sqlalchemy.pool.StaticPool(creator) else: - pool = sqlalchemy.pool.QueuePool( - creator, pool_size=self.pool_size, max_overflow=self.max_overflow + return sqlalchemy.pool.QueuePool( + creator, + pool_size=self.pool_size, + max_overflow=self.max_overflow, + recycle=1800, # Recycle connections after 30 minutes + pre_ping=False, # Default -- don't test connections before using them ) monitor_db_pool(pool, self.uri)