mindesbunister
a07485c21f
feat: Add comprehensive database save protection system
INVESTIGATION RESULT: No database failure occurred - trade was saved correctly.
However, implemented 5-layer protection against future failures:
1. Persistent File Logger (lib/utils/persistent-logger.ts)
- Survives container restarts
- Logs to /app/logs/errors.log
- Daily rotation, 30-day retention
2. Database Save Retry Logic (lib/database/trades.ts)
- 3 retry attempts with exponential backoff (1s, 2s, 4s)
- Immediate verification query after each create
- Persistent logging of all attempts
3. Orphan Position Detection (lib/startup/init-position-manager.ts)
- Runs on every container startup
- Queries Drift for positions without database records
- Creates retroactive Trade records
- Sends Telegram alerts
- Restores Position Manager monitoring
4. Critical Logging (app/api/trading/execute/route.ts)
- Database failures logged with full trade details
- Stack traces preserved for debugging
5. Infrastructure (logs directory + Docker volume)
- Mounted at /home/icke/traderv4/logs
- Configured in docker-compose.yml
Trade from Nov 21 00:40:14 CET:
- Found in database: cmi82qg590001tn079c3qpw4r
- SHORT SOL-PERP 33.69 → 34.67 SL
- P&L: -9.17
- Closed at 01:17:03 CET (37 minutes duration)
- No database failure occurred
Future Protection:
- Retry logic catches transient failures
- Verification prevents silent failures
- Orphan detection catches anything missed
- Persistent logs enable post-mortem analysis
- System now bulletproof for 16 → 00k journey