From 05444f48d4f86f4e193ad8fa371116e40985cf8b Mon Sep 17 00:00:00 2001 From: igoroctaviano Date: Thu, 13 May 2021 09:30:52 -0300 Subject: [PATCH] Improve docs remove env variables --- .webpack/webpack.base.js | 6 ---- .../core/src/utils/xhrRetryRequestHook.js | 29 +++++++++++-------- 2 files changed, 17 insertions(+), 18 deletions(-) diff --git a/.webpack/webpack.base.js b/.webpack/webpack.base.js index 59fe02ddf..ea5c83aa4 100644 --- a/.webpack/webpack.base.js +++ b/.webpack/webpack.base.js @@ -85,12 +85,6 @@ module.exports = (env, argv, { SRC_DIR, DIST_DIR }) => { 'process.env.USE_LOCIZE': JSON.stringify(process.env.USE_LOCIZE || ''), 'process.env.LOCIZE_PROJECTID': JSON.stringify(process.env.LOCIZE_PROJECTID || ''), 'process.env.LOCIZE_API_KEY': JSON.stringify(process.env.LOCIZE_API_KEY || ''), - /** DICOMWebClient Retry options */ - 'process.env.DICOMWEB_CLIENT_RETRY_RETRIES': JSON.stringify(process.env.DICOMWEB_CLIENT_RETRY_RETRIES || 5), - 'process.env.DICOMWEB_CLIENT_RETRY_FACTOR': JSON.stringify(process.env.DICOMWEB_CLIENT_RETRY_FACTOR || 3), - 'process.env.DICOMWEB_CLIENT_RETRY_MIN_TIMEOUT': JSON.stringify(process.env.DICOMWEB_CLIENT_RETRY_MIN_TIMEOUT || 1 * 1000), - 'process.env.DICOMWEB_CLIENT_RETRY_MAX_TIMEOUT': JSON.stringify(process.env.DICOMWEB_CLIENT_RETRY_MAX_TIMEOUT || 60 * 1000), - 'process.env.DICOMWEB_CLIENT_RETRY_RANDOMIZE': JSON.stringify(process.env.DICOMWEB_CLIENT_RETRY_RANDOMIZE || true), }), ], // Fix: https://github.com/webpack-contrib/css-loader/issues/447#issuecomment-285598881 diff --git a/platform/core/src/utils/xhrRetryRequestHook.js b/platform/core/src/utils/xhrRetryRequestHook.js index 4b109621e..3e7f09da2 100644 --- a/platform/core/src/utils/xhrRetryRequestHook.js +++ b/platform/core/src/utils/xhrRetryRequestHook.js @@ -1,11 +1,12 @@ import retry from 'retry'; const defaultRetryOptions = { - retries: process.env.DICOMWEB_CLIENT_RETRY_RETRIES || 5, - factor: process.env.DICOMWEB_CLIENT_RETRY_FACTOR || 3, - minTimeout: process.env.DICOMWEB_CLIENT_RETRY_MIN_TIMEOUT || 1 * 1000, - maxTimeout: process.env.DICOMWEB_CLIENT_RETRY_MAX_TIMEOUT || 60 * 1000, - randomize: process.env.DICOMWEB_CLIENT_RETRY_RANDOMIZE || true, + retries: 5, + factor: 3, + minTimeout: 1 * 1000, + maxTimeout: 60 * 1000, + randomize: true, + retryableStatusCodes: [429, 500], }; let retryOptions = { ...defaultRetryOptions }; @@ -28,9 +29,11 @@ const xhrRetryRequestHook = (request, metadata) => { operation.attempt(function operationAttempt(currentAttempt) { const originalOnReadyStateChange = request.onreadystatechange; + /** Overriding/extending XHR function */ request.onreadystatechange = function onReadyStateChange() { originalOnReadyStateChange.call(request); - if (request.status === 429 || request.status >= 500) { + + if (retryOptions.retryableStatusCodes.includes(request.status)) { const errorMessage = `Attempt to request ${url} failed.`; const attemptFailedError = new Error(errorMessage); operation.retry(attemptFailedError); @@ -43,6 +46,7 @@ const xhrRetryRequestHook = (request, metadata) => { }); } + /** Overriding/extending XHR function */ const originalRequestSend = request.send; request.send = faultTolerantRequestSend; @@ -60,12 +64,13 @@ const xhrRetryRequestHook = (request, metadata) => { * maxTimeout: 60 * 1000 * randomize: true * - * @param {*} options - * @param {*} options.retires number of retries - * @param {*} options.factor factor - * @param {*} options.minTimeout the min timeout - * @param {*} options.maxTimeout the max timeout - * @param {*} options.randomize randomize + * @param {object} options + * @param {number} options.retires number of retries + * @param {number} options.factor factor + * @param {number} options.minTimeout the min timeout + * @param {number} options.maxTimeout the max timeout + * @param {boolean} options.randomize randomize + * @param {array} options.retryableStatusCodes status codes that can trigger retry * @returns {function} the configured retry request function */ export const getXHRRetryRequestHook = (options = {}) => {