fix: emergency automation fix - stop runaway trading loops
- Replace automation service with emergency rate-limited version - Add 5-minute minimum interval between automation starts - Implement forced Chromium process cleanup on stop - Backup broken automation service as .broken file - Emergency service prevents multiple simultaneous automations - Fixed 1400+ Chromium process accumulation issue - Tested and confirmed: rate limiting works, processes stay at 0
This commit is contained in:
69
scripts/managed-dev-server.js
Normal file
69
scripts/managed-dev-server.js
Normal file
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
/**
|
||||
* Managed Development Server
|
||||
*
|
||||
* This script manages the Next.js development server with proper process handling
|
||||
* and pre-compilation of TypeScript modules for immediate responsiveness.
|
||||
*/
|
||||
|
||||
const { spawn } = require('child_process');
|
||||
const path = require('path');
|
||||
|
||||
console.log('🚀 Starting Managed Development Server...');
|
||||
|
||||
// Pre-compile TypeScript modules first
|
||||
console.log('🔄 Step 1: Pre-compiling TypeScript modules...');
|
||||
|
||||
const precompileProcess = spawn('node', ['scripts/precompile-modules.js'], {
|
||||
stdio: 'inherit',
|
||||
cwd: process.cwd()
|
||||
});
|
||||
|
||||
precompileProcess.on('close', (code) => {
|
||||
if (code === 0) {
|
||||
console.log('✅ Pre-compilation completed successfully');
|
||||
startDevServer();
|
||||
} else {
|
||||
console.log('⚠️ Pre-compilation completed with warnings, proceeding...');
|
||||
startDevServer();
|
||||
}
|
||||
});
|
||||
|
||||
precompileProcess.on('error', (error) => {
|
||||
console.log('⚠️ Pre-compilation error:', error.message);
|
||||
console.log('🔄 Proceeding with development server...');
|
||||
startDevServer();
|
||||
});
|
||||
|
||||
function startDevServer() {
|
||||
console.log('🚀 Step 2: Starting Next.js development server...');
|
||||
|
||||
const devServer = spawn('npx', ['next', 'dev', '--port', '3000', '--hostname', '0.0.0.0'], {
|
||||
stdio: 'inherit',
|
||||
cwd: process.cwd()
|
||||
});
|
||||
|
||||
// Handle graceful shutdown
|
||||
process.on('SIGINT', () => {
|
||||
console.log('\n🛑 Received SIGINT, shutting down gracefully...');
|
||||
devServer.kill('SIGTERM');
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
process.on('SIGTERM', () => {
|
||||
console.log('\n🛑 Received SIGTERM, shutting down gracefully...');
|
||||
devServer.kill('SIGTERM');
|
||||
process.exit(0);
|
||||
});
|
||||
|
||||
devServer.on('error', (error) => {
|
||||
console.error('💥 Development server error:', error);
|
||||
process.exit(1);
|
||||
});
|
||||
|
||||
devServer.on('close', (code) => {
|
||||
console.log(`🏁 Development server exited with code ${code}`);
|
||||
process.exit(code);
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user