From 73ddb5fa61252732a45514c399c2d38df428c37d Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 13 Jun 2022 12:32:24 +0300 Subject: [PATCH 1/6] dump action for inspection --- src/shared/reducers/contentful/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/reducers/contentful/index.js b/src/shared/reducers/contentful/index.js index 6619d21d55..3d1cceb266 100644 --- a/src/shared/reducers/contentful/index.js +++ b/src/shared/reducers/contentful/index.js @@ -61,7 +61,7 @@ function create(init) { const environment = _.get(payload, 'environment') || config.CONTENTFUL.DEFAULT_ENVIRONMENT; const res = _.get(newState, `${spaceName}.${environment}`); if (error || !res) { - logger.log('CMS-related error', error, res, `${spaceName}.${environment}`, newState, payload, config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT); + logger.log('CMS-related error', error, action, config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT, res, newState); return state; } const st = state[spaceName][environment]; From 38c0dc887bbec1334f06fab21b404bcea8c3a633 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 13 Jun 2022 12:32:31 +0300 Subject: [PATCH 2/6] ci: on test --- .circleci/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 024fd38194..5b8c04d12e 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -356,7 +356,7 @@ workflows: filters: branches: only: - - circleci-fix + - debug-CMS-error # This is alternate dev env for parallel testing - "build-qa": context : org-global From e03855e6a7aab2ab54481870439661b3f4b29f82 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 13 Jun 2022 12:59:57 +0300 Subject: [PATCH 3/6] JSON.stringify CMS errors --- src/shared/reducers/contentful/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/reducers/contentful/index.js b/src/shared/reducers/contentful/index.js index 3d1cceb266..860bd972bb 100644 --- a/src/shared/reducers/contentful/index.js +++ b/src/shared/reducers/contentful/index.js @@ -61,7 +61,7 @@ function create(init) { const environment = _.get(payload, 'environment') || config.CONTENTFUL.DEFAULT_ENVIRONMENT; const res = _.get(newState, `${spaceName}.${environment}`); if (error || !res) { - logger.log('CMS-related error', error, action, config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT, res, newState); + logger.log('CMS-related error', error, JSON.stringify(action), config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT, res, newState); return state; } const st = state[spaceName][environment]; From 081bfa6d69919c4456ddb185d3ead0c38273add2 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 13 Jun 2022 13:02:50 +0300 Subject: [PATCH 4/6] JSON.stringify all objects for error dump --- src/shared/reducers/contentful/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/shared/reducers/contentful/index.js b/src/shared/reducers/contentful/index.js index 860bd972bb..6e212ba353 100644 --- a/src/shared/reducers/contentful/index.js +++ b/src/shared/reducers/contentful/index.js @@ -61,7 +61,7 @@ function create(init) { const environment = _.get(payload, 'environment') || config.CONTENTFUL.DEFAULT_ENVIRONMENT; const res = _.get(newState, `${spaceName}.${environment}`); if (error || !res) { - logger.log('CMS-related error', error, JSON.stringify(action), config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT, res, newState); + logger.log('CMS-related error', error, JSON.stringify(action), config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT, JSON.stringify(res), JSON.stringify(newState)); return state; } const st = state[spaceName][environment]; From 342a01fd0e0afc4649e85979b051e84de94b817f Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 13 Jun 2022 13:35:12 +0300 Subject: [PATCH 5/6] Fix CMS-related error for NotFound entries --- src/shared/reducers/contentful/index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/shared/reducers/contentful/index.js b/src/shared/reducers/contentful/index.js index 6e212ba353..ced719ba4b 100644 --- a/src/shared/reducers/contentful/index.js +++ b/src/shared/reducers/contentful/index.js @@ -60,8 +60,8 @@ function create(init) { const spaceName = _.get(payload, 'spaceName') || config.CONTENTFUL.DEFAULT_SPACE_NAME; const environment = _.get(payload, 'environment') || config.CONTENTFUL.DEFAULT_ENVIRONMENT; const res = _.get(newState, `${spaceName}.${environment}`); - if (error || !res) { - logger.log('CMS-related error', error, JSON.stringify(action), config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT, JSON.stringify(res), JSON.stringify(newState)); + if ((error && payload && payload.sys && payload.sys.id !== 'NotFound') || !res) { + logger.log('CMS-related error', JSON.stringify(action), config.CONTENTFUL.DEFAULT_SPACE_NAME, config.CONTENTFUL.DEFAULT_ENVIRONMENT, JSON.stringify(res), JSON.stringify(newState)); return state; } const st = state[spaceName][environment]; From 9c93b21713680ff72fe3697392096cf157c32ff3 Mon Sep 17 00:00:00 2001 From: Kiril Kartunov Date: Mon, 13 Jun 2022 15:51:44 +0300 Subject: [PATCH 6/6] catch unhandled exceptions --- src/shared/actions/contentful.js | 46 +++++++++++++++++++------------- 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/src/shared/actions/contentful.js b/src/shared/actions/contentful.js index f89b81e5a7..28dd6c0f3e 100644 --- a/src/shared/actions/contentful.js +++ b/src/shared/actions/contentful.js @@ -3,7 +3,7 @@ import { getService } from 'services/contentful'; import { config, redux } from 'topcoder-react-utils'; import { removeTrailingSlash } from 'utils/url'; import { menuItemBuilder, target as urlTarget } from 'utils/contentful'; -import { services } from 'topcoder-react-lib'; +import { services, logger } from 'topcoder-react-lib'; const ERRMSG_UNKNOWN_TARGET = 'Unknown action target'; @@ -91,15 +91,19 @@ async function getContentDone(operationId, contentId, target, preview, spaceName environment, }); let content; - switch (target) { - case TARGETS.ASSETS: - content = await service.getAsset(contentId); - break; - case TARGETS.ENTRIES: - content = await service.getEntry(contentId); - break; - default: - throw new Error(ERRMSG_UNKNOWN_TARGET); + try { + switch (target) { + case TARGETS.ASSETS: + content = await service.getAsset(contentId); + break; + case TARGETS.ENTRIES: + content = await service.getEntry(contentId); + break; + default: + throw new Error(ERRMSG_UNKNOWN_TARGET); + } + } catch (e) { + logger.error('getContentDone error', e); } return { @@ -141,15 +145,19 @@ async function queryContentDone(operationId, queryId, target, environment, }); let data; - switch (target) { - case TARGETS.ASSETS: - data = await service.queryAssets(query); - break; - case TARGETS.ENTRIES: - data = await service.queryEntries(query); - break; - default: - throw new Error(ERRMSG_UNKNOWN_TARGET); + try { + switch (target) { + case TARGETS.ASSETS: + data = await service.queryAssets(query); + break; + case TARGETS.ENTRIES: + data = await service.queryEntries(query); + break; + default: + throw new Error(ERRMSG_UNKNOWN_TARGET); + } + } catch (e) { + logger.error('queryContentDone error', e); } return {