Skip to content

Commit 7d98cca

Browse files
committed
fix: improve populating member details
- don't fail in case we cannot populate member with user details for any reason - added comprehensive logging for debugging errors during member population - fix case when user already existed when we create it and also populate details in such case (in reality should never happen)
1 parent aa53f73 commit 7d98cca

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/services/ProcessorServiceProjectMember.js

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -53,19 +53,30 @@ async function create (message) {
5353
async function updateDocPromise (doc) {
5454
const members = _.isArray(doc._source.members) ? doc._source.members : []
5555
const existingMemberIndex = _.findIndex(members, p => p.id === message.id)// if member does not exists already
56-
console.log(message)
57-
if (existingMemberIndex === -1) {
58-
if (!message.userId) {
59-
members.push(message)
60-
return
56+
let member = message
57+
58+
// try to populate member with user details
59+
// the code should move on, as it's not critical and is only used for searching at the moment
60+
try {
61+
const membersDetails = await helper.getMemberDetailsByUserIds([message.userId])
62+
const memberDetails = membersDetails[0]
63+
if (memberDetails) {
64+
member = _.merge(message, _.pick(memberDetails, 'handle', 'firstName', 'lastName', 'email'))
65+
logger.debug(`Successfully got user details for member (userId:${message.userId})`)
66+
} else {
67+
throw new Error(`Didn't fine user details for member (userId:${message.userId})`)
6168
}
62-
const memberDetails = await helper.getMemberDetailsByUserIds([message.userId])
63-
const messageWithDetails = _.merge(message, _.pick(memberDetails[0], 'handle', 'firstName', 'lastName', 'email'))
64-
members.push(messageWithDetails)
69+
} catch (err) {
70+
logger.error(`Cannot populate member (userId:${message.userId}) with user details.`)
71+
logger.debug(`Error during populating member (userId:${message.userId}) with user details`, err)
72+
}
73+
74+
if (existingMemberIndex === -1) {
75+
members.push(member)
6576
} else { // if member already exists, ideally we should never land here, but code handles the buggy indexing
6677
// replaces the old inconsistent index where previously member was not removed from the index but deleted
6778
// from the database
68-
members.splice(existingMemberIndex, 1, message)
79+
members.splice(existingMemberIndex, 1, member)
6980
}
7081
return _.assign(doc._source, { members })
7182
}

0 commit comments

Comments
 (0)