fix: critical database connection pool exhaustion issues
- Disabled duplicate email service (emailService.js) that was creating redundant connections - Increased connection pool size from 10 to 25 for production environment - Extended session timeout cache from 5 to 30 minutes to reduce DB queries - Added connection retry logic with exponential backoff for transient failures - Fixed password validation to use retry wrapper and correct setting key - Updated public settings and gallery middleware to handle connection failures gracefully These changes address the "Connection terminated unexpectedly" errors in production by: 1. Reducing unnecessary database connections 2. Increasing available connection pool capacity 3. Implementing automatic retry for transient connection failures 4. Caching frequently accessed data for longer periods 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -119,11 +119,14 @@ function validatePassword(password, options = {}) {
|
||||
*/
|
||||
async function getPasswordComplexitySettings() {
|
||||
try {
|
||||
const db = require('../db');
|
||||
const settings = await db('app_settings')
|
||||
.where('setting_key', 'password_complexity')
|
||||
.where('setting_type', 'security')
|
||||
.first();
|
||||
const { db, withRetry } = require('../database/db');
|
||||
|
||||
// Use retry wrapper to handle connection failures
|
||||
const settings = await withRetry(async () => {
|
||||
return await db('app_settings')
|
||||
.where('setting_key', 'security_password_complexity_level')
|
||||
.first();
|
||||
});
|
||||
|
||||
if (!settings || !settings.setting_value) {
|
||||
return 'moderate'; // Default
|
||||
@@ -136,7 +139,7 @@ async function getPasswordComplexitySettings() {
|
||||
return value;
|
||||
} catch (error) {
|
||||
logger.error('Failed to get password complexity settings:', error);
|
||||
return 'moderate'; // Default on error
|
||||
return 'moderate'; // Default on error - ensures app continues working
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user