From 206f647c05de4672b717ec8f864e142bf9191b06 Mon Sep 17 00:00:00 2001 From: sballesteros Date: Fri, 1 Nov 2019 11:46:21 -0700 Subject: [PATCH] retry plugin --- .gitignore | 3 +++ deploy-app.sh | 2 +- deploy-service.sh | 2 ++ src/db/db.js | 14 +++++++++++++- src/service.js | 20 +++++++++++--------- 5 files changed, 30 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 4bb7d56..e3f5723 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,6 @@ extension/popup.js.map deploy-env.private.sh env.private.sh *.private.sh + +app.zip +service.zip diff --git a/deploy-app.sh b/deploy-app.sh index 9a22c74..02f7260 100755 --- a/deploy-app.sh +++ b/deploy-app.sh @@ -2,7 +2,7 @@ ## Deploy to https://rapid-prereview.azurewebsites.net/ -./deploy-env.private.sh +./deploy-env.private.sh app ## See https://docs.microsoft.com/en-us/azure/app-service/deploy-zip diff --git a/deploy-service.sh b/deploy-service.sh index 7fb10ed..2117a59 100755 --- a/deploy-service.sh +++ b/deploy-service.sh @@ -2,6 +2,8 @@ ## https://rapid-prereview-service.azurewebsites.net/ +./deploy-env.private.sh service + ## See https://docs.microsoft.com/en-us/azure/app-service/deploy-zip zip -r service.zip *.json *.js dist/* src/* public/* views/* scripts/* test/* diff --git a/src/db/db.js b/src/db/db.js index 56ddcf6..bab253c 100644 --- a/src/db/db.js +++ b/src/db/db.js @@ -46,7 +46,19 @@ export default class DB { const cloudant = new Cloudant({ username, password, - url: `${protocol}//${host}:${port}` + url: `${protocol}//${host}:${port}`, + maxAttempt: 5, + plugins: [ + 'cookieauth', + { + retry: { + retryErrors: true, + retryStatusCodes: [429, 500, 501, 502, 503, 504], + retryDelayMultiplier: 2, + retryInitialDelayMsecs: 500 + } + } + ] }); this.cloudant = cloudant; diff --git a/src/service.js b/src/service.js index ce1272e..bbf8bd1 100644 --- a/src/service.js +++ b/src/service.js @@ -1,7 +1,7 @@ import http from 'http'; import express from 'express'; -import DB from '../src/db/db'; -import Feed from '../src/db/feed'; +import DB from './db/db'; +import Feed from './db/feed'; import { setIntervalAsync, clearIntervalAsync @@ -9,8 +9,9 @@ import { import { PRODUCTION_DOMAIN } from './constants'; let lastSeq = null; -let lastErr = null; +let lastChangeErr = null; let lastDateScoreUpdated = null; +let lastScoreErr = null; const config = { appRootUrl: PRODUCTION_DOMAIN, @@ -22,6 +23,7 @@ const db = new DB(config); const feed = new Feed(db); feed.resume(); feed.on('error', err => { + lastChangeErr = err; console.error(err); }); feed.on('start', seq => { @@ -30,9 +32,6 @@ feed.on('start', seq => { feed.on('sync', seq => { lastSeq = seq; }); -feed.on('error', err => { - lastErr = err; -}); const intervalId = setIntervalAsync( () => { @@ -40,18 +39,21 @@ const intervalId = setIntervalAsync( return db.updateScores(); }, 5 * 60 * 1000, - err => console.error(err) + err => { + lastScoreErr = err; + console.error(err); + } ); const app = express(); app.get('/', (req, res, next) => { - res.json({ lastSeq, lastErr, lastDateScoreUpdated }); + res.json({ lastSeq, lastChangeErr, lastScoreErr, lastDateScoreUpdated }); }); const server = http.createServer(app); -const port = process.env.PORT || 3000; +const port = process.env.PORT || 3001; server.listen(port, () => { console.log(`server listenning on port ${port}`); });