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
- Container Failed to Start
- Port Already in Use
- Container Out of Memory
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
Symptoms:
- Error:
port is already allocated
- Containers fail to bind ports
Solution:
# Find processes using the ports
sudo lsof -i :3001 # IPFS Pinner
sudo lsof -i :3002 # EVM Server
sudo lsof -i :9568 # Rudder metrics
# Kill conflicting processes
sudo kill -9 PID
# Or change ports in docker-compose.yml
sed -i 's/3001:3001/3101:3001/g' docker-compose.yml
sed -i 's/3002:3002/3102:3002/g' docker-compose.yml
Symptoms:
- Containers being killed (OOMKilled)
docker stats
shows high memory usage
Solution:
# 1. Check current memory usage
docker stats
# 2. Increase memory limits in docker-compose.yml
# Add under services:
# rudder:
# mem_limit: 4g
# evm-server:
# mem_limit: 2g
# ipfs-pinner:
# mem_limit: 1g
# 3. Add swap if needed
sudo fallocate -l 4G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
# 4. Restart containers
docker-compose restart
2. Rudder Pipeline Issues
- Pipeline Failing
- No Block Specimens Found
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
Symptoms:
- Rudder not finding work
- "No block specimens" messages
Solution:
# 1. Check operator status
# Ensure operator is enabled and staked properly
# 2. Verify network connectivity
ping google.com
curl -s $NODE_ETHEREUM_MAINNET -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
# 3. Check proof-chain connection
# Verify moonbase alpha connectivity
# 4. Monitor for incoming work
docker logs rudder | grep -i "found.*bsps"
3. EVM Server Issues
- EVM Server Not Responding
- EVM Execution Failed
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
Symptoms:
- Block execution errors
- Invalid state root errors
Solution:
# 1. Check EVM server logs for specific errors
docker logs evm-server | grep -i error
# 2. Verify block specimen format
# Check if block specimens are valid AVRO format
# 3. Ensure EVM server has sufficient resources
# Increase memory limit if needed
# 4. Check Ethereum RPC endpoint
curl -s $NODE_ETHEREUM_MAINNET -X POST -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'
4. IPFS Pinner Issues
- IPFS Pinner Not Working
- IPFS Upload Failed
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
Symptoms:
- Failed to upload block results
- Web3.storage errors
Solution:
# 1. Check WEB3_JWT validity
# Visit https://web3.storage to verify API token
# 2. Check internet connectivity
ping web3.storage
# 3. Verify storage quota
# Check web3.storage dashboard for available space
# 4. Try manual upload test
curl -X POST http://localhost:3001/api/v0/add \
-F file=@test.txt
# 5. Regenerate API token if needed
5. Network and Connectivity Issues
- RPC Connection Failed
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
- Slow Block Processing
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:
- Check the logs:
docker-compose logs -f
- Visit the documentation: Covalent Docs
- Join the Discord: Covalent Discord
- 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