Skip to content

Commit 4f0d49a

Browse files
authored
Remove logic for WorkflowUpdate to find corresponding initial event, add Nexus operation events to failed/timedout/canceled (#2397)
1 parent 495efe9 commit 4f0d49a

File tree

5 files changed

+24
-80
lines changed

5 files changed

+24
-80
lines changed

src/lib/models/event-groups/create-event-group.test.ts

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -144,27 +144,4 @@ describe('createEventGroup', () => {
144144
it('should ignore an event that should not create an event group', () => {
145145
expect(createEventGroup(completedEvent)).toBeUndefined();
146146
});
147-
148-
it('should create a group from a WorkflowExecutionUpdateAccepted event and add WorkflowTaskScheduled event to group', () => {
149-
const workflowTaskEvent = {
150-
id: '120',
151-
} as unknown as WorkflowEvent;
152-
153-
const updateEvent = {
154-
id: '123',
155-
eventId: '123',
156-
workflowExecutionUpdateAcceptedEventAttributes: {
157-
acceptedRequestSequencingEventId: 120,
158-
},
159-
} as unknown as WorkflowEvent;
160-
161-
expect(
162-
createEventGroup(updateEvent, [workflowTaskEvent, updateEvent])
163-
.initialEvent.id,
164-
).toBe(workflowTaskEvent.id);
165-
expect(
166-
createEventGroup(updateEvent, [workflowTaskEvent, updateEvent]).eventList
167-
.length,
168-
).toBe(2);
169-
});
170147
});

src/lib/models/event-groups/create-event-group.ts

Lines changed: 9 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -50,44 +50,21 @@ type StartingEvents = {
5050
Nexus: NexusOperationScheduledEvent;
5151
};
5252

53-
const getInitialEvent = (
54-
event: CommonHistoryEvent,
55-
events?: CommonHistoryEvent[],
56-
) => {
57-
if (events?.length && isWorkflowExecutionUpdateAcceptedEvent(event)) {
58-
return events.find(
59-
(e) =>
60-
e.id ===
61-
event.workflowExecutionUpdateAcceptedEventAttributes?.acceptedRequestSequencingEventId.toString(),
62-
);
63-
}
64-
return event;
65-
};
66-
6753
const createGroupFor = <K extends keyof StartingEvents>(
6854
event: StartingEvents[K],
69-
events?: CommonHistoryEvent[],
7055
): EventGroup => {
7156
const id = getGroupId(event);
72-
const initialEvent = getInitialEvent(event, events);
73-
const name = getEventGroupName(event, initialEvent);
57+
const name = getEventGroupName(event);
7458
const label = getEventGroupLabel(event);
75-
const displayName = getEventGroupDisplayName(event, initialEvent);
59+
const displayName = getEventGroupDisplayName(event);
7660

7761
const { timestamp, category, classification } = event;
7862

7963
const groupEvents: EventGroup['events'] = new Map();
8064
const groupEventIds: EventGroup['eventIds'] = new Set();
8165

82-
if (initialEvent && isWorkflowExecutionUpdateAcceptedEvent(event)) {
83-
groupEvents.set(initialEvent.id, initialEvent);
84-
groupEvents.set(event.id, event);
85-
groupEventIds.add(initialEvent.id);
86-
groupEventIds.add(event.id);
87-
} else {
88-
groupEvents.set(event.id, event);
89-
groupEventIds.add(event.id);
90-
}
66+
groupEvents.set(event.id, event);
67+
groupEventIds.add(event.id);
9168

9269
return {
9370
id,
@@ -96,7 +73,7 @@ const createGroupFor = <K extends keyof StartingEvents>(
9673
displayName,
9774
events: groupEvents,
9875
eventIds: groupEventIds,
99-
initialEvent,
76+
initialEvent: event,
10077
timestamp,
10178
category: isLocalActivityMarkerEvent(event) ? 'local-activity' : category,
10279
classification,
@@ -140,10 +117,7 @@ const createGroupFor = <K extends keyof StartingEvents>(
140117
};
141118
};
142119

143-
export const createEventGroup = (
144-
event: CommonHistoryEvent,
145-
events?: CommonHistoryEvent[],
146-
): EventGroup => {
120+
export const createEventGroup = (event: CommonHistoryEvent): EventGroup => {
147121
if (isActivityTaskScheduledEvent(event))
148122
return createGroupFor<'Activity'>(event);
149123

@@ -166,16 +140,15 @@ export const createEventGroup = (
166140
}
167141

168142
if (isWorkflowExecutionUpdateAcceptedEvent(event))
169-
return createGroupFor<'Update'>(event, events);
143+
return createGroupFor<'Update'>(event);
170144

171145
if (isNexusOperationScheduledEvent(event))
172-
return createGroupFor<'Nexus'>(event, events);
146+
return createGroupFor<'Nexus'>(event);
173147
};
174148

175149
export const createWorkflowTaskGroup = (
176150
event: CommonHistoryEvent,
177-
events?: CommonHistoryEvent[],
178151
): EventGroup => {
179152
if (isWorkflowTaskScheduledEvent(event))
180-
return createGroupFor<'WorkflowTask'>(event, events);
153+
return createGroupFor<'WorkflowTask'>(event);
181154
};

src/lib/models/event-groups/get-event-in-group.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ import {
99
isChildWorkflowExecutionTerminatedEvent,
1010
isChildWorkflowExecutionTimedOutEvent,
1111
isFailedWorkflowExecutionUpdateCompletedEvent,
12+
isNexusOperationCanceledEvent,
13+
isNexusOperationFailedEvent,
14+
isNexusOperationTimedOutEvent,
1215
isSignalExternalWorkflowExecutionFailedEvent,
1316
isTimerCanceledEvent,
1417
isWorkflowExecutionCanceledEvent,
@@ -30,7 +33,9 @@ export const eventIsFailureOrTimedOut = (event: WorkflowEvent): boolean => {
3033
isChildWorkflowExecutionFailedEvent(event) ||
3134
isChildWorkflowExecutionTimedOutEvent(event) ||
3235
isSignalExternalWorkflowExecutionFailedEvent(event) ||
33-
isFailedWorkflowExecutionUpdateCompletedEvent(event)
36+
isFailedWorkflowExecutionUpdateCompletedEvent(event) ||
37+
isNexusOperationFailedEvent(event) ||
38+
isNexusOperationTimedOutEvent(event)
3439
);
3540
};
3641

@@ -46,7 +51,8 @@ export const eventIsCanceled = (event: WorkflowEvent): boolean => {
4651
isActivityTaskCanceledEvent(event) ||
4752
isTimerCanceledEvent(event) ||
4853
isWorkflowExecutionCanceledEvent(event) ||
49-
isChildWorkflowExecutionCanceledEvent(event)
54+
isChildWorkflowExecutionCanceledEvent(event) ||
55+
isNexusOperationCanceledEvent(event)
5056
);
5157
};
5258

src/lib/models/event-groups/get-group-name.ts

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,9 @@ import {
1212
isTimerStartedEvent,
1313
isWorkflowExecutionSignaledEvent,
1414
isWorkflowExecutionUpdateAcceptedEvent,
15-
isWorkflowExecutionUpdateAdmittedEvent,
1615
} from '$lib/utilities/is-event-type';
1716

18-
export const getEventGroupName = (
19-
event: CommonHistoryEvent,
20-
initialEvent?: CommonHistoryEvent,
21-
): string => {
17+
export const getEventGroupName = (event: CommonHistoryEvent): string => {
2218
if (!event) return '';
2319

2420
if (isActivityTaskScheduledEvent(event)) {
@@ -54,13 +50,8 @@ export const getEventGroupName = (
5450
}
5551

5652
if (isWorkflowExecutionUpdateAcceptedEvent(event)) {
57-
if (isWorkflowExecutionUpdateAdmittedEvent(initialEvent)) {
58-
return initialEvent.workflowExecutionUpdateAdmittedEventAttributes
59-
?.request?.input?.name;
60-
} else {
61-
return event.workflowExecutionUpdateAcceptedEventAttributes
62-
?.acceptedRequest?.input?.name;
63-
}
53+
return event.workflowExecutionUpdateAcceptedEventAttributes?.acceptedRequest
54+
?.input?.name;
6455
}
6556

6657
if (isNexusOperationScheduledEvent(event)) {
@@ -111,15 +102,12 @@ export const getEventGroupLabel = (event: CommonHistoryEvent): string => {
111102
}
112103
};
113104

114-
export const getEventGroupDisplayName = (
115-
event: CommonHistoryEvent,
116-
initialEvent?: CommonHistoryEvent,
117-
): string => {
105+
export const getEventGroupDisplayName = (event: CommonHistoryEvent): string => {
118106
if (!event) return '';
119107

120108
if (isLocalActivityMarkerEvent(event)) {
121109
return getSummaryAttribute(event)?.value?.toString() ?? 'Local Activity';
122110
}
123111

124-
return getEventGroupName(event, initialEvent);
112+
return getEventGroupName(event);
125113
};

src/lib/models/event-groups/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ export const groupEvents = (
6969

7070
const createGroups = (event: CommonHistoryEvent) => {
7171
const id = getGroupId(event);
72-
const group = createEventGroup(event, events);
72+
const group = createEventGroup(event);
7373
const pendingActivity = getPendingActivity(event, pendingActivities);
7474
const pendingNexusOperation = getPendingNexusOperation(
7575
event,
@@ -131,7 +131,7 @@ export const groupWorkflowTaskEvents = (
131131

132132
const createGroups = (event: CommonHistoryEvent) => {
133133
const id = getGroupId(event);
134-
const group = createWorkflowTaskGroup(event, events);
134+
const group = createWorkflowTaskGroup(event);
135135

136136
if (group) {
137137
groups[group.id] = group;

0 commit comments

Comments
 (0)