Skip to content

Commit dd3ec32

Browse files
authored
fix decision state machine (#531)
1 parent 0d356c6 commit dd3ec32

File tree

2 files changed

+17
-7
lines changed

2 files changed

+17
-7
lines changed

internal/internal_decision_state_machine.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ func (d *activityDecisionStateMachine) getDecision() *s.Decision {
398398
decision := createNewDecision(s.DecisionTypeScheduleActivityTask)
399399
decision.ScheduleActivityTaskDecisionAttributes = d.attributes
400400
return decision
401-
case decisionStateCanceledAfterInitiated:
401+
case decisionStateCanceledAfterInitiated, decisionStateCanceledBeforeInitiated:
402402
decision := createNewDecision(s.DecisionTypeRequestCancelActivityTask)
403403
decision.RequestCancelActivityTaskDecisionAttributes = &s.RequestCancelActivityTaskDecisionAttributes{
404404
ActivityId: d.attributes.ActivityId,
@@ -411,7 +411,7 @@ func (d *activityDecisionStateMachine) getDecision() *s.Decision {
411411

412412
func (d *activityDecisionStateMachine) handleDecisionSent() {
413413
switch d.state {
414-
case decisionStateCanceledAfterInitiated:
414+
case decisionStateCanceledAfterInitiated, decisionStateCanceledBeforeInitiated:
415415
d.moveState(decisionStateCancellationDecisionSent, eventDecisionSent)
416416
default:
417417
d.decisionStateMachineBase.handleDecisionSent()
@@ -438,7 +438,7 @@ func (d *timerDecisionStateMachine) isDone() bool {
438438

439439
func (d *timerDecisionStateMachine) handleDecisionSent() {
440440
switch d.state {
441-
case decisionStateCanceledAfterInitiated:
441+
case decisionStateCanceledAfterInitiated, decisionStateCanceledBeforeInitiated:
442442
d.moveState(decisionStateCancellationDecisionSent, eventDecisionSent)
443443
default:
444444
d.decisionStateMachineBase.handleDecisionSent()
@@ -460,7 +460,7 @@ func (d *timerDecisionStateMachine) getDecision() *s.Decision {
460460
decision := createNewDecision(s.DecisionTypeStartTimer)
461461
decision.StartTimerDecisionAttributes = d.attributes
462462
return decision
463-
case decisionStateCanceledAfterInitiated:
463+
case decisionStateCanceledAfterInitiated, decisionStateCanceledBeforeInitiated:
464464
decision := createNewDecision(s.DecisionTypeCancelTimer)
465465
decision.CancelTimerDecisionAttributes = &s.CancelTimerDecisionAttributes{
466466
TimerId: d.attributes.TimerId,

internal/internal_decision_state_machine_test.go

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,19 +75,25 @@ func Test_TimerStateMachine_CompletedAfterCancel(t *testing.T) {
7575
h := newDecisionsHelper()
7676
d := h.startTimer(attributes)
7777
require.Equal(t, decisionStateCreated, d.getState())
78+
7879
decisions := h.getDecisions(true)
7980
require.Equal(t, decisionStateDecisionSent, d.getState())
8081
require.Equal(t, 1, len(decisions))
8182
require.Equal(t, s.DecisionTypeStartTimer, decisions[0].GetDecisionType())
83+
8284
h.cancelTimer(timerID)
8385
require.Equal(t, decisionStateCanceledBeforeInitiated, d.getState())
84-
require.Equal(t, 0, len(h.getDecisions(true)))
86+
decisions = h.getDecisions(false)
87+
require.Equal(t, 1, len(decisions))
88+
require.Equal(t, s.DecisionTypeCancelTimer, decisions[0].GetDecisionType())
89+
8590
h.handleTimerStarted(timerID)
8691
require.Equal(t, decisionStateCanceledAfterInitiated, d.getState())
8792
decisions = h.getDecisions(true)
8893
require.Equal(t, 1, len(decisions))
8994
require.Equal(t, s.DecisionTypeCancelTimer, decisions[0].GetDecisionType())
9095
require.Equal(t, decisionStateCancellationDecisionSent, d.getState())
96+
9197
h.handleTimerClosed(timerID)
9298
require.Equal(t, decisionStateCompletedAfterCancellationDecisionSent, d.getState())
9399
}
@@ -216,7 +222,9 @@ func Test_ActivityStateMachine_CancelAfterSent(t *testing.T) {
216222
// cancel activity
217223
h.requestCancelActivityTask(activityID)
218224
require.Equal(t, decisionStateCanceledBeforeInitiated, d.getState())
219-
require.Equal(t, 0, len(h.getDecisions(true)))
225+
decisions = h.getDecisions(false)
226+
require.Equal(t, 1, len(decisions))
227+
require.Equal(t, s.DecisionTypeRequestCancelActivityTask, decisions[0].GetDecisionType())
220228

221229
// activity scheduled
222230
h.handleActivityTaskScheduled(1, activityID)
@@ -248,7 +256,9 @@ func Test_ActivityStateMachine_CompletedAfterCancel(t *testing.T) {
248256
// cancel activity
249257
h.requestCancelActivityTask(activityID)
250258
require.Equal(t, decisionStateCanceledBeforeInitiated, d.getState())
251-
require.Equal(t, 0, len(h.getDecisions(true)))
259+
decisions = h.getDecisions(false)
260+
require.Equal(t, 1, len(decisions))
261+
require.Equal(t, s.DecisionTypeRequestCancelActivityTask, decisions[0].GetDecisionType())
252262

253263
// activity scheduled
254264
h.handleActivityTaskScheduled(1, activityID)

0 commit comments

Comments
 (0)