diff --git a/deploy/app.js b/deploy/app.js index 3364e2113a0a746bc60d8aac2d3457c3bff70b5d..a07d5438a6f2ae37ef985fe97e22a0327d6dd322 100644 --- a/deploy/app.js +++ b/deploy/app.js @@ -7,7 +7,7 @@ const MemoryStore = require('memorystore')(session) const crypto = require('crypto') const cookieParser = require('cookie-parser') -const { router: regionalFeaturesRouter, regionalFeaturesIsReady } = require('./regionalFeatures') +const { router: regionalFeaturesRouter, regionalFeatureIsReady } = require('./regionalFeatures') const LOCAL_CDN_FLAG = !!process.env.PRECOMPUTED_SERVER @@ -166,7 +166,7 @@ app.use('/logo', require('./logo')) app.get('/ready', async (req, res) => { const authIsReady = await authReady() - const regionalFeatureReady = await regionalFeaturesIsReady() + const regionalFeatureReady = await regionalFeatureIsReady() const allReady = [ authIsReady, regionalFeatureReady, @@ -176,7 +176,7 @@ app.get('/ready', async (req, res) => { */ ].every(f => !!f) if (allReady) return res.status(200).end() - else return res.status(400).end() + else return res.status(500).end() }) /** diff --git a/deploy/regionalFeatures/index.js b/deploy/regionalFeatures/index.js index e05545ab5499d23d8c6e60205c35b26b92a685ac..d505c42826c3007ee000cdfaed36421e03181263 100644 --- a/deploy/regionalFeatures/index.js +++ b/deploy/regionalFeatures/index.js @@ -18,12 +18,15 @@ const regionIdToDataIdMap = new Map() const datasetIdToDataMap = new Map() const datasetIdDetailMap = new Map() +let isReady = false + const ITERABLE_KEY_SYMBOL = Symbol('ITERABLE_KEY_SYMBOL') /** * this pattern allows all of the special data to be fetched in parallel * async await would mean it is fetched one at a time */ + const init = Promise.all( arrayToFetch.map(url => new Promise((rs, rj) => { @@ -70,7 +73,7 @@ const init = Promise.all( }) }) ) -) +).then(() => isReady = true) const getFeatureMiddleware = (req, res, next) => { const { featureFullId } = req.params @@ -213,10 +216,7 @@ router.get( sendFeatureDataResponse, ) -const regionalFeatureIsReady = () => Promise.race([ - init.then(() => true), - new Promise(rs => setTimeout(() => rs(false), 500)) -]) +const regionalFeatureIsReady = async () => isReady module.exports = { router,