fix: Improve automation stop functionality and add debug logging
Stop API improvements: - Added comprehensive debug logging for stop process - Changed session status from INACTIVE to STOPPED for clarity - Better error tracking and result reporting Automation service improvements: - Added isRunning check at start of runAutomationCycle to prevent zombie cycles - Enhanced stop method with better logging and state reset - Proper config cleanup after database update to prevent residual processes - More robust interval clearing and state management These changes should fix the issue where automation appears stopped but continues running in background.
This commit is contained in:
@@ -6,21 +6,27 @@ const prisma = new PrismaClient()
|
|||||||
|
|
||||||
export async function POST() {
|
export async function POST() {
|
||||||
try {
|
try {
|
||||||
|
console.log('🛑 Stop automation request received')
|
||||||
|
|
||||||
// Stop the automation service
|
// Stop the automation service
|
||||||
|
console.log('🛑 Calling automationService.stopAutomation()')
|
||||||
const success = await automationService.stopAutomation()
|
const success = await automationService.stopAutomation()
|
||||||
|
console.log('🛑 Stop automation result:', success)
|
||||||
|
|
||||||
// Also update all active automation sessions in database to INACTIVE
|
// Also update all active automation sessions in database to INACTIVE
|
||||||
await prisma.automationSession.updateMany({
|
console.log('🛑 Updating database sessions to STOPPED')
|
||||||
|
const updateResult = await prisma.automationSession.updateMany({
|
||||||
where: {
|
where: {
|
||||||
status: 'ACTIVE'
|
status: 'ACTIVE'
|
||||||
},
|
},
|
||||||
data: {
|
data: {
|
||||||
status: 'INACTIVE',
|
status: 'STOPPED', // Use STOPPED instead of INACTIVE for clarity
|
||||||
updatedAt: new Date()
|
updatedAt: new Date()
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
console.log('🛑 All automation sessions marked as INACTIVE in database')
|
console.log('🛑 Database update result:', updateResult)
|
||||||
|
console.log('🛑 All automation sessions marked as STOPPED in database')
|
||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
return NextResponse.json({ success: true, message: 'Automation stopped successfully' })
|
return NextResponse.json({ success: true, message: 'Automation stopped successfully' })
|
||||||
|
|||||||
@@ -214,7 +214,11 @@ export class AutomationService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private async runAutomationCycle(): Promise<void> {
|
private async runAutomationCycle(): Promise<void> {
|
||||||
if (!this.config) return
|
// Check if automation should still be running
|
||||||
|
if (!this.isRunning || !this.config) {
|
||||||
|
console.log('🛑 Automation cycle stopped - isRunning:', this.isRunning, 'config:', !!this.config)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
console.log(`🔍 Running automation cycle for ${this.config.symbol} ${this.config.timeframe}`)
|
console.log(`🔍 Running automation cycle for ${this.config.symbol} ${this.config.timeframe}`)
|
||||||
@@ -1310,14 +1314,19 @@ ${validResults.map(r => `• ${r.timeframe}: ${r.analysis?.recommendation} (${r.
|
|||||||
|
|
||||||
async stopAutomation(): Promise<boolean> {
|
async stopAutomation(): Promise<boolean> {
|
||||||
try {
|
try {
|
||||||
|
console.log('🛑 Stopping automation service...')
|
||||||
this.isRunning = false
|
this.isRunning = false
|
||||||
|
|
||||||
// Clear the interval if it exists
|
// Clear the interval if it exists
|
||||||
if (this.intervalId) {
|
if (this.intervalId) {
|
||||||
|
console.log('🛑 Clearing automation interval')
|
||||||
clearInterval(this.intervalId)
|
clearInterval(this.intervalId)
|
||||||
this.intervalId = null
|
this.intervalId = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Reset config to prevent any residual processes
|
||||||
|
this.config = null
|
||||||
|
|
||||||
// Stop price monitoring
|
// Stop price monitoring
|
||||||
try {
|
try {
|
||||||
await priceMonitorService.stopMonitoring()
|
await priceMonitorService.stopMonitoring()
|
||||||
|
|||||||
Reference in New Issue
Block a user