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

Commit 9993fb0

Browse files
committed
Fix to force ES Feeder refresh of legacy id if it's not found.
1 parent e3994de commit 9993fb0

File tree

3 files changed

+24
-5
lines changed

3 files changed

+24
-5
lines changed

config/default.js

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ module.exports = {
3333
TERMS_API_URL: process.env.TERMS_API_URL || 'https://api.topcoder-dev.com/v5/terms',
3434
V4_CHALLENGE_API_URL: process.env.V4_CHALLENGE_API_URL || 'https://api.topcoder-dev.com/v4/challenges',
3535
V3_MEMBER_API_URL: process.env.V3_MEMBER_API_URL || 'https://api.topcoder-dev.com/v3/members',
36+
V4_ES_FEEDER_API_URL: process.env.V4_ES_FEEDER_API_URL || 'https://api.topcoder-dev.com/v4/esfeeder/challenges',
37+
FORCE_ES_FEEDER: process.env.FORCE_ES_FEEDER ? process.env.FORCE_ES_FEEDER === 'true' : false,
3638
CREATED_DATE_BEGIN: process.env.CREATED_DATE_BEGIN,
3739
POPULATE_MIGRATION_TABLE_DATE_BEGIN: process.env.POPULATE_MIGRATION_TABLE_DATE_BEGIN || process.env.CREATED_DATE_BEGIN || new Date(),
3840

src/services/challengeService.js

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ const HashMap = require('hashmap')
99
const logger = require('../util/logger')
1010
const helper = require('../util/helper')
1111
const { Challenge, ChallengeType, ChallengeTimelineTemplate } = require('../models')
12-
const { getESClient, getV4ESClient, getM2MToken } = require('../util/helper')
12+
const { getESClient, getV4ESClient, getM2MToken, forceV4ESFeeder } = require('../util/helper')
1313
const challengeInformixService = require('./challengeInformixService')
1414
const resourceService = require('./resourceService')
1515
const resourceInformixService = require('./resourceInformixService')
@@ -424,7 +424,7 @@ async function getChallengeListingFromV4ES (legacyId) {
424424
}
425425
// Search with constructed query
426426
let docs
427-
// console.log('es query', JSON.stringify(esQuery))
427+
// console.log('getChallengeListingFromV4ES es query', JSON.stringify(esQuery))
428428
try {
429429
docs = await getV4ESClient().search(esQuery)
430430
} catch (e) {
@@ -501,18 +501,23 @@ async function mapTimelineTemplateId (trackId, typeId) {
501501
*/
502502
async function buildV5Challenge (legacyId, challengeListing, challengeDetails) {
503503
if (!challengeListing || challengeListing === null) {
504-
logger.debug(`Challenge listing not passed, pulling from V4ES for ${legacyId}`)
504+
// logger.debug(`Challenge listing not passed, pulling from V4ES for ${legacyId}`)
505505
const challengeListingObj = await getChallengeListingFromV4ES(legacyId)
506506
challengeListing = challengeListingObj.data
507507
}
508508
if (!challengeDetails || challengeDetails === null) {
509-
logger.debug(`Challenge details not passed, pulling from V4ES for ${legacyId}`)
509+
// logger.debug(`Challenge details not passed, pulling from V4ES for ${legacyId}`)
510510
const challengeDetailObj = await getChallengeDetailFromV4ES(legacyId)
511511
challengeDetails = challengeDetailObj.data
512512
}
513513

514514
if (!challengeListing || challengeListing === null) {
515-
throw Error(`Challenge Listing Not Found in v4 Index ${JSON.stringify(challengeListing)}`)
515+
if (config.FORCE_ES_FEEDER === true) {
516+
await forceV4ESFeeder(legacyId)
517+
throw Error(`Challenge Listing Not Found in v4 Index - Forcing ES Feeder for ${legacyId}`)
518+
} else {
519+
throw Error(`Challenge Listing Not Found in v4 Index ${legacyId}`)
520+
}
516521
}
517522

518523
const allGroups = challengeListing.groupIds

src/util/helper.js

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44
const _ = require('lodash')
55
const querystring = require('querystring')
6+
const request = require('superagent')
67
const config = require('config')
78
const elasticsearch = require('elasticsearch')
89
const moment = require('moment-timezone')
@@ -145,6 +146,16 @@ function getV4ESClient () {
145146
return v4esClient
146147
}
147148

149+
async function forceV4ESFeeder (legacyId) {
150+
const token = await getM2MToken()
151+
const body = {
152+
param: {
153+
challengeIds: [legacyId]
154+
}
155+
}
156+
await request.put(`${config.V4_ES_FEEDER}`).send(body).set({ Authorization: `Bearer ${token}` })
157+
}
158+
148159
/**
149160
* Generate informx-flavor date from date string.
150161
* Also, changes the timezone to EST
@@ -229,6 +240,7 @@ function setResHeaders (req, res, result) {
229240
}
230241

231242
module.exports = {
243+
forceV4ESFeeder,
232244
wrapExpress,
233245
autoWrapExpress,
234246
checkIfExists,

0 commit comments

Comments
 (0)