From 0d93f3e06018e7aad702e8759fdbc8bf4bcd31aa Mon Sep 17 00:00:00 2001 From: Xiao Gui <xgui3783@gmail.com> Date: Thu, 5 Nov 2020 19:49:49 +0100 Subject: [PATCH] bugfix: ready probe --- deploy/app.js | 6 +++--- deploy/regionalFeatures/index.js | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/deploy/app.js b/deploy/app.js index 3364e2113..a07d5438a 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 e05545ab5..d505c4282 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, -- GitLab