From d5bd9d9b593a5adf1d2fa929318303f25a22d86e Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Fri, 7 Mar 2025 15:19:40 -0500 Subject: [PATCH] IO-3170-Enhanced-GetRedisEndpointsFromAWS - Fix to prevent breaking --- server.js | 34 +++++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/server.js b/server.js index ef480a7ea..fda242415 100644 --- a/server.js +++ b/server.js @@ -58,7 +58,7 @@ const SOCKETIO_CORS_ORIGIN = [ "https://beta.test.imex.online", "https://www.beta.test.imex.online", "https://beta.imex.online", - "https://www.beta.imex.online", + "https://www.beta.imex.online", "https://www.test.promanager.web-est.com", "https://test.promanager.web-est.com", "https://www.promanager.web-est.com", @@ -139,15 +139,32 @@ const getRedisNodesFromAWS = async () => { const response = await client.send(command); const cacheClusters = response.CacheClusters; - return cacheClusters.flatMap((cluster) => - cluster.CacheNodes.map((node) => `${node.Endpoint.Address}:${node.Endpoint.Port}`) - ); + // Ensure cacheClusters exists and is an array + if (!cacheClusters || !Array.isArray(cacheClusters) || cacheClusters.length === 0) { + logger.log(`No cache clusters found for cluster id ${process.env.REDIS_CLUSTER_ID}`, "ERROR", "redis", "api"); + return []; + } + + // Process each cluster + return cacheClusters.flatMap((cluster) => { + if (cluster.CacheNodes && Array.isArray(cluster.CacheNodes)) { + // Map nodes to address strings + const addresses = cluster.CacheNodes.map((node) => `${node.Endpoint.Address}:${node.Endpoint.Port}`); + // Debug log node addresses + logger.log(`Cluster node addresses: ${addresses.join(", ")}`, "DEBUG", "redis", "api"); + // Return only those addresses that start with the current cluster id + return addresses.filter((address) => address.startsWith(process.env.REDIS_CLUSTER_ID)); + } + return []; + }); } catch (err) { - logger.log(`Error fetching Redis nodes from AWS: ${err.message}`, "ERROR", "redis", "api"); + logger.log(`Error fetching Redis nodes from AWS:`, "ERROR", "redis", "api", { + message: err?.message, + stack: err?.stack + }); throw err; } }; - /** * Connect to Redis Cluster * @returns {Promise} @@ -360,7 +377,10 @@ async function handleSigterm() { } 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 }); + logger.log("sigterm-api-error", "ERROR", null, null, { + message: error.message, + stack: error.stack + }); } process.exit(0);