diff --git a/server/api/challs/submit.js b/server/api/challs/submit.js index 5548dc2..1e3aaf3 100644 --- a/server/api/challs/submit.js +++ b/server/api/challs/submit.js @@ -50,7 +50,8 @@ export default { req.log.info({ chall: challengeid, flag: submittedFlag, - type: challenge.type + type: challenge.type, + challenge: challenge }, 'flag submission attempt') if (!challenge) { diff --git a/server/cache/leaderboard.js b/server/cache/leaderboard.js index d1db684..4d7e014 100644 --- a/server/cache/leaderboard.js +++ b/server/cache/leaderboard.js @@ -131,6 +131,7 @@ export const setLeaderboard = async ({ challengeValues, solveAmount, leaderboard challengeValues.forEach((value, key) => { challengeInfo.push(key, `${value},${solveAmount.get(key)}`) }) + console.dir({ challengeValues, solveAmount, leaderboard, leaderboardUpdate }, { depth: null }) await redisEvalsha( await setLeaderboardScript, keys.length, diff --git a/server/challenges/index.ts b/server/challenges/index.ts index ab612db..cb79591 100644 --- a/server/challenges/index.ts +++ b/server/challenges/index.ts @@ -35,6 +35,7 @@ const cleanChallenge = (chall: Challenge): CleanedChallenge => { } const onUpdate = (newChallenges: Challenge[]): void => { + console.dir({ newChallenges }, { depth: null }) challenges = newChallenges challengesMap = new Map(newChallenges.map(c => [c.id, c])) cleanedChallenges = challenges.map(cleanChallenge) diff --git a/server/leaderboard/calculate.js b/server/leaderboard/calculate.js index 840aaf5..04b73a0 100644 --- a/server/leaderboard/calculate.js +++ b/server/leaderboard/calculate.js @@ -12,6 +12,7 @@ const { } } = workerData +console.dir({ allChallenges }, { depth: null }) const solveAmount = new Map() const challengeTiebreakEligibles = new Map() for (let i = 0; i < allChallenges.length; i++) { @@ -81,6 +82,7 @@ const calculateScores = (sample) => { )) } + const rankedSolvesForLogging = [] for (let i = 0; i < users.length; i++) { const user = users[i] let currScore = 0 @@ -100,7 +102,17 @@ const calculateScores = (sample) => { rankedMetadata.minScore, rankedMetadata.maxScore, solveScore - ) + ) + rankedSolvesForLogging.push({ + userId: user.id, + challengeId: solvedChallId, + score: solveScore, + value, + min: rankedMetadata.min, + max: rankedMetadata.max, + minScore: rankedMetadata.minScore, + maxScore: rankedMetadata.maxScore + }) } else { // Add the score for the specific solve loaded from the challengeValues array using ids @@ -121,6 +133,9 @@ const calculateScores = (sample) => { ]) } + console.dir({ rankedSolvesForLogging }, { depth: null }) + console.dir({ challengeRankedMetadata }, { depth: null }) + return { challengeValues, userScores @@ -159,6 +174,8 @@ samples.forEach((sample) => { const { userScores, challengeValues } = calculateScores(leaderboardUpdate) const sortedUsers = userScores.sort(userCompare).map((user) => user.slice(0, 4)) +console.log({ sortedUsers }) + parentPort.postMessage({ leaderboard: sortedUsers, graphLeaderboards, diff --git a/server/leaderboard/index.js b/server/leaderboard/index.js index d4864a3..6bd9897 100644 --- a/server/leaderboard/index.js +++ b/server/leaderboard/index.js @@ -11,12 +11,14 @@ const fetchData = async () => { database.users.getAllUsers(), cache.leaderboard.getGraphUpdate() ]) - return { + const workerData = { solves, users, graphUpdate, allChallenges: getAllChallenges() } + console.dir({ workerData }, { depth: null }) + return workerData } let updating = false @@ -32,6 +34,7 @@ const runUpdate = async () => { } }) worker.once('message', async (data) => { + console.dir({ leaderboardData: data }, { depth: null }) await cache.leaderboard.setLeaderboard(data) await cache.leaderboard.setGraph({ leaderboards: data.graphLeaderboards }) updating = false diff --git a/server/providers/challenges/database/index.ts b/server/providers/challenges/database/index.ts index 8acffdc..51f858b 100644 --- a/server/providers/challenges/database/index.ts +++ b/server/providers/challenges/database/index.ts @@ -26,6 +26,8 @@ class DatabaseProvider extends EventEmitter implements Provider { } }) + console.dir({ databaseUpdateChallenges: this.challenges }, { depth: null }) + this.emit('update', this.challenges) } catch (e) { // TODO: wrap error?