Skip to content

Commit d1792a1

Browse files
committed
fix: return 404 when merging a member that no longer exists
Signed-off-by: Yeganathan S <63534555+skwowet@users.noreply.github.com>
1 parent f3fbf03 commit d1792a1

4 files changed

Lines changed: 40 additions & 1 deletion

File tree

services/apps/members_enrichment_worker/src/activities/member.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { Error404 } from '@crowd/common'
12
import { CommonMemberService } from '@crowd/common_services'
23
import {
34
MemberField,
@@ -136,6 +137,14 @@ export async function mergeMembers(
136137
try {
137138
await memberService.merge(primaryMemberId, secondaryMemberId)
138139
} catch (error) {
140+
if (error instanceof Error404) {
141+
svc.log.info(
142+
{ primaryMemberId, secondaryMemberId },
143+
'Skipping merge, member no longer exists',
144+
)
145+
return
146+
}
147+
139148
svc.log.error({ err: error }, 'Failed to merge members')
140149
throw error
141150
}

services/apps/merge_suggestions_worker/src/activities/common.ts

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { BedrockRuntimeClient, InvokeModelCommand } from '@aws-sdk/client-bedroc
33
import axios from 'axios'
44
import { performance } from 'perf_hooks'
55

6-
import { IS_LLM_ENABLED } from '@crowd/common'
6+
import { Error404, IS_LLM_ENABLED } from '@crowd/common'
77
import { CommonMemberService } from '@crowd/common_services'
88
import { pgpQx } from '@crowd/data-access-layer'
99
import { ITenant } from '@crowd/data-access-layer/src/old/apps/merge_suggestions_worker//types'
@@ -110,6 +110,14 @@ export async function mergeMembers(
110110
try {
111111
await memberService.merge(primaryMemberId, secondaryMemberId)
112112
} catch (error) {
113+
if (error instanceof Error404) {
114+
svc.log.info(
115+
{ primaryMemberId, secondaryMemberId },
116+
'Skipping merge, member no longer exists',
117+
)
118+
return
119+
}
120+
113121
svc.log.error({ err: error }, 'Failed to merge members')
114122
throw error
115123
}

services/apps/script_executor_worker/src/activities/common.ts

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import axios from 'axios'
22

3+
import { Error404 } from '@crowd/common'
34
import { CommonMemberService, signalMemberUpdate } from '@crowd/common_services'
45
import { pgpQx } from '@crowd/data-access-layer'
56
import {
@@ -22,6 +23,14 @@ export async function mergeMembers(
2223
try {
2324
await memberService.merge(primaryMemberId, secondaryMemberId)
2425
} catch (error) {
26+
if (error instanceof Error404) {
27+
svc.log.info(
28+
{ primaryMemberId, secondaryMemberId },
29+
'Skipping merge, member no longer exists',
30+
)
31+
return
32+
}
33+
2534
svc.log.error({ err: error }, 'Failed to merge members')
2635
throw error
2736
}

services/libs/common_services/src/services/common.member.service.ts

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import {
1010
} from '@crowd/audit-logs'
1111
import {
1212
DEFAULT_TENANT_ID,
13+
Error404,
1314
Error409,
1415
calculateReach,
1516
getEarliestValidDate,
@@ -358,6 +359,10 @@ export class CommonMemberService extends LoggerBase {
358359
const original = await this.getMemberById(originalId)
359360
const toMerge = await this.getMemberById(toMergeId)
360361

362+
if (!original || !toMerge) {
363+
throw new Error404(options?.language)
364+
}
365+
361366
captureOldState({
362367
primary: original,
363368
secondary: toMerge,
@@ -486,6 +491,10 @@ export class CommonMemberService extends LoggerBase {
486491
return { status: 409, mergedId: originalId }
487492
}
488493

494+
if (err instanceof Error404) {
495+
throw err
496+
}
497+
489498
this.log.error(err, 'Error while merging members!', { originalId, toMergeId })
490499

491500
await setMergeAction(this.qx, MergeActionType.MEMBER, originalId, toMergeId, {
@@ -510,6 +519,10 @@ export class CommonMemberService extends LoggerBase {
510519
MemberField.MANUALLY_CHANGED_FIELDS,
511520
])
512521

522+
if (!member) {
523+
return null
524+
}
525+
513526
const affiliations = await findMemberAffiliations(this.qx, memberId)
514527

515528
return {

0 commit comments

Comments
 (0)