Troubleshooting
This section helps you diagnose and resolve common issues with Fluree deployments.
Troubleshooting Guides
Common Errors
Reference for frequently encountered errors:
- Ledger not found
- Invalid IRI errors
- Transaction failures
- Query timeouts
- Permission errors
- Storage issues
- Indexing problems
Debugging Queries
Tools and techniques for query debugging:
- Using EXPLAIN plans
- Query tracing
- Performance profiling
- Identifying slow queries
- Optimizing query patterns
Quick Diagnostics
Health Check
First step for any issue:
curl http://localhost:8090/health
Check for unhealthy components.
Server Status
Check overall server state:
curl http://localhost:8090/v1/fluree/stats
Look for:
- High error counts
- Active queries/transactions stuck
- High indexing lag
- Memory issues
Logs
Check server logs:
# Recent errors
tail -f /var/log/fluree/server.log | grep ERROR
# Recent warnings
tail -f /var/log/fluree/server.log | grep WARN
Common Issue Categories
Connection Issues
Symptoms:
- Cannot connect to server
- Connection refused
- Connection timeout
Common Causes:
- Server not running
- Wrong port
- Firewall blocking
- Network issues
Quick Checks:
# Is server running?
ps aux | grep fluree-db-server
# Is port listening?
netstat -an | grep 8090
# Can you reach it?
curl http://localhost:8090/health
Query Issues
Symptoms:
- Queries return no results
- Queries timeout
- Unexpected results
- Query errors
Quick Checks:
# Enable explain
curl -X POST http://localhost:8090/v1/fluree/explain \
-d '{...}'
# Check server stats
curl http://localhost:8090/v1/fluree/stats
See Debugging Queries.
Transaction Issues
Symptoms:
- Transactions fail
- Validation errors
- Policy denials
- Slow commits
Quick Checks:
# Validate JSON-LD
# Use online validator: json-ld.org/playground
# Check permissions
curl -X POST http://localhost:8090/v1/fluree/update?dryRun=true \
-d '{...}'
# Check server stats
curl http://localhost:8090/v1/fluree/stats
Performance Issues
Symptoms:
- Slow queries
- Slow transactions
- High latency
- Timeouts
Quick Checks:
# Check indexing lag
curl http://localhost:8090/v1/fluree/info/mydb:main | jq '.t - .index.t'
# Check resource usage
curl http://localhost:8090/v1/fluree/stats
# Check active operations
curl http://localhost:8090/v1/fluree/stats
Storage Issues
Symptoms:
- Cannot write data
- Storage errors
- Disk full
- AWS errors
Quick Checks:
# Check disk space
df -h /var/lib/fluree
# Check AWS connectivity
aws s3 ls s3://fluree-prod-data/
# Check server stats
curl http://localhost:8090/v1/fluree/stats
Error Code Reference
See Common Errors for complete error code reference.
Most Common:
LEDGER_NOT_FOUND- Ledger doesn't existPARSE_ERROR- Invalid JSON-LD or SPARQLINVALID_IRI- Malformed IRIQUERY_TIMEOUT- Query took too longPOLICY_DENIED- Not authorized
Diagnostic Tools
Enable Debug Logging
./fluree-db-server --log-level debug
Runtime log-level changes are not currently exposed through the standalone HTTP
API; restart with the desired --log-level or RUST_LOG.
Enable Query Tracing
curl -X POST http://localhost:8090/v1/fluree/query \
-H "X-Fluree-Trace: true" \
-d '{...}'
Enable Policy Tracing
curl -X POST http://localhost:8090/v1/fluree/query \
-H "X-Fluree-Policy-Trace: true" \
-d '{...}'
Get Query Plan
curl -X POST http://localhost:8090/v1/fluree/explain \
-d '{...}'
Getting Help
Diagnostic Information to Collect
When reporting issues, include:
-
Server version:
curl http://localhost:8090/health -
Configuration:
./fluree-db-server --help # Include relevant config values -
Error messages:
- Complete error response
- Relevant log entries
-
Reproduction steps:
- Minimal example to reproduce
- Sample data if needed
-
Environment:
- OS and version
- Storage mode
- Available resources (RAM, disk)
Log Collection
Collect diagnostic logs:
# Last 1000 lines
tail -n 1000 /var/log/fluree/server.log > fluree-diagnostic.log
# Specific time range
grep "2024-01-22T10:" /var/log/fluree/server.log > issue-logs.log
Best Practices
1. Check Logs First
Always check logs before deeper investigation:
tail -f /var/log/fluree/server.log
2. Start with Health Check
curl http://localhost:8090/health
3. Isolate the Issue
Test components independently:
- Can you connect?
- Can you query?
- Can you transact?
4. Use Debug Mode Carefully
Debug logging is verbose:
- Use temporarily
- Disable in production
- May impact performance
5. Test on Development
Reproduce on development environment before investigating production.
6. Keep Logs
Retain logs for historical analysis:
# Logrotate config
/var/log/fluree/*.log {
daily
rotate 30
compress
}
Related Documentation
- Common Errors - Error reference
- Debugging Queries - Query debugging
- API Errors - HTTP error codes
- Operations - Operational guides