8588133a4e
- 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>
59 lines
1.7 KiB
JavaScript
59 lines
1.7 KiB
JavaScript
require('dotenv').config();
|
|
|
|
const path = require('path');
|
|
|
|
// Database configuration for different environments
|
|
const config = {
|
|
development: {
|
|
client: process.env.DATABASE_CLIENT || 'sqlite3',
|
|
connection: process.env.DATABASE_CLIENT === 'pg' ? {
|
|
host: process.env.DB_HOST || 'localhost',
|
|
port: process.env.DB_PORT || 5432,
|
|
user: process.env.DB_USER || 'postgres',
|
|
password: process.env.DB_PASSWORD || 'postgres',
|
|
database: process.env.DB_NAME || 'photo_sharing'
|
|
} : {
|
|
filename: path.join(__dirname, process.env.DATABASE_PATH || './data/photo_sharing.db')
|
|
},
|
|
useNullAsDefault: process.env.DATABASE_CLIENT !== 'pg',
|
|
migrations: {
|
|
directory: './migrations'
|
|
},
|
|
seeds: {
|
|
directory: './seeds'
|
|
}
|
|
},
|
|
|
|
production: {
|
|
client: process.env.DATABASE_CLIENT || 'pg',
|
|
connection: {
|
|
host: process.env.DB_HOST || 'db',
|
|
port: process.env.DB_PORT || 5432,
|
|
user: process.env.DB_USER || 'picpeak',
|
|
password: process.env.DB_PASSWORD,
|
|
database: process.env.DB_NAME || 'picpeak',
|
|
ssl: process.env.DB_SSL === 'true' ? { rejectUnauthorized: false } : false,
|
|
// Connection stability settings
|
|
connectionTimeoutMillis: 30000,
|
|
idleTimeoutMillis: 30000,
|
|
keepAlive: true,
|
|
keepAliveInitialDelayMillis: 0
|
|
},
|
|
pool: {
|
|
min: 5,
|
|
max: 25,
|
|
acquireTimeoutMillis: 60000,
|
|
createTimeoutMillis: 60000,
|
|
idleTimeoutMillis: 30000,
|
|
reapIntervalMillis: 1000,
|
|
createRetryIntervalMillis: 200,
|
|
propagateCreateError: false
|
|
},
|
|
migrations: {
|
|
directory: './migrations'
|
|
},
|
|
acquireConnectionTimeout: 60000
|
|
}
|
|
};
|
|
|
|
module.exports = config[process.env.NODE_ENV || 'development']; |