@@ -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