From 5ee1877119b7dba1856f534b6034961153dbc6b4 Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Tue, 16 Feb 2021 20:29:48 +0200 Subject: [PATCH 1/5] fix phase issues --- src/services/ProcessorService.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/ProcessorService.js b/src/services/ProcessorService.js index 14dfe31..ea5b118 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -36,7 +36,7 @@ async function syncChallengePhases (legacyId, v5Phases) { (!v5Equivalent.isOpen && _.toInteger(phase.phase_status_id) === constants.PhaseStatusTypes.Open)) { const newStatus = v5Equivalent.isOpen ? constants.PhaseStatusTypes.Open - : (new Date().getTime() <= new Date(v5Equivalent.scheduledStartDate).getTime() ? constants.PhaseStatusTypes.Scheduled : constants.PhaseStatusTypes.Closed) + : (new Date().getTime() <= new Date(v5Equivalent.scheduledEndDate).getTime() ? constants.PhaseStatusTypes.Scheduled : constants.PhaseStatusTypes.Closed) // update phase logger.debug(`Will update phase ${phase.project_phase_id}/${v5Equivalent.name} to duration ${v5Equivalent.duration * 1000} milli`) await timelineService.updatePhase( From 3418be0aff3e4927a6b60e92fe8ffe0db40b4f13 Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Tue, 16 Feb 2021 22:34:19 +0200 Subject: [PATCH 2/5] disable forceV4ESFeeder --- 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 ea5b118..ef108a5 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -499,7 +499,7 @@ async function processCreate (message) { forumId = message.payload.legacy.forumId } forumId = _.get(newChallenge, 'body.result.content.forumId', forumId) - await helper.forceV4ESFeeder(newChallenge.body.result.content.id) + // await helper.forceV4ESFeeder(newChallenge.body.result.content.id) await associateChallengeGroups(saveDraftContestDTO.groupsToBeAdded, saveDraftContestDTO.groupsToBeDeleted, newChallenge.body.result.content.id) // await associateChallengeTerms(saveDraftContestDTO.termsToBeAdded, saveDraftContestDTO.termsToBeRemoved, newChallenge.body.result.content.id) await setCopilotPayment(challengeUuid, newChallenge.body.result.content.id, _.get(message, 'payload.prizeSets'), _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy'), m2mToken) @@ -695,7 +695,7 @@ async function processUpdate (message) { await setCopilotPayment(message.payload.id, legacyId, _.get(message, 'payload.prizeSets'), _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'), m2mToken) try { - await helper.forceV4ESFeeder(legacyId) + // await helper.forceV4ESFeeder(legacyId) } catch (e) { logger.warn('Failed to call V4 ES Feeder') } From e5e12e35451d2b0e13f8b0fb5dacacd4dd591f81 Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Tue, 16 Feb 2021 22:52:13 +0200 Subject: [PATCH 3/5] revert last change --- 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 ef108a5..ea5b118 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -499,7 +499,7 @@ async function processCreate (message) { forumId = message.payload.legacy.forumId } forumId = _.get(newChallenge, 'body.result.content.forumId', forumId) - // await helper.forceV4ESFeeder(newChallenge.body.result.content.id) + await helper.forceV4ESFeeder(newChallenge.body.result.content.id) await associateChallengeGroups(saveDraftContestDTO.groupsToBeAdded, saveDraftContestDTO.groupsToBeDeleted, newChallenge.body.result.content.id) // await associateChallengeTerms(saveDraftContestDTO.termsToBeAdded, saveDraftContestDTO.termsToBeRemoved, newChallenge.body.result.content.id) await setCopilotPayment(challengeUuid, newChallenge.body.result.content.id, _.get(message, 'payload.prizeSets'), _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy'), m2mToken) @@ -695,7 +695,7 @@ async function processUpdate (message) { await setCopilotPayment(message.payload.id, legacyId, _.get(message, 'payload.prizeSets'), _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'), m2mToken) try { - // await helper.forceV4ESFeeder(legacyId) + await helper.forceV4ESFeeder(legacyId) } catch (e) { logger.warn('Failed to call V4 ES Feeder') } From 27dcd7860992e4809ea2349bb1c10e14b481e6dd Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Wed, 17 Feb 2021 00:09:50 +0200 Subject: [PATCH 4/5] re post resources on kafka after activation --- src/services/ProcessorService.js | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/src/services/ProcessorService.js b/src/services/ProcessorService.js index ea5b118..57c4850 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -467,6 +467,18 @@ async function closeChallenge (challengeId, winnerId) { return helper.postRequest(`${config.V4_CHALLENGE_API_URL}/${challengeId}/close?winnerId=${winnerId}`, null, m2mToken) } +/** + * Repost challenge resources on kafka + * @param {String} challengeUuid the V5 challenge UUID + * @param {String} m2mToken the m2m token + */ +async function rePostResourcesOnKafka (challengeUuid, m2mToken) { + const challengeResourcesResponse = await helper.getRequest(`${config.V5_RESOURCES_API_URL}?challengeId=${challengeUuid}&perPage=100`, m2mToken) + for (const resource of (challengeResourcesResponse.body || [])) { + await helper.postBusEvent(config.RESOURCE_CREATE_TOPIC, _.pick(resource, ['id', 'challengeId', 'memberId', 'memberHandle', 'roleId', 'created', 'createdBy', 'updated', 'updatedBy', 'legacyId'])) + } +} + /** * Process create challenge message * @param {Object} message the kafka message @@ -515,10 +527,7 @@ async function processCreate (message) { legacyId: newChallenge.body.result.content.id }, m2mToken) // Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor - const challengeResourcesResponse = await helper.getRequest(`${config.V5_RESOURCES_API_URL}?challengeId=${challengeUuid}&perPage=100`, m2mToken) - for (const resource of (challengeResourcesResponse.body || [])) { - await helper.postBusEvent(config.RESOURCE_CREATE_TOPIC, _.pick(resource, ['id', 'challengeId', 'memberId', 'memberHandle', 'roleId', 'created', 'createdBy', 'updated', 'updatedBy', 'legacyId'])) - } + await rePostResourcesOnKafka(challengeUuid, m2mToken) await timelineService.enableTimelineNotifications(newChallenge.body.result.content.id, _.get(message, 'payload.createdBy')) logger.debug('End of processCreate') return newChallenge.body.result.content.id @@ -672,6 +681,8 @@ async function processUpdate (message) { logger.info('Activating challenge...') await activateChallenge(legacyId) logger.info('Activated!') + // Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor + await rePostResourcesOnKafka(message.payload.id, m2mToken) } if (message.payload.status === constants.challengeStatuses.Completed && challenge.currentStatus !== constants.challengeStatuses.Completed) { if (message.payload.task.isTask) { From 11135871d55300caf9eeaa6378faa945712370f8 Mon Sep 17 00:00:00 2001 From: Thomas Kranitsas Date: Wed, 17 Feb 2021 00:45:44 +0200 Subject: [PATCH 5/5] skip phase sync for tasks --- src/services/ProcessorService.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/services/ProcessorService.js b/src/services/ProcessorService.js index 57c4850..72d2330 100644 --- a/src/services/ProcessorService.js +++ b/src/services/ProcessorService.js @@ -698,8 +698,11 @@ async function processUpdate (message) { } } } - - await syncChallengePhases(message.payload.legacyId, message.payload.phases) + if (!_.get(message.payload, 'task.isTask')) { + await syncChallengePhases(message.payload.legacyId, message.payload.phases) + } else { + logger.info('Will skip syncing phases as the challenge is a task...') + } await updateMemberPayments(message.payload.legacyId, message.payload.prizeSets, _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy')) await associateChallengeGroups(saveDraftContestDTO.groupsToBeAdded, saveDraftContestDTO.groupsToBeDeleted, legacyId) await associateChallengeTerms(message.payload.terms, legacyId, _.get(message, 'payload.createdBy'), _.get(message, 'payload.updatedBy') || _.get(message, 'payload.createdBy'))