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...')
|
logger.log('🚀 Initializing Position Manager on startup...')
|
||||||
|
|
||||||
try {
|
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')
|
const { validateAllOpenTrades } = await import('../database/sync-validator')
|
||||||
logger.log('🔍 Running database sync validation before Position Manager init...')
|
logger.log('🔍 Running database sync validation before Position Manager init...')
|
||||||
const validationResult = await validateAllOpenTrades()
|
const validationResult = await validateAllOpenTrades()
|
||||||
@@ -52,24 +74,6 @@ export async function initializePositionManagerOnStartup() {
|
|||||||
if (status.activeTradesCount > 0) {
|
if (status.activeTradesCount > 0) {
|
||||||
logger.log(`📊 Monitoring: ${status.symbols.join(', ')}`)
|
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) {
|
} catch (error) {
|
||||||
console.error('❌ Failed to initialize Position Manager on startup:', error)
|
console.error('❌ Failed to initialize Position Manager on startup:', error)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user