Skip to content

Commit 764ef45

Browse files
committed
fix: make sure adding member never fails
1 parent 79502c5 commit 764ef45

File tree

2 files changed

+23
-20
lines changed

2 files changed

+23
-20
lines changed

src/services/ProcessorServiceProjectMember.js

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -81,27 +81,30 @@ async function create (message) {
8181

8282
// sometimes we have issue that when member accepts invitation the invitation is somehow
8383
// is not removed from the ES, so here we are making sure that invite is removed when we are adding member
84-
const addedMember = members[existingMemberIndex]
85-
const addedMemberInvites = _.filter(doc._source.invites, (invite) => (
86-
invite.email === addedMember.email || invite.userId === addedMember.userId
87-
))
88-
89-
if (addedMemberInvites.length > 0) {
90-
logger.warn(`There are ${addedMemberInvites.length} invite(s) are not yet removed` +
91-
` for member.id: ${addedMember.id} member.userId: ${addedMember.userId}.`)
92-
93-
for (let i = 0; i < addedMemberInvites.length; i++) {
94-
const invite = addedMemberInvites[i]
95-
logger.debug(`Removing invite.id: ${invite.id} for member.id: ${addedMember.id} member.userId: ${addedMember.userId}.`)
96-
try {
97-
const message = { id: invite.id }
98-
const updateDocHandler = helper.removeInvitePromise(message)
99-
await updateDocHandler(doc)
100-
logger.debug(`Successfully removed invite.id: ${invite.id}.`)
101-
} catch (err) {
102-
logger.error(`Failed removing invite.id: ${invite.id}. ${err}`)
84+
try { // make sure that this logic never cause an error in member adding process
85+
const invites = _.filter(doc._source.invites, (invite) => (
86+
invite.email === member.email || invite.userId === member.userId
87+
))
88+
89+
if (invites.length > 0) {
90+
logger.warn(`There are ${invites.length} invite(s) are not yet removed` +
91+
` for member.id: ${member.id} member.userId: ${member.userId}.`)
92+
93+
for (let i = 0; i < invites.length; i++) {
94+
const invite = invites[i]
95+
logger.debug(`Removing invite.id: ${invite.id} for member.id: ${member.id} member.userId: ${member.userId}.`)
96+
try {
97+
const message = { id: invite.id }
98+
const updateDocHandler = helper.removeInvitePromise(message)
99+
await updateDocHandler(doc)
100+
logger.debug(`Successfully removed invite.id: ${invite.id}.`)
101+
} catch (err) {
102+
logger.error(`Failed removing invite.id: ${invite.id}. ${err}`)
103+
}
103104
}
104105
}
106+
} catch (err) {
107+
logger.error(`Error during removing existent invites for added member: ${err}`)
105108
}
106109

107110
return _.assign(doc._source, { members })

test/e2e/processor.project.index.test.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -832,7 +832,7 @@ describe('TC Project Member Topic Tests', () => {
832832
_.keys(_.omit(projectMemberCreatedMessage.payload, ['resource'])))
833833
})
834834

835-
it('create project member message and remove not removed invite', async () => {
835+
it('create project member message - already exists - remove not removed invite', async () => {
836836
// let's say we still have invite
837837
await ProcessorService.create(projectMemberInviteCreatedMessage)
838838
let data = await testHelper.getProjectESData(projectId)

0 commit comments

Comments
 (0)