Skip to content

RPC boiler plate and code generation#9693

Merged
spkane31 merged 18 commits into
feature/activity-operator-cmdsfrom
spk/rpc-boilerplate
Apr 7, 2026
Merged

RPC boiler plate and code generation#9693
spkane31 merged 18 commits into
feature/activity-operator-cmdsfrom
spk/rpc-boilerplate

Conversation

@spkane31
Copy link
Copy Markdown
Contributor

@spkane31 spkane31 commented Mar 26, 2026

What changed?

  • Add four new RPC methods to historyservice(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
  • Add new historyservice request/response messages wrapping api repos requests
  • Generated code

Why?

First step towards supporting the four activity operator commands on both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands (Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities (SAA) and Workflow Activities (WA). These will share the same new external workflowservice RPC entrypoints and will be distinguished by the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset already exist for WA with an experimental and soon-to-be deprecated public API. The API handlers added in this PR route to the current experimental implementation. We define Frontend and History service RPC handlers in chasm/lib/activity. Requests for both SAA and WA are routed from Frontend to History using these handlers. The handler in the history service (part of the CHASM ActivityService which is hosted by History service) then inspects the workflow ID and activity ID and dispatches according to whether the request is for an SAA vs WA.

How did you test it?

  • built
  • run locally and tested manually
  • covered by existing tests
  • added new unit test(s)
  • added new functional test(s)

Potential risks

No runtime behavior changes.

@spkane31 spkane31 requested review from a team as code owners March 26, 2026 19:46
@spkane31 spkane31 requested review from bergundy and dandavison March 26, 2026 20:05
@spkane31 spkane31 requested a review from a team as a code owner March 26, 2026 20:33
@spkane31 spkane31 requested review from bergundy and dandavison March 26, 2026 22:52
Copy link
Copy Markdown
Contributor Author

@spkane31 spkane31 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These are all the places I actually changed, the rest are code gen

}


message PauseActivityExecutionRequest {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicating existing requests

option (temporal.server.api.common.v1.api_category).category = API_CATEGORY_STANDARD;
}

rpc PauseActivityExecution(PauseActivityExecutionRequest) returns (PauseActivityExecutionResponse) {
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding new requests

temporal.api.activity.v1.ActivityOptions activity_options = 1;
}

// (-- api-linter: core::0134::request-mask-required=disabled
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

history service APIs routed on resource ID for all four operations

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can have just one handler here in the activity lib that will handle both workflow and standalone activities.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment was not addressed. You can call the old UpdateActivityOptions API that is already implemented from the activity handler.

option (temporal.server.api.common.v1.api_category).category = API_CATEGORY_STANDARD;
}

// UpdateActivityExecutionOptions is called by the client to update the options of an activity
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

historyservice RPCs

Comment thread service/frontend/workflow_handler.go Outdated
return &workflowservice.UnpauseWorkflowExecutionResponse{}, nil
}

func (wh *WorkflowHandler) PauseActivityExecution(
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Stubs that will be implemented later

Comment thread service/history/interfaces/engine.go Outdated
ResetActivity(ctx context.Context, request *historyservice.ResetActivityRequest) (*historyservice.ResetActivityResponse, error)
PauseWorkflowExecution(ctx context.Context, request *historyservice.PauseWorkflowExecutionRequest) (*historyservice.PauseWorkflowExecutionResponse, error)
UnpauseWorkflowExecution(ctx context.Context, request *historyservice.UnpauseWorkflowExecutionRequest) (*historyservice.UnpauseWorkflowExecutionResponse, error)
UpdateActivityExecutionOptions(ctx context.Context, request *historyservice.UpdateActivityExecutionOptionsRequest) (*historyservice.UpdateActivityExecutionOptionsResponse, error)
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding for code generation and mock generation

Copy link
Copy Markdown
Member

@bergundy bergundy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm on the fence on whether workflow and standalone should have different handlers in the history service. In my mind they have a single handler in chasm/lib/activity/handler.go and that dispatches to the history handler. When we port workflow activities, the implementation of that handler would be very simple but for now you can inject a history handler into the activity handler and call the old methods from there.

You can see in my signal-with-start from workflow how to get a history handler injected.

}

rpc PauseActivityExecution(PauseActivityExecutionRequest) returns (PauseActivityExecutionResponse) {
option (temporal.server.api.routing.v1.routing).business_id = "frontend_request.activity_id";
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What about when workflow_id is the business_id?
We can consider making the business_id a repeated field in the annotation and fallback from workflow_id to activity_id. See the protoc plugin that generates the code for how to achieve that.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think you can use resource ID here.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changing business_id to a repeated field is going to fire our breaking change checker, is this a breaking change we are OK with?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a business_id_fallback which is not a breaking change, but if we wanted to add a repeated I can make that change.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed back to a repeated business_id, does this need to be merged into main to prevent issues later on?

temporal.api.activity.v1.ActivityOptions activity_options = 1;
}

// (-- api-linter: core::0134::request-mask-required=disabled
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can have just one handler here in the activity lib that will handle both workflow and standalone activities.

// (-- api-linter: core::0134::request-mask-required=disabled
// (-- api-linter: core::0134::request-resource-required=disabled
message UpdateActivityExecutionOptionsRequest {
option (routing).workflow_id = "frontend_request.resource_id";
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this work? I think the resource ID has a prefix in these cases.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to workflow ID

Comment thread service/frontend/workflow_handler.go Outdated
return &workflowservice.UnpauseWorkflowExecutionResponse{}, nil
}

func (wh *WorkflowHandler) PauseActivityExecution(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put this in chasm/lib/activity/frontend.go as we have done for other activity APIs please.

@spkane31 spkane31 requested a review from bergundy March 30, 2026 18:03
Copy link
Copy Markdown
Contributor

@dandavison dandavison left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I took a stab at writing up my understanding of the PR. (Something like this could be useful as PR description if accurate).

(Just submitting one comment for now; got pulled away.)

--

The overall aim of this PR is to move towards supporting operator API commands (Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities (SAA) and Workflow Activities (WA). These will share the same new external workflowservice RPC entrypoints and will be distinguished according to whether or not the request has a workflow ID.

In fact, for Pause, Unpause, and Reset there is already a WA implementation with an experimental and deprecated public API. The API handlers added in this PR route to the current experimental implementation.

The end result is the following: we define Frontend and History service RPC handlers in chasm/lib/activity. Requests for both SAA and WA are routed from Frontend to History using these handlers. The handler in the history service (part of the CHASM ActivityService which is hosted by History service) then inspects the workflow ID and activity ID and dispatches according to whether the request is for an SAA vs WA. Apart from UpdateOptions, the WA dipatch is to an existing implementation.

) (*workflowservice.PauseActivityExecutionResponse, error) {
if !h.config.Enabled(req.GetNamespace()) {
return nil, ErrStandaloneActivityDisabled
}
Copy link
Copy Markdown
Contributor

@dandavison dandavison Mar 31, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We're on the path for both SAA and WA here, so this means that WA Pause will fail if SAA is disabled. I think that's a bug.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed for all four

@spkane31
Copy link
Copy Markdown
Contributor Author

@dandavison I added your comment into the PR description and corrected some parts, for example updateoptions already exists in workflow activities

@spkane31 spkane31 requested a review from dandavison March 31, 2026 21:59
Reason: frontendReq.GetReason(),
Identity: frontendReq.GetIdentity(),
},
})
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How about in this PR, to prove some of the changes here are correct, you add new variants for the existing functional tests for all 4 operations that test them via the new API? AIUI that should work.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a simple test for each path for success in the happy path (workflow) and failure on the SAA path. With each implementation it will require repeating the existing activity api suites for three scenarios:

  1. the existing activity operator API suite
  2. the new operator API targeted at workflow activity
  3. new operator API targeted at SAA

I omitted these to keep this PR easier to review for now but that will come in future PRs.

Comment thread chasm/lib/activity/frontend.go Outdated
@@ -457,6 +461,100 @@ func activityOptionsFromStartRequest(req *workflowservice.StartActivityExecution
}

// applyActivityOptionsToStartRequest copies normalized values from ActivityOptions
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment got left in the wrong place

@spkane31 spkane31 requested a review from dandavison April 1, 2026 21:32
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add TODOs to validate all of the requests?

Comment thread chasm/lib/activity/handler.go Outdated
}

func newHandler(config *Config, metricsHandler metrics.Handler, logger log.Logger, namespaceRegistry namespace.Registry) *handler {
func newHandler(config *Config, historyClient resource.HistoryClient, metricsHandler metrics.Handler, logger log.Logger, namespaceRegistry namespace.Registry) *handler {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You don't need a history client here, just get the grpc handler here and invoke it directly, skipping the network overhead. I did that in the signal-with-start from workflow WIP branch.

temporal.api.activity.v1.ActivityOptions activity_options = 1;
}

// (-- api-linter: core::0134::request-mask-required=disabled
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This comment was not addressed. You can call the old UpdateActivityOptions API that is already implemented from the activity handler.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As I've mentioned before, no changes are needed in this service.

Comment thread proto/internal/buf.yaml
# example: - temporal/server/api/.../message.proto
- temporal/server/api/persistence/v1/chasm.proto
- temporal/server/api/token/v1/message.proto
# TODO: Remove once this is stable. business_id was intentionally changed from
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All of the exceptions here should be removed ASAP.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This will have to stay until this PR is merged into main, then can be removed in a subsequent PR unless there's another method that I am missing

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Addressed the rest of them in #9806

Comment thread tests/standalone_activity_test.go Outdated

// makeWorkflowFuncForNewAPITests returns a workflow function that runs a single activity with a
// long schedule-to-close timeout and the given retry policy.
func (s *standaloneActivityTestSuite) makeWorkflowFuncForNewAPITests(activityFn ActivityFunctions, retryPolicy *temporal.RetryPolicy) WorkflowFunction {
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't put workflow tests in a file that is supposed to test standalone activities please. Also, I would wait with these tests until there's something implemented.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dandavison asked for them to validate the implementation.

Copy link
Copy Markdown
Contributor

@dandavison dandavison Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do think it makes sense to add tests for the workflow activity portion, since that should be fully functioning. Instead of adding a new file tests/activity_api_execution_test.go is is possible to achieve that coverage by parameterizing the existing tests in activity_api_pause_test.go? I.e. confirming that all the existing test coverage for PauseActivityRequest still holds when using PauseActivityExecutionRequest.

I'm fine with adding stubbed tests for the new Standalone Activity functionality. It's healthy to confirm that the wiring in this PR works even though the full test can come later.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was able to parameterize the existing XXXActivity and XXXActivityExecution operators in the tests, looks cleaner and removes an extra test file

@spkane31 spkane31 requested review from bergundy and fretz12 April 6, 2026 18:53
Comment thread chasm/lib/activity/handler.go
Comment thread tests/activity_api_execution_test.go Outdated

s.WaitForChannel(ctx, activityStartedCh)

_, err = s.FrontendClient().PauseActivity(ctx, &workflowservice.PauseActivityRequest{
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this call PauseActivityExecution instead?

Comment thread chasm/lib/activity/proto/v1/request_response.proto
@spkane31 spkane31 requested a review from fretz12 April 6, 2026 22:34
@spkane31 spkane31 merged commit 5560d42 into feature/activity-operator-cmds Apr 7, 2026
45 checks passed
@spkane31 spkane31 deleted the spk/rpc-boilerplate branch April 7, 2026 21:42
return nil, ErrStandaloneActivityDisabled
}

// TODO: validate request fields (e.g. namespace, identity length)
Copy link
Copy Markdown
Contributor

@dandavison dandavison Apr 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Let's add TODOs to validate that either workflowID or activityID is set before allowing it to be routed to a history shard using "".

spkane31 added a commit that referenced this pull request Apr 21, 2026
* Add four new RPC methods to
`historyservice`(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
* Add new historyservice request/response messages wrapping api repos
requests
* Generated code

First step towards supporting the four activity operator commands on
both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands
(Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities
(SAA) and Workflow Activities (WA). These will share the same new
external workflowservice RPC entrypoints and will be distinguished by
the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset
already exist for WA with an experimental and soon-to-be deprecated
public API. The API handlers added in this PR route to the current
experimental implementation. We define Frontend and History service RPC
handlers in chasm/lib/activity. Requests for both SAA and WA are routed
from Frontend to History using these handlers. The handler in the
history service (part of the CHASM ActivityService which is hosted by
History service) then inspects the workflow ID and activity ID and
dispatches according to whether the request is for an SAA vs WA.

- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

No runtime behavior changes.
spkane31 added a commit that referenced this pull request Apr 21, 2026
* Add four new RPC methods to
`historyservice`(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
* Add new historyservice request/response messages wrapping api repos
requests
* Generated code

First step towards supporting the four activity operator commands on
both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands
(Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities
(SAA) and Workflow Activities (WA). These will share the same new
external workflowservice RPC entrypoints and will be distinguished by
the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset
already exist for WA with an experimental and soon-to-be deprecated
public API. The API handlers added in this PR route to the current
experimental implementation. We define Frontend and History service RPC
handlers in chasm/lib/activity. Requests for both SAA and WA are routed
from Frontend to History using these handlers. The handler in the
history service (part of the CHASM ActivityService which is hosted by
History service) then inspects the workflow ID and activity ID and
dispatches according to whether the request is for an SAA vs WA.

- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

No runtime behavior changes.
spkane31 added a commit that referenced this pull request Apr 28, 2026
* Add four new RPC methods to
`historyservice`(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
* Add new historyservice request/response messages wrapping api repos
requests
* Generated code

First step towards supporting the four activity operator commands on
both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands
(Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities
(SAA) and Workflow Activities (WA). These will share the same new
external workflowservice RPC entrypoints and will be distinguished by
the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset
already exist for WA with an experimental and soon-to-be deprecated
public API. The API handlers added in this PR route to the current
experimental implementation. We define Frontend and History service RPC
handlers in chasm/lib/activity. Requests for both SAA and WA are routed
from Frontend to History using these handlers. The handler in the
history service (part of the CHASM ActivityService which is hosted by
History service) then inspects the workflow ID and activity ID and
dispatches according to whether the request is for an SAA vs WA.

- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

No runtime behavior changes.
spkane31 added a commit that referenced this pull request Apr 29, 2026
* Add four new RPC methods to
`historyservice`(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
* Add new historyservice request/response messages wrapping api repos
requests
* Generated code

First step towards supporting the four activity operator commands on
both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands
(Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities
(SAA) and Workflow Activities (WA). These will share the same new
external workflowservice RPC entrypoints and will be distinguished by
the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset
already exist for WA with an experimental and soon-to-be deprecated
public API. The API handlers added in this PR route to the current
experimental implementation. We define Frontend and History service RPC
handlers in chasm/lib/activity. Requests for both SAA and WA are routed
from Frontend to History using these handlers. The handler in the
history service (part of the CHASM ActivityService which is hosted by
History service) then inspects the workflow ID and activity ID and
dispatches according to whether the request is for an SAA vs WA.

- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

No runtime behavior changes.
spkane31 added a commit that referenced this pull request Apr 29, 2026
* Add four new RPC methods to
`historyservice`(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
* Add new historyservice request/response messages wrapping api repos
requests
* Generated code

First step towards supporting the four activity operator commands on
both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands
(Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities
(SAA) and Workflow Activities (WA). These will share the same new
external workflowservice RPC entrypoints and will be distinguished by
the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset
already exist for WA with an experimental and soon-to-be deprecated
public API. The API handlers added in this PR route to the current
experimental implementation. We define Frontend and History service RPC
handlers in chasm/lib/activity. Requests for both SAA and WA are routed
from Frontend to History using these handlers. The handler in the
history service (part of the CHASM ActivityService which is hosted by
History service) then inspects the workflow ID and activity ID and
dispatches according to whether the request is for an SAA vs WA.

- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

No runtime behavior changes.
spkane31 added a commit that referenced this pull request May 11, 2026
* Add four new RPC methods to
`historyservice`(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
* Add new historyservice request/response messages wrapping api repos
requests
* Generated code

First step towards supporting the four activity operator commands on
both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands
(Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities
(SAA) and Workflow Activities (WA). These will share the same new
external workflowservice RPC entrypoints and will be distinguished by
the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset
already exist for WA with an experimental and soon-to-be deprecated
public API. The API handlers added in this PR route to the current
experimental implementation. We define Frontend and History service RPC
handlers in chasm/lib/activity. Requests for both SAA and WA are routed
from Frontend to History using these handlers. The handler in the
history service (part of the CHASM ActivityService which is hosted by
History service) then inspects the workflow ID and activity ID and
dispatches according to whether the request is for an SAA vs WA.

- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

No runtime behavior changes.
spkane31 added a commit that referenced this pull request May 12, 2026
* Add four new RPC methods to
`historyservice`(PauseActivityExecution,UnpauseActivityExecution,ResetActivityExecution,UpdateACtivityExecutionOptions)
* Add new historyservice request/response messages wrapping api repos
requests
* Generated code

First step towards supporting the four activity operator commands on
both workflow activities and standalone CHASM activities.

The overall aim of this branch is to support operator API commands
(Pause, Unpause, Reset, UpdateOptions) for both Standalone Activities
(SAA) and Workflow Activities (WA). These will share the same new
external workflowservice RPC entrypoints and will be distinguished by
the presence of a workflow ID. Pause, Unpause, UpdateOptions, and Reset
already exist for WA with an experimental and soon-to-be deprecated
public API. The API handlers added in this PR route to the current
experimental implementation. We define Frontend and History service RPC
handlers in chasm/lib/activity. Requests for both SAA and WA are routed
from Frontend to History using these handlers. The handler in the
history service (part of the CHASM ActivityService which is hosted by
History service) then inspects the workflow ID and activity ID and
dispatches according to whether the request is for an SAA vs WA.

- [ ] built
- [ ] run locally and tested manually
- [ ] covered by existing tests
- [ ] added new unit test(s)
- [ ] added new functional test(s)

No runtime behavior changes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants