Skip to main content
Version: 0.3.0

Connection Management

Deep dive into how ageSchemaClient manages database connections.

Connection Pool Architecture

ageSchemaClient uses a sophisticated connection pooling system to manage database connections efficiently.

┌─────────────────────────────────────────┐
│ Application Layer │
├─────────────────────────────────────────┤
│ Connection Pool │
│ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ │
│ │Conn1│ │Conn2│ │Conn3│ │Conn4│ ... │
│ └─────┘ └─────┘ └─────┘ └─────┘ │
├─────────────────────────────────────────┤
│ PostgreSQL + AGE │
└─────────────────────────────────────────┘

Pool Configuration

const client = new AgeSchemaClient({
// ... connection details
max: 20, // Maximum connections
min: 2, // Minimum connections
idleTimeoutMillis: 30000, // Idle timeout
connectionTimeoutMillis: 2000, // Connection timeout
acquireTimeoutMillis: 60000, // Acquire timeout
});

Connection Lifecycle

  1. Acquisition - Get connection from pool
  2. Initialization - Set up AGE-specific settings
  3. Usage - Execute queries
  4. Cleanup - Reset connection state
  5. Return - Return to pool or close

Health Monitoring

The connection pool includes health monitoring:

  • Connection validation before use
  • Automatic reconnection on failure
  • Circuit breaker pattern for fault tolerance

Resource Management

Proper resource cleanup ensures optimal performance:

  • Automatic connection cleanup
  • Memory leak prevention
  • Graceful shutdown handling

Best Practices

  1. Configure appropriate pool sizes based on your workload
  2. Monitor connection usage in production
  3. Handle connection errors gracefully
  4. Use transactions for related operations
  5. Close clients when done

Troubleshooting

Common connection issues and solutions:

  • Pool exhaustion
  • Connection leaks
  • Timeout errors
  • Network issues