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

Add logs to debug duplicate issue. #26

Merged
merged 1 commit into from
Nov 22, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions services/IssueService.js
Original file line number Diff line number Diff line change
@@ -63,13 +63,19 @@ function parsePrizes(issue) {
* @private
*/
async function ensureChallengeExists(event, issue, create = true) {
logger.debug('Enter ensureChallengeExists to scan an issue record');
logger.debug(`Enter ensureChallengeExists. Number: ${issue.number}`);
logger.debug(`Enter ensureChallengeExists. provider: ${issue.provider}`);
logger.debug(`Enter ensureChallengeExists. repositoryId: ${issue.repositoryId}`);

let dbIssue = await dbHelper.scanOne(models.Issue, {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
});

if (dbIssue && dbIssue.status === 'challenge_creation_pending') {
logger.debug('dbIssue is PENDING');
throw errors.internalDependencyError(`Challenge for the updated issue ${issue.number} is creating, rescheduling this event`);
}
if (dbIssue && dbIssue.status === 'challenge_creation_failed') {
@@ -83,12 +89,15 @@ async function ensureChallengeExists(event, issue, create = true) {
}

if (!dbIssue && create) {
logger.debug('dbIssue is NULL, process to create new record and challenge');

await handleIssueCreate(event, issue);
dbIssue = await dbHelper.scanOne(models.Issue, {
number: issue.number,
provider: issue.provider,
repositoryId: issue.repositoryId
});
logger.debug(`dbIssue is CREATED ${dbIssue ? 'Succesfully' : 'Failed'}`);
}
return dbIssue;
}
6 changes: 6 additions & 0 deletions utils/db-helper.js
Original file line number Diff line number Diff line change
@@ -2,6 +2,7 @@
* Copyright (c) 2018 TopCoder, Inc. All rights reserved.
*/
'use strict';
const logger = require('./logger');

/**
* This module contains the database helper methods.
@@ -52,11 +53,16 @@ async function scan(model, scanParams) {
* @returns {Promise<void>}
*/
async function scanOne(model, scanParams) {
logger.debug('Enter scanOne.');

return await new Promise((resolve, reject) => {
model.scan(scanParams).exec((err, result) => {
if (err) {
logger.debug(`scanOne. Error. ${err}`);
reject(err);
}
logger.debug(`scanOne. Result.`);
logger.debug(result);

return resolve(result.count === 0 ? null : result[0]);
});
8 changes: 3 additions & 5 deletions utils/kafka.js
Original file line number Diff line number Diff line change
@@ -21,7 +21,7 @@ const logger = require('./logger');

class Kafka {
constructor() {
this.consumer = new kafka.GroupConsumer(config.KAFKA_OPTIONS);
this.consumer = new kafka.SimpleConsumer(config.KAFKA_OPTIONS);

this.producer = new kafka.Producer(config.KAFKA_OPTIONS);
this.producer.init().then(() => {
@@ -77,12 +77,10 @@ class Kafka {
}

run() {
this.consumer.init([{
subscriptions: [config.TOPIC],
handler: this.messageHandler
}]).then(() => {
this.consumer.init().then(() => {
logger.info('kafka consumer is ready');
healthcheck.init([this.check]);
this.consumer.subscribe(config.TOPIC, {}, this.messageHandler);
}).catch((err) => {
logger.error(`kafka consumer is not connected. ${err.stack}`);
});