Skip to content

Commit c31f512

Browse files
committed
Added support for standalone activity termination.
1 parent 39cf091 commit c31f512

14 files changed

+527
-35
lines changed

chasm/lib/activity/activity.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,20 @@ func (a *Activity) HandleFailed(ctx chasm.MutableContext, params RecordFailedPar
273273
return &historyservice.RespondActivityTaskFailedResponse{}, nil
274274
}
275275

276+
// RecordTerminatedParams holds parameters for handling termination
277+
type RecordTerminatedParams struct {
278+
Reason string
279+
WorkerIdentity string
280+
}
281+
282+
func (a *Activity) handleTerminated(ctx chasm.MutableContext, params RecordTerminatedParams) (*activitypb.TerminateActivityExecutionResponse, error) {
283+
if err := TransitionTerminated.Apply(a, ctx, params); err != nil {
284+
return nil, err
285+
}
286+
287+
return &activitypb.TerminateActivityExecutionResponse{}, nil
288+
}
289+
276290
func (a *Activity) shouldRetryOnFailure(ctx chasm.Context, failure *failurepb.Failure) (bool, error) {
277291
isRetryable := commonfailure.IsRetryable(failure, a.GetRetryPolicy().GetNonRetryableErrorTypes())
278292
if !isRetryable {

chasm/lib/activity/frontend.go

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,27 @@ func (h *frontendHandler) PollActivityExecution(
103103
return resp.GetFrontendResponse(), err
104104
}
105105

106+
// TerminateActivityExecution terminates a standalone activity execution
107+
func (h *frontendHandler) TerminateActivityExecution(
108+
ctx context.Context,
109+
req *workflowservice.TerminateActivityExecutionRequest,
110+
) (*workflowservice.TerminateActivityExecutionResponse, error) {
111+
namespaceID, err := h.namespaceRegistry.GetNamespaceID(namespace.Name(req.GetNamespace()))
112+
if err != nil {
113+
return nil, err
114+
}
115+
116+
_, err = h.client.TerminateActivityExecution(ctx, &activitypb.TerminateActivityExecutionRequest{
117+
NamespaceId: namespaceID.String(),
118+
FrontendRequest: req,
119+
})
120+
if err != nil {
121+
return nil, err
122+
}
123+
124+
return &workflowservice.TerminateActivityExecutionResponse{}, nil
125+
}
126+
106127
func (h *frontendHandler) validateAndPopulateStartRequest(
107128
req *workflowservice.StartActivityExecutionRequest,
108129
namespaceID namespace.ID,

chasm/lib/activity/gen/activitypb/v1/component_state_token.pb.go

Lines changed: 4 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

chasm/lib/activity/gen/activitypb/v1/request_response.go-helpers.pb.go

Lines changed: 74 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

chasm/lib/activity/gen/activitypb/v1/request_response.pb.go

Lines changed: 116 additions & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)