Skip to content
This repository was archived by the owner on Jan 23, 2025. It is now read-only.

Commit 31e4536

Browse files
Merge pull request #82 from topcoder-platform/develop
[Next Release] Groups info are missing for topgear challenges
2 parents cfea9a6 + 9374ada commit 31e4536

File tree

1 file changed

+35
-32
lines changed

1 file changed

+35
-32
lines changed

Diff for: src/services/ProcessorService.js

+35-32
Original file line numberDiff line numberDiff line change
@@ -647,35 +647,16 @@ async function processMessage (message) {
647647

648648
const saveDraftContestDTO = await parsePayload(message.payload, m2mToken)
649649

650-
let setAssociations = true
651-
652650
if (!legacyId) {
653651
logger.debug('Legacy ID does not exist. Will create...')
654652
legacyId = await createChallenge(saveDraftContestDTO, challengeUuid, createdByUserId, message.payload.legacy, m2mToken)
655-
653+
656654
await recreatePhases(legacyId, message.payload.phases, updatedByUserId)
657655

658656
if (_.get(message, 'payload.legacy.selfService')) {
659657
await disableTimelineNotifications(legacyId, createdByUserId) // disable
660658
}
661659

662-
logger.info(`Update Member payments for challenge ${legacyId}`)
663-
await updateMemberPayments(legacyId, message.payload.prizeSets, updatedByUserId)
664-
logger.info(`Associate groups for challenge ${legacyId}`)
665-
await associateChallengeGroups(message.payload.groups, legacyId, m2mToken)
666-
logger.info(`Associate challenge terms for challenge ${legacyId}`)
667-
await associateChallengeTerms(message.payload.terms, legacyId, createdByUserId, updatedByUserId)
668-
logger.info(`set copilot for challenge ${legacyId}`)
669-
await setCopilotPayment(challengeUuid, legacyId, _.get(message, 'payload.prizeSets'), createdByUserId, updatedByUserId, m2mToken)
670-
671-
setAssociations = false
672-
}
673-
674-
let challenge
675-
try {
676-
challenge = await getChallengeById(m2mToken, legacyId)
677-
} catch (e) {
678-
throw new Error(`Error getting challenge by id - Error: ${JSON.stringify(e)}`)
679660
}
680661

681662
logger.debug('Result from parsePayload:')
@@ -694,15 +675,32 @@ async function processMessage (message) {
694675
}
695676
}
696677

697-
if (setAssociations) {
698-
logger.info(`Set Associations for challenge ${legacyId}`)
699-
await updateMemberPayments(legacyId, message.payload.prizeSets, updatedByUserId)
700-
await associateChallengeGroups(message.payload.groups, legacyId, m2mToken)
701-
await associateChallengeTerms(message.payload.terms, legacyId, createdByUserId, updatedByUserId)
702-
await setCopilotPayment(challengeUuid, legacyId, _.get(message, 'payload.prizeSets'), createdByUserId, updatedByUserId, m2mToken)
678+
logger.info(`Set Associations for challenge ${legacyId}`)
679+
await updateMemberPayments(legacyId, message.payload.prizeSets, updatedByUserId)
680+
logger.info(`Associate groups for challenge ${legacyId}`)
681+
await associateChallengeGroups(message.payload.groups, legacyId, m2mToken)
682+
logger.info(`Associate challenge terms for challenge ${legacyId}`)
683+
await associateChallengeTerms(message.payload.terms, legacyId, createdByUserId, updatedByUserId)
684+
logger.info(`set copilot for challenge ${legacyId}`)
685+
await setCopilotPayment(challengeUuid, legacyId, _.get(message, 'payload.prizeSets'), createdByUserId, updatedByUserId, m2mToken)
686+
687+
try {
688+
logger.info(`force V4 ES Feeder for the legacy challenge ${legacyId}`)
689+
await helper.forceV4ESFeeder(legacyId)
690+
} catch (e) {
691+
logger.warn(`Failed to call V4 ES Feeder ${JSON.stringify(e)}`)
692+
}
693+
694+
let challenge
695+
try {
696+
challenge = await getChallengeById(m2mToken, legacyId)
697+
} catch (e) {
698+
throw new Error(`Error getting challenge by id - Error: ${JSON.stringify(e)}`)
703699
}
704700

705701
if (message.payload.status && challenge) {
702+
// Whether we need to sync v4 ES again
703+
let needSyncV4ES = false
706704
// logger.info(`The status has changed from ${challenge.currentStatus} to ${message.payload.status}`)
707705
if (message.payload.status === constants.challengeStatuses.Active && challenge.currentStatus !== constants.challengeStatuses.Active) {
708706
logger.info('Activating challenge...')
@@ -712,6 +710,7 @@ async function processMessage (message) {
712710
await metadataService.createOrUpdateMetadata(legacyId, 9, 'On', createdByUserId) // autopilot
713711
// Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor
714712
await rePostResourcesOnKafka(challengeUuid, m2mToken)
713+
needSyncV4ES = true
715714
}
716715
if (message.payload.status === constants.challengeStatuses.Completed && challenge.currentStatus !== constants.challengeStatuses.Completed) {
717716
if (message.payload.task.isTask) {
@@ -722,6 +721,7 @@ async function processMessage (message) {
722721
const winnerId = _.find(message.payload.winners, winner => winner.placement === 1).userId
723722
logger.info(`Will close the challenge with ID ${legacyId}. Winner ${winnerId}!`)
724723
await closeChallenge(legacyId, winnerId)
724+
needSyncV4ES = true
725725
} else {
726726
logger.info('Challenge type is not a task.. Skip closing challenge...')
727727
}
@@ -730,15 +730,18 @@ async function processMessage (message) {
730730
if (!_.get(message.payload, 'task.isTask')) {
731731
const numOfReviewers = 2
732732
await syncChallengePhases(legacyId, message.payload.phases, createdByUserId, _.get(message, 'payload.legacy.selfService'), numOfReviewers)
733+
needSyncV4ES = true
733734
} else {
734735
logger.info('Will skip syncing phases as the challenge is a task...')
735736
}
736-
}
737-
738-
try {
739-
await helper.forceV4ESFeeder(legacyId)
740-
} catch (e) {
741-
logger.warn(`Failed to call V4 ES Feeder ${JSON.stringify(e)}`)
737+
if (needSyncV4ES) {
738+
try {
739+
logger.info(`Resync V4 ES for the legacy challenge ${legacyId}`)
740+
await helper.forceV4ESFeeder(legacyId)
741+
} catch (e) {
742+
logger.warn(`Resync V4 - Failed to call V4 ES Feeder ${JSON.stringify(e)}`)
743+
}
744+
}
742745
}
743746
}
744747

0 commit comments

Comments
 (0)