From 480838b1dcdcff4b58caeb3f000f8dd3c8cf37ff Mon Sep 17 00:00:00 2001 From: Dave Richer Date: Fri, 7 Mar 2025 15:10:06 -0500 Subject: [PATCH] IO-3166-Global-Notifications-Part-2 - Improved GetRedisNodesFromAWS --- server.js | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/server.js b/server.js index 4047333d3..a733a13ab 100644 --- a/server.js +++ b/server.js @@ -141,9 +141,24 @@ 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:`, "ERROR", "redis", "api", { message: err?.message,