Skip to main content

Covalent Troubleshooting Guide

This guide helps you diagnose and resolve common issues with your Covalent Refiner node.

Quick Diagnostics

Before diving into specific issues, run this diagnostic script:

quick-diagnostics.sh
#!/bin/bash
echo "=== Covalent Refiner Diagnostics ==="
echo ""

# Check if Docker services are running
echo "1. Docker Services Status:"
docker-compose ps 2>/dev/null || echo "❌ Docker Compose not running"
echo ""

# Check disk space
echo "2. Disk Space:"
df -h | grep -E "^/dev|Filesystem"
echo ""

# Check memory
echo "3. Memory Usage:"
free -h
echo ""

# Check running containers
echo "4. Running Containers:"
docker ps --format "table {{.Names}} {{.Status}} {{.Ports}}"
echo ""

# Check recent errors in rudder logs
echo "5. Recent Rudder Errors:"
docker logs rudder 2>&1 | grep -i error | tail -10
echo ""

# Check EVM server status
echo "6. EVM Server Status:"
curl -s http://localhost:3002/health 2>/dev/null || echo "❌ EVM Server not responding"
echo ""

# Check IPFS Pinner status
echo "7. IPFS Pinner Status:"
curl -s http://localhost:3001/health 2>/dev/null || echo "❌ IPFS Pinner not responding"

Common Issues and Solutions

1. Docker Issues

Symptoms:

  • Docker containers exit immediately
  • docker-compose up fails

Solution:

# 1. Check container logs
docker logs rudder
docker logs evm-server
docker logs ipfs-pinner

# 2. Check environment variables
cat .env
# Ensure all required variables are set:
# - BLOCK_RESULT_OPERATOR_PRIVATE_KEY
# - NODE_ETHEREUM_MAINNET
# - WEB3_JWT

# 3. Restart containers
docker-compose down
docker-compose up -d

# 4. If still failing, rebuild
docker-compose down --volumes
docker-compose pull
docker-compose up -d

2. Rudder Pipeline Issues

Symptoms:

  • Block specimens not being processed
  • Pipeline errors in logs

Solution:

# 1. Check Rudder logs
docker logs rudder -f

# 2. Verify environment variables
echo $BLOCK_RESULT_OPERATOR_PRIVATE_KEY | wc -c # Should be 64 characters
echo $NODE_ETHEREUM_MAINNET # Should be valid Ethereum RPC URL

# 3. Check operator status on dashboard
# Visit: https://www.covalenthq.com/staking/#/operator-dashboard/

# 4. Ensure sufficient CQT staking (35k testnet CQT)

# 5. Restart Rudder if needed
docker-compose restart rudder

3. EVM Server Issues

Symptoms:

  • Cannot connect to port 3002
  • EVM execution failures

Solution:

# 1. Check EVM server status
docker logs evm-server

# 2. Test connectivity
curl -s http://localhost:3002/health

# 3. Restart EVM server
docker-compose restart evm-server

# 4. Check system resources
docker stats evm-server

# 5. If persistent issues, rebuild
docker-compose stop evm-server
docker-compose rm evm-server
docker-compose up -d evm-server

4. IPFS Pinner Issues

Symptoms:

  • Cannot upload/download from IPFS
  • Port 3001 not responding

Solution:

# 1. Check IPFS pinner logs
docker logs ipfs-pinner

# 2. Verify WEB3_JWT token
# Ensure valid web3.storage API token is set

# 3. Test IPFS connectivity
curl -s http://localhost:3001/health

# 4. Check web3.storage quota
# Login to web3.storage dashboard to check usage

# 5. Restart IPFS pinner
docker-compose restart ipfs-pinner

5. Network and Connectivity Issues

Symptoms:

  • Cannot connect to Ethereum RPC
  • Network timeout errors

Solution:

# 1. Test RPC endpoint
curl -s $NODE_ETHEREUM_MAINNET -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

# 2. Check firewall settings
sudo ufw status

# 3. Try alternative RPC endpoints
# Update NODE_ETHEREUM_MAINNET in .env with backup RPC

# 4. Check DNS resolution
nslookup $(echo $NODE_ETHEREUM_MAINNET | cut -d'/' -f3)

# 5. Test with different provider (Alchemy, Infura, etc.)

6. Performance Issues

Symptoms:

  • Very slow block specimen processing
  • High latency in pipeline

Solution:

# 1. Check system resources
htop
iotop -o

# 2. Optimize Docker settings
# Add to docker-compose.yml:
# services:
# rudder:
# cpus: '2.0'
# mem_limit: 4g

# 3. Use SSD storage for better I/O
# Mount data directories on SSD

# 4. Increase worker threads (if supported)
# Check Rudder configuration options

# 5. Monitor metrics
curl -s http://localhost:9568/metrics | grep rudder

Performance Optimization

System Tuning

# Increase file descriptors
echo "fs.file-max = 65535" | sudo tee -a /etc/sysctl.conf

# Docker optimization
echo '{"log-driver": "json-file", "log-opts": {"max-size": "10m", "max-file": "3"}}' | sudo tee /etc/docker/daemon.json

# Network optimization
echo "net.core.rmem_default = 262144" | sudo tee -a /etc/sysctl.conf
echo "net.core.rmem_max = 16777216" | sudo tee -a /etc/sysctl.conf

sudo sysctl -p
sudo systemctl restart docker

Monitoring Setup

# Monitor resource usage
watch -n 5 'docker stats --no-stream'

# Monitor logs
docker-compose logs -f --tail=100

# Check metrics
curl -s http://localhost:9568/metrics | grep -E "(rudder|ipfs|evm)"

# Monitor disk usage
watch -n 30 'df -h'

Emergency Procedures

Complete Reset

# WARNING: This will delete all local data
docker-compose down --volumes
docker system prune -a
docker-compose up -d

Backup and Restore

# Create backup
docker-compose down
tar -czf covalent-backup-$(date +%Y%m%d).tar.gz .env docker-compose.yml

# Restore from backup
tar -xzf covalent-backup-YYYYMMDD.tar.gz
docker-compose up -d

Data Migration

# If moving to new server
# 1. Stop services
docker-compose down

# 2. Backup data and config
tar -czf covalent-migration.tar.gz .env docker-compose.yml

# 3. Transfer to new server
scp covalent-migration.tar.gz user@newserver:~/

# 4. Restore on new server
tar -xzf covalent-migration.tar.gz
docker-compose up -d

Getting Help

If you're still experiencing issues:

  1. Check the logs: docker-compose logs -f
  2. Visit the documentation: Covalent Docs
  3. Join the Discord: Covalent Discord
  4. Check operator dashboard: Operator Dashboard

When asking for help, always include:

  • Your OS and version
  • Docker version: docker --version
  • Docker Compose version: docker-compose --version
  • Container logs: docker-compose logs
  • Environment variables (remove private keys): cat .env
  • System resources: docker stats