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

Commit

Permalink
Merge pull request #81 from topcoder-platform/restore-group-fix
Browse files Browse the repository at this point in the history
Challenge Association Data Fix
  • Loading branch information
LieutenantRoger authored May 5, 2022
2 parents c71b81c + de51cd4 commit 9374ada
Showing 1 changed file with 35 additions and 32 deletions.
67 changes: 35 additions & 32 deletions src/services/ProcessorService.js
Original file line number Diff line number Diff line change
Expand Up @@ -647,35 +647,16 @@ 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
try {
challenge = await getChallengeById(m2mToken, legacyId)
} catch (e) {
throw new Error(`Error getting challenge by id - Error: ${JSON.stringify(e)}`)
}

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

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)
logger.info(`Set Associations 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)

try {
logger.info(`force V4 ES Feeder for the legacy challenge ${legacyId}`)
await helper.forceV4ESFeeder(legacyId)
} catch (e) {
logger.warn(`Failed to call V4 ES Feeder ${JSON.stringify(e)}`)
}

let challenge
try {
challenge = await getChallengeById(m2mToken, legacyId)
} catch (e) {
throw new Error(`Error getting challenge by id - Error: ${JSON.stringify(e)}`)
}

if (message.payload.status && challenge) {
// Whether we need to sync v4 ES again
let needSyncV4ES = false
// logger.info(`The status has changed from ${challenge.currentStatus} to ${message.payload.status}`)
if (message.payload.status === constants.challengeStatuses.Active && challenge.currentStatus !== constants.challengeStatuses.Active) {
logger.info('Activating challenge...')
Expand All @@ -712,6 +710,7 @@ async function processMessage (message) {
await metadataService.createOrUpdateMetadata(legacyId, 9, 'On', createdByUserId) // autopilot
// Repost all challenge resource on Kafka so they will get created on legacy by the legacy-challenge-resource-processor
await rePostResourcesOnKafka(challengeUuid, m2mToken)
needSyncV4ES = true
}
if (message.payload.status === constants.challengeStatuses.Completed && challenge.currentStatus !== constants.challengeStatuses.Completed) {
if (message.payload.task.isTask) {
Expand All @@ -722,6 +721,7 @@ async function processMessage (message) {
const winnerId = _.find(message.payload.winners, winner => winner.placement === 1).userId
logger.info(`Will close the challenge with ID ${legacyId}. Winner ${winnerId}!`)
await closeChallenge(legacyId, winnerId)
needSyncV4ES = true
} else {
logger.info('Challenge type is not a task.. Skip closing challenge...')
}
Expand All @@ -730,15 +730,18 @@ async function processMessage (message) {
if (!_.get(message.payload, 'task.isTask')) {
const numOfReviewers = 2
await syncChallengePhases(legacyId, message.payload.phases, createdByUserId, _.get(message, 'payload.legacy.selfService'), numOfReviewers)
needSyncV4ES = true
} else {
logger.info('Will skip syncing phases as the challenge is a task...')
}
}

try {
await helper.forceV4ESFeeder(legacyId)
} catch (e) {
logger.warn(`Failed to call V4 ES Feeder ${JSON.stringify(e)}`)
if (needSyncV4ES) {
try {
logger.info(`Resync V4 ES for the legacy challenge ${legacyId}`)
await helper.forceV4ESFeeder(legacyId)
} catch (e) {
logger.warn(`Resync V4 - Failed to call V4 ES Feeder ${JSON.stringify(e)}`)
}
}
}
}

Expand Down

0 comments on commit 9374ada

Please sign in to comment.