IO-2959 Remove debug for crisp status and add sig term handler.
This commit is contained in:
41
server.js
41
server.js
@@ -24,6 +24,8 @@ const { ElastiCacheClient, DescribeCacheClustersCommand } = require("@aws-sdk/cl
|
|||||||
const { InstanceRegion } = require("./server/utils/instanceMgr");
|
const { InstanceRegion } = require("./server/utils/instanceMgr");
|
||||||
const StartStatusReporter = require("./server/utils/statusReporter");
|
const StartStatusReporter = require("./server/utils/statusReporter");
|
||||||
|
|
||||||
|
const cleanupTasks = [];
|
||||||
|
let isShuttingDown = false;
|
||||||
const CLUSTER_RETRY_BASE_DELAY = 100;
|
const CLUSTER_RETRY_BASE_DELAY = 100;
|
||||||
const CLUSTER_RETRY_MAX_DELAY = 5000;
|
const CLUSTER_RETRY_MAX_DELAY = 5000;
|
||||||
const CLUSTER_RETRY_JITTER = 100;
|
const CLUSTER_RETRY_JITTER = 100;
|
||||||
@@ -298,7 +300,14 @@ const main = async () => {
|
|||||||
applyRoutes({ app });
|
applyRoutes({ app });
|
||||||
redisSocketEvents({ io: ioRedis, redisHelpers, ioHelpers, logger });
|
redisSocketEvents({ io: ioRedis, redisHelpers, ioHelpers, logger });
|
||||||
|
|
||||||
StartStatusReporter();
|
const StatusReporter = StartStatusReporter();
|
||||||
|
registerCleanupTask(async () => {
|
||||||
|
StatusReporter.end();
|
||||||
|
});
|
||||||
|
|
||||||
|
// Add SIGTERM signal handler
|
||||||
|
process.on("SIGTERM", handleSigterm);
|
||||||
|
process.on("SIGINT", handleSigterm); // Optional: Handle Ctrl+C
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await server.listen(port);
|
await server.listen(port);
|
||||||
@@ -317,3 +326,33 @@ main().catch((error) => {
|
|||||||
// Note: If we want the app to crash on all uncaught async operations, we would
|
// Note: If we want the app to crash on all uncaught async operations, we would
|
||||||
// need to put a `process.exit(1);` here
|
// need to put a `process.exit(1);` here
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Register a cleanup task
|
||||||
|
function registerCleanupTask(task) {
|
||||||
|
cleanupTasks.push(task);
|
||||||
|
}
|
||||||
|
|
||||||
|
// SIGTERM handler
|
||||||
|
async function handleSigterm() {
|
||||||
|
if (isShuttingDown) {
|
||||||
|
logger.log("sigterm-api", "WARN", null, null, { message: "Shutdown already in progress, ignoring signal." });
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
isShuttingDown = true;
|
||||||
|
|
||||||
|
logger.log("sigterm-api", "WARN", null, null, { message: "SIGTERM Received. Starting graceful shutdown." });
|
||||||
|
|
||||||
|
try {
|
||||||
|
for (const task of cleanupTasks) {
|
||||||
|
logger.log("sigterm-api", "WARN", null, null, { message: `Running cleanup task: ${task.name}` });
|
||||||
|
|
||||||
|
await task();
|
||||||
|
}
|
||||||
|
logger.log("sigterm-api", "WARN", null, null, { message: `All cleanup tasks completed.` });
|
||||||
|
} catch (error) {
|
||||||
|
logger.log("sigterm-api-error", "ERROR", null, null, { message: error.message, stack: error.stack });
|
||||||
|
}
|
||||||
|
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ const InstanceManager = require("../utils/instanceMgr").default;
|
|||||||
function StartStatusReporter() {
|
function StartStatusReporter() {
|
||||||
//For ImEX Online.
|
//For ImEX Online.
|
||||||
|
|
||||||
InstanceManager({
|
return InstanceManager({
|
||||||
executeFunction: true,
|
executeFunction: true,
|
||||||
args: [],
|
args: [],
|
||||||
imex: () => {
|
imex: () => {
|
||||||
@@ -31,14 +31,14 @@ function StartStatusReporter() {
|
|||||||
service_id: process.env.CRISP_SERVICE_IDENTIFIER, // Service ID containing the parent Node for Replica (given by Crisp)
|
service_id: process.env.CRISP_SERVICE_IDENTIFIER, // Service ID containing the parent Node for Replica (given by Crisp)
|
||||||
node_id: process.env.CRISP_NODE_IDENTIFIER, // Node ID containing Replica (given by Crisp)
|
node_id: process.env.CRISP_NODE_IDENTIFIER, // Node ID containing Replica (given by Crisp)
|
||||||
replica_id: getHostNameOrIP(), // Unique Replica ID for instance (ie. your IP on the LAN)
|
replica_id: getHostNameOrIP(), // Unique Replica ID for instance (ie. your IP on the LAN)
|
||||||
interval: 30, // Reporting interval (in seconds; defaults to 30 seconds if not set)
|
interval: 30 // Reporting interval (in seconds; defaults to 30 seconds if not set)
|
||||||
|
|
||||||
console: {
|
// console: {
|
||||||
debug: (log_message, data) => logger.log("crisp-status-update", "DEBUG", null, null, { log_message, data }),
|
// debug: (log_message, data) => logger.log("crisp-status-update", "DEBUG", null, null, { log_message, data }),
|
||||||
log: (log_message, data) => logger.log("crisp-status-update", "DEBUG", null, null, { log_message, data }),
|
// log: (log_message, data) => logger.log("crisp-status-update", "DEBUG", null, null, { log_message, data }),
|
||||||
warn: (log_message, data) => logger.log("crisp-status-update", "WARN", null, null, { log_message, data }),
|
// warn: (log_message, data) => logger.log("crisp-status-update", "WARN", null, null, { log_message, data }),
|
||||||
error: (log_message, data) => logger.log("crisp-status-update", "ERROR", null, null, { log_message, data })
|
// error: (log_message, data) => logger.log("crisp-status-update", "ERROR", null, null, { log_message, data })
|
||||||
} // Console instance if you need to debug issues,
|
// } // Console instance if you need to debug issues,
|
||||||
});
|
});
|
||||||
|
|
||||||
return crispStatusReporter;
|
return crispStatusReporter;
|
||||||
|
|||||||
Reference in New Issue
Block a user