From 0f208f3055bf1e36f521fb9d8ee0d82ba3f82d93 Mon Sep 17 00:00:00 2001 From: Rakib Ansary Date: Fri, 29 Apr 2022 17:16:34 +0600 Subject: [PATCH 1/3] fix: groups, terms association lost * if v4 challenge api returns 404 immediately after creation of the challenge when replaying the event * groups and other data are lost; resolve this problem by adding those data without attempting to get * challenge details from v4 as required info to make those associations is already present --- .circleci/config.yml | 1 + src/services/ProcessorService.js | 37 ++++++++++++++++++++++++-------- 2 files changed, 29 insertions(+), 9 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 3a78bbe..e788a67 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -70,6 +70,7 @@ workflows: branches: only: - develop + - fix/association-loss # Production builds are exectuted only on tagged commits to the # master branch. diff --git a/src/services/ProcessorService.js b/src/services/ProcessorService.js index fec1a55..df8fd75 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -199,10 +199,11 @@ async function getV5Terms (v5TermsId, m2mToken) { */ async function associateChallengeGroups (v5groups, legacyId, m2mToken) { const { groupsToBeAdded, groupsToBeDeleted } = await getGroups(v5groups, legacyId, m2mToken) - + logger.info(`Groups to add to challenge: ${legacyId}: ${groupsToBeAdded}`) for (const group of groupsToBeAdded) { await groupService.addGroupToChallenge(legacyId, group) } + logger.info(`Groups to remove from challenge: ${legacyId}: ${groupsToBeDeleted}`) for (const group of groupsToBeDeleted) { await groupService.removeGroupFromChallenge(legacyId, group) } @@ -224,10 +225,10 @@ async function associateChallengeTerms (v5Terms, legacyChallengeId, createdBy, u const standardTerms = _.find(v5Terms, e => e.id === config.V5_TERMS_STANDARD_ID) const legacyStandardTerms = _.find(legacyTermsArray, e => _.toNumber(e.id) === _.toNumber(config.LEGACY_TERMS_STANDARD_ID)) - logger.debug(`NDA: ${config.V5_TERMS_NDA_ID} - ${JSON.stringify(nda)}`) - logger.debug(`Standard Terms: ${config.V5_TERMS_STANDARD_ID} - ${JSON.stringify(standardTerms)}`) - logger.debug(`Legacy NDA: ${JSON.stringify(legacyNDA)}`) - logger.debug(`Legacy Standard Terms: ${JSON.stringify(legacyStandardTerms)}`) + // logger.debug(`NDA: ${config.V5_TERMS_NDA_ID} - ${JSON.stringify(nda)}`) + // logger.debug(`Standard Terms: ${config.V5_TERMS_STANDARD_ID} - ${JSON.stringify(standardTerms)}`) + // logger.debug(`Legacy NDA: ${JSON.stringify(legacyNDA)}`) + // logger.debug(`Legacy Standard Terms: ${JSON.stringify(legacyStandardTerms)}`) const m2mToken = await helper.getM2MToken() if (standardTerms && standardTerms.id && !legacyStandardTerms) { @@ -646,13 +647,28 @@ async function processMessage (message) { const saveDraftContestDTO = await parsePayload(message.payload, m2mToken) + let setAssociations = true + if (!legacyId) { logger.debug('Legacy ID does not exist. Will create...') legacyId = await createChallenge(saveDraftContestDTO, challengeUuid, createdByUserId, message.payload.legacy, m2mToken) + await recreatePhases(legacyId, message.payload.phases, updatedByUserId) + if (_.get(message, 'payload.legacy.selfService')) { await disableTimelineNotifications(legacyId, createdByUserId) // disable } + + logger.info(`Update Member payments for challenge ${legacyId}`) + await updateMemberPayments(legacyId, message.payload.prizeSets, updatedByUserId) + logger.info(`Associate groups for challenge ${legacyId}`) + await associateChallengeGroups(message.payload.groups, legacyId, m2mToken) + logger.info(`Associate challenge terms for challenge ${legacyId}`) + await associateChallengeTerms(message.payload.terms, legacyId, createdByUserId, updatedByUserId) + logger.info(`set copilot for challenge ${legacyId}`) + await setCopilotPayment(challengeUuid, legacyId, _.get(message, 'payload.prizeSets'), createdByUserId, updatedByUserId, m2mToken) + + setAssociations = false } let challenge @@ -678,10 +694,13 @@ async function processMessage (message) { } } - await updateMemberPayments(legacyId, message.payload.prizeSets, updatedByUserId) - await associateChallengeGroups(message.payload.groups, legacyId, m2mToken) - await associateChallengeTerms(message.payload.terms, legacyId, createdByUserId, updatedByUserId) - await setCopilotPayment(challengeUuid, legacyId, _.get(message, 'payload.prizeSets'), createdByUserId, updatedByUserId, m2mToken) + if (setAssociations) { + logger.info(`Set Associations for challenge ${legacyId}`) + await updateMemberPayments(legacyId, message.payload.prizeSets, updatedByUserId) + await associateChallengeGroups(message.payload.groups, legacyId, m2mToken) + await associateChallengeTerms(message.payload.terms, legacyId, createdByUserId, updatedByUserId) + await setCopilotPayment(challengeUuid, legacyId, _.get(message, 'payload.prizeSets'), createdByUserId, updatedByUserId, m2mToken) + } if (message.payload.status && challenge) { // logger.info(`The status has changed from ${challenge.currentStatus} to ${message.payload.status}`) From 1d794991494f7ee387ad6cbf97fb7ed679a6da97 Mon Sep 17 00:00:00 2001 From: roger Date: Fri, 29 Apr 2022 22:52:19 +0800 Subject: [PATCH 2/3] groups array logs into json string --- src/services/ProcessorService.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/services/ProcessorService.js b/src/services/ProcessorService.js index df8fd75..0281c2e 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -199,11 +199,11 @@ async function getV5Terms (v5TermsId, m2mToken) { */ async function associateChallengeGroups (v5groups, legacyId, m2mToken) { const { groupsToBeAdded, groupsToBeDeleted } = await getGroups(v5groups, legacyId, m2mToken) - logger.info(`Groups to add to challenge: ${legacyId}: ${groupsToBeAdded}`) + logger.info(`Groups to add to challenge: ${legacyId}: ${JSON.stringify(groupsToBeAdded)}`) for (const group of groupsToBeAdded) { await groupService.addGroupToChallenge(legacyId, group) } - logger.info(`Groups to remove from challenge: ${legacyId}: ${groupsToBeDeleted}`) + logger.info(`Groups to remove from challenge: ${legacyId}: ${JSON.stringify(groupsToBeDeleted)}`) for (const group of groupsToBeDeleted) { await groupService.removeGroupFromChallenge(legacyId, group) } From 3c1d8f36e064e7f4df2252e348019f6abd9e5c48 Mon Sep 17 00:00:00 2001 From: LieutenantRoger Date: Fri, 29 Apr 2022 23:36:01 +0800 Subject: [PATCH 3/3] reset ci --- .circleci/config.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index e788a67..3a78bbe 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -70,7 +70,6 @@ workflows: branches: only: - develop - - fix/association-loss # Production builds are exectuted only on tagged commits to the # master branch.