critical: Fix service initialization - start services BEFORE validation
CRITICAL BUG DISCOVERED (Dec 5, 2025): - validateOpenTrades() returns early at line 111 when no trades found - Service initialization (lines 59-72) happened AFTER validation - Result: When no open trades, services NEVER started - Impact: Stop hunt tracker, smart validation, blocked signal tracking all inactive ROOT CAUSE: - Line 43: await validateOpenTrades() - Line 111: if (openTrades.length === 0) return // EXIT EARLY - Lines 59-72: Service startup code (NEVER REACHED) FIX: - Moved service initialization BEFORE validation - Services now start regardless of open trades count - Order: Start services → Clean DB → Validate → Init Position Manager SERVICES NOW START: - Data cleanup (4-week retention) - Blocked signal price tracker - Stop hunt revenge tracker - Smart entry validation system This explains why: - Line 111 log appeared (validation ran, returned early) - Line 29 log appeared (function started) - Lines 59-72 logs NEVER appeared (code never reached) Git commit SHA: TBD Deployment: Requires rebuild + restart
This commit is contained in:
@@ -29,7 +29,29 @@ export async function initializePositionManagerOnStartup() {
|
||||
logger.log('🚀 Initializing Position Manager on startup...')
|
||||
|
||||
try {
|
||||
// CRITICAL: Run database sync validator FIRST to clean up duplicates
|
||||
// CRITICAL (Dec 5, 2025): Start services FIRST, before validation
|
||||
// Bug fix: validateOpenTrades() returns early if no trades, skipping services
|
||||
// Services must run regardless of open trades count
|
||||
|
||||
// CRITICAL (Dec 2, 2025): Start data cleanup service for 4-week retention
|
||||
// User directive: "we want to store the data for 4 weeks"
|
||||
// Runs daily at 3 AM to delete MarketData records older than 28 days
|
||||
logger.log('🧹 Starting data cleanup service...')
|
||||
startDataCleanup()
|
||||
|
||||
// Start blocked signal price tracking
|
||||
logger.log('🔬 Starting blocked signal price tracker...')
|
||||
startBlockedSignalTracking()
|
||||
|
||||
// Start stop hunt revenge tracker
|
||||
logger.log('🎯 Starting stop hunt revenge tracker...')
|
||||
await startStopHuntTracking()
|
||||
|
||||
// Start smart entry validation queue (Nov 30, 2025)
|
||||
logger.log('🧠 Starting smart entry validation system...')
|
||||
await startSmartValidation()
|
||||
|
||||
// CRITICAL: Run database sync validator to clean up duplicates
|
||||
const { validateAllOpenTrades } = await import('../database/sync-validator')
|
||||
logger.log('🔍 Running database sync validation before Position Manager init...')
|
||||
const validationResult = await validateAllOpenTrades()
|
||||
@@ -52,24 +74,6 @@ export async function initializePositionManagerOnStartup() {
|
||||
if (status.activeTradesCount > 0) {
|
||||
logger.log(`📊 Monitoring: ${status.symbols.join(', ')}`)
|
||||
}
|
||||
|
||||
// CRITICAL (Dec 2, 2025): Start data cleanup service for 4-week retention
|
||||
// User directive: "we want to store the data for 4 weeks"
|
||||
// Runs daily at 3 AM to delete MarketData records older than 28 days
|
||||
logger.log('🧹 Starting data cleanup service...')
|
||||
startDataCleanup()
|
||||
|
||||
// Start blocked signal price tracking
|
||||
logger.log('🔬 Starting blocked signal price tracker...')
|
||||
startBlockedSignalTracking()
|
||||
|
||||
// Start stop hunt revenge tracker
|
||||
logger.log('🎯 Starting stop hunt revenge tracker...')
|
||||
await startStopHuntTracking()
|
||||
|
||||
// Start smart entry validation queue (Nov 30, 2025)
|
||||
logger.log('🧠 Starting smart entry validation system...')
|
||||
await startSmartValidation()
|
||||
} catch (error) {
|
||||
console.error('❌ Failed to initialize Position Manager on startup:', error)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user