Skip to main content

Troubleshooting Guide

This guide helps diagnose and resolve common issues in PulseCRM.

Common Issues

Authentication Issues

JWT Token Invalid

Symptoms:

  • 401 Unauthorized responses
  • Unexpected logouts
  • Token validation errors

Solutions:

  1. Check token expiration
  2. Verify token format
  3. Confirm secret key configuration
  4. Check for clock skew

Session Management

Symptoms:

  • Multiple re-authentications
  • Lost sessions
  • Concurrent session conflicts

Solutions:

  1. Verify session configuration
  2. Check session storage
  3. Review timeout settings
  4. Monitor session cleanup

Database Issues

Connection Problems

Symptoms:

  • Connection timeout errors
  • Pool exhaustion
  • Intermittent failures

Solutions:

  1. Check connection string
  2. Verify database credentials
  3. Monitor connection pool
  4. Review network configuration

Query Performance

Symptoms:

  • Slow response times
  • Query timeouts
  • High resource usage

Solutions:

  1. Review query plans
  2. Check indexes
  3. Optimize queries
  4. Monitor query cache

API Issues

Rate Limiting

Symptoms:

  • 429 Too Many Requests
  • Throttled requests
  • Inconsistent responses

Solutions:

  1. Check rate limit configuration
  2. Implement request queuing
  3. Add retry logic
  4. Monitor usage patterns

Response Errors

Symptoms:

  • Unexpected 500 errors
  • Inconsistent data
  • Timeout issues

Solutions:

  1. Check error logs
  2. Verify request format
  3. Monitor API health
  4. Review error handling

Diagnostic Tools

System Health Check

# Check system status
curl http://localhost:3000/api/health

# Expected response
{
"status": "healthy",
"services": {
"database": "connected",
"cache": "available",
"storage": "accessible"
}
}

Database Diagnostics

-- Check connection count
SELECT count(*), state
FROM pg_stat_activity
GROUP BY state;

-- Identify slow queries
SELECT pid, query, duration
FROM pg_stat_activity
WHERE state = 'active'
ORDER BY duration DESC;

API Diagnostics

# Test API endpoint with curl
curl -v -H "Authorization: Bearer ${TOKEN}" \
http://localhost:3000/api/test

# Monitor rate limits
curl -v -H "Authorization: Bearer ${TOKEN}" \
http://localhost:3000/api/rate-limit-status

Error Messages

Database Errors

Connection Failed

Error: Connection to database failed
Cause: Unable to establish database connection
Solution:
1. Check database credentials
2. Verify database is running
3. Check network connectivity

Query Failed

Error: Query execution failed
Cause: Invalid query or database constraint violation
Solution:
1. Check query syntax
2. Verify data constraints
3. Review error details

API Errors

Authentication Failed

Error: Authentication failed
Status: 401
Cause: Invalid or expired token
Solution:
1. Check token validity
2. Verify credentials
3. Review authentication flow

Validation Failed

Error: Validation failed
Status: 400
Cause: Invalid request data
Solution:
1. Check request format
2. Verify required fields
3. Review validation rules

Performance Issues

Slow Queries

Symptoms

  • Long response times
  • High CPU usage
  • Memory pressure

Diagnosis

  1. Check query plans
  2. Monitor index usage
  3. Review data volume
  4. Analyze query patterns

Solutions

  1. Optimize indexes
  2. Refactor queries
  3. Implement caching
  4. Consider denormalization

Memory Issues

Symptoms

  • High memory usage
  • Garbage collection spikes
  • Out of memory errors

Diagnosis

  1. Monitor memory usage
  2. Check memory leaks
  3. Review resource allocation
  4. Analyze usage patterns

Solutions

  1. Optimize memory usage
  2. Implement pooling
  3. Add memory limits
  4. Review resource cleanup

Monitoring

Key Metrics

System Health

  • CPU usage
  • Memory usage
  • Disk space
  • Network traffic

Application Metrics

  • Response times
  • Error rates
  • Request volume
  • Active users

Database Metrics

  • Connection count
  • Query performance
  • Lock contention
  • Cache hit ratio

Logging

Log Levels

// Log level configuration
const logLevels = {
error: 0,
warn: 1,
info: 2,
debug: 3
};

// Usage example
logger.error("Critical error", { error });
logger.warn("Warning condition", { details });
logger.info("Operation completed", { result });
logger.debug("Debug information", { data });

Log Analysis

  1. Review error patterns
  2. Monitor warning trends
  3. Track information flow
  4. Debug specific issues

Recovery Procedures

Database Recovery

  1. Check backup status
  2. Stop affected services
  3. Restore from backup
  4. Verify data integrity
  5. Resume services

Service Recovery

  1. Identify failure point
  2. Stop affected service
  3. Clear corrupt state
  4. Restart service
  5. Verify operation

Data Recovery

  1. Identify data issue
  2. Stop write operations
  3. Apply corrections
  4. Verify integrity
  5. Resume operations