214 lines
5.5 KiB
Markdown
214 lines
5.5 KiB
Markdown
# 🚨 MusicBrainz Cleaner Troubleshooting Guide
|
|
|
|
This guide documents common issues encountered when starting and running the MusicBrainz cleaner, along with their solutions.
|
|
|
|
## 📋 Key Files for New Sessions
|
|
|
|
When starting a new chat session, reference these files in order:
|
|
|
|
1. **`README.md`** - Quick start guide and basic usage
|
|
2. **`PRD.md`** - Technical specifications and requirements
|
|
3. **`SETUP.md`** - Detailed setup instructions
|
|
4. **`TROUBLESHOOTING.md`** - This file - common issues and solutions
|
|
5. **`start_services.sh`** - Automated service startup script
|
|
6. **`restart_services.sh`** - Quick restart script for after reboots
|
|
|
|
## Quick Diagnostic Commands
|
|
|
|
```bash
|
|
# Check if Docker is running
|
|
docker --version
|
|
|
|
# Check container status
|
|
cd ../musicbrainz-docker && docker-compose ps
|
|
|
|
# Check database logs
|
|
docker-compose logs db | tail -10
|
|
|
|
# Check web server logs
|
|
docker-compose logs musicbrainz | tail -10
|
|
|
|
# Test web server response
|
|
curl -s http://localhost:5001 | head -5
|
|
|
|
# Test database connection
|
|
docker-compose exec db psql -U musicbrainz -d musicbrainz_db -c "SELECT COUNT(*) FROM artist;"
|
|
|
|
# Test cleaner connection
|
|
cd ../musicbrainz-cleaner && docker-compose run --rm musicbrainz-cleaner python3 -c "from src.api.database import MusicBrainzDatabase; db = MusicBrainzDatabase(); print('Connection result:', db.connect())"
|
|
```
|
|
|
|
## Common Issues & Solutions
|
|
|
|
### 🚫 Issue 1: Database Connection Refused
|
|
|
|
**Error Message:**
|
|
```
|
|
Connection error: connection to server at "172.18.0.2", port 5432 failed: Connection refused
|
|
```
|
|
|
|
**Root Cause:** Database container not fully initialized or wrong host configuration
|
|
|
|
**Solutions:**
|
|
|
|
1. **Wait for database initialization:**
|
|
```bash
|
|
cd ../musicbrainz-docker
|
|
docker-compose logs db | grep "database system is ready"
|
|
```
|
|
|
|
2. **Fix host configuration in database.py:**
|
|
```python
|
|
# Change this line in src/api/database.py:
|
|
host='172.18.0.2' # ❌ Wrong
|
|
host='db' # ✅ Correct
|
|
```
|
|
|
|
3. **Verify database is ready:**
|
|
```bash
|
|
docker-compose exec db psql -U musicbrainz -d musicbrainz_db -c "SELECT COUNT(*) FROM artist;"
|
|
```
|
|
|
|
### 🚫 Issue 2: Test Shows 0% Success Rate
|
|
|
|
**Symptoms:** Test script reports 0% success despite finding artists in logs
|
|
|
|
**Root Cause:** Test script logic error - checking `'mbid' in result` where `result` is a tuple
|
|
|
|
**Solution:** Fix test script to extract song dictionary from tuple:
|
|
```python
|
|
# Wrong:
|
|
artist_found = 'mbid' in result
|
|
|
|
# Correct:
|
|
cleaned_song, success = result
|
|
artist_found = 'mbid' in cleaned_song
|
|
```
|
|
|
|
### 🚫 Issue 3: Port Already in Use
|
|
|
|
**Error Message:**
|
|
```
|
|
ports are not available: exposing port TCP 0.0.0.0:5000 ... bind: address already in use
|
|
```
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Kill process using port 5000
|
|
lsof -ti:5000 | xargs kill -9
|
|
|
|
# Or use alternative port
|
|
MUSICBRAINZ_WEB_SERVER_PORT=5001 docker-compose up -d
|
|
```
|
|
|
|
### 🚫 Issue 4: Container Name Conflicts
|
|
|
|
**Error Message:**
|
|
```
|
|
Conflict. The container name ... is already in use
|
|
```
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Stop and remove existing containers
|
|
docker-compose down
|
|
|
|
# Force remove specific container if needed
|
|
docker rm -f <container_name>
|
|
|
|
# Restart services
|
|
docker-compose up -d
|
|
```
|
|
|
|
### 🚫 Issue 5: Docker Not Running
|
|
|
|
**Error Message:**
|
|
```
|
|
Cannot connect to the Docker daemon
|
|
```
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Start Docker Desktop
|
|
open -a Docker
|
|
|
|
# Wait for Docker to start, then restart services
|
|
./restart_services.sh
|
|
```
|
|
|
|
### 🚫 Issue 6: API Returns Empty Results
|
|
|
|
**Symptoms:** API calls return empty results even though database has data
|
|
|
|
**Root Cause:** MusicBrainz web server not fully initialized
|
|
|
|
**Solution:**
|
|
```bash
|
|
# Wait for web server to be ready
|
|
sleep 60
|
|
|
|
# Test API response
|
|
curl -s "http://localhost:5001/ws/2/artist/?query=name:The%20Beatles&fmt=json"
|
|
```
|
|
|
|
## Startup Checklist
|
|
|
|
Before running any tests, verify:
|
|
|
|
1. ✅ **Docker Desktop is running**
|
|
2. ✅ **All containers are up:** `docker-compose ps`
|
|
3. ✅ **Database is ready:** `docker-compose logs db | grep "ready"`
|
|
4. ✅ **Web server responds:** `curl -s http://localhost:5001`
|
|
5. ✅ **Database has data:** Check artist count in database
|
|
6. ✅ **Cleaner can connect:** Test database connection in cleaner
|
|
|
|
## Performance Issues
|
|
|
|
### Slow Processing
|
|
- **Cause:** Database queries taking too long
|
|
- **Solution:** Ensure database has proper indexes and is fully loaded
|
|
|
|
### Memory Issues
|
|
- **Cause:** Docker Desktop memory allocation too low
|
|
- **Solution:** Increase Docker Desktop memory to 8GB+
|
|
|
|
### Platform Warnings
|
|
- **Cause:** Apple Silicon (M1/M2) platform mismatch
|
|
- **Solution:** These warnings can be ignored - services work correctly
|
|
|
|
## Recovery Procedures
|
|
|
|
### Complete Reset
|
|
```bash
|
|
# Stop all services
|
|
cd ../musicbrainz-docker && docker-compose down
|
|
|
|
# Remove all containers and volumes (⚠️ WARNING: This deletes data)
|
|
docker-compose down -v
|
|
|
|
# Restart from scratch
|
|
./start_services.sh
|
|
```
|
|
|
|
### Quick Restart
|
|
```bash
|
|
# Quick restart (preserves data)
|
|
./restart_services.sh
|
|
```
|
|
|
|
## Getting Help
|
|
|
|
If you encounter issues not covered in this guide:
|
|
|
|
1. Check the logs: `docker-compose logs -f`
|
|
2. Verify system requirements are met
|
|
3. Try the complete reset procedure
|
|
4. Check the main README.md for additional troubleshooting steps
|
|
|
|
## Prevention Tips
|
|
|
|
1. **Always use the startup scripts** (`start_services.sh` or `restart_services.sh`)
|
|
2. **Wait for services to fully initialize** before running tests
|
|
3. **Use the startup checklist** before running any tests
|
|
4. **Keep Docker Desktop memory allocation** at 8GB or higher
|
|
5. **Use port 5001** if port 5000 is busy |