193
ctx chasm.MutableContext,
194
request *workflowservice.StartActivityExecutionRequest,
196
>
visibility := chasm.NewVisibilityWithData(
197
>
ctx,
198
>
request.GetSearchAttributes().GetIndexedFields(),
199
>
nil,
200
>
)
201
>
202
>
activity := &Activity{
203
>
ActivityState: &activitypb.ActivityState{
204
>
ActivityType: request.ActivityType,
205
>
TaskQueue: request.GetTaskQueue(),
206
>
ScheduleToCloseTimeout: request.GetScheduleToCloseTimeout(),
207
>
ScheduleToStartTimeout: request.GetScheduleToStartTimeout(),
208
>
StartToCloseTimeout: request.GetStartToCloseTimeout(),
209
>
HeartbeatTimeout: request.GetHeartbeatTimeout(),
210
>
RetryPolicy: request.GetRetryPolicy(),
211
>
Priority: request.Priority,
212
>
StartDelay: request.GetStartDelay(),
213
>
OriginalOptions: &apiactivitypb.ActivityOptions{
214
>
TaskQueue: common.CloneProto(request.GetTaskQueue()),
215
>
ScheduleToCloseTimeout: common.CloneProto(request.GetScheduleToCloseTimeout()),
216
>
ScheduleToStartTimeout: common.CloneProto(request.GetScheduleToStartTimeout()),
217
>
StartToCloseTimeout: common.CloneProto(request.GetStartToCloseTimeout()),
218
>
HeartbeatTimeout: common.CloneProto(request.GetHeartbeatTimeout()),
219
>
RetryPolicy: common.CloneProto(request.GetRetryPolicy()),
220
>
Priority: common.CloneProto(request.GetPriority()),
221
>
StartDelay: common.CloneProto(request.GetStartDelay()),
222
>
},
223
>
},
224
>
LastAttempt: chasm.NewDataField(ctx, &activitypb.ActivityAttemptState{}),
225
>
RequestData: chasm.NewDataField(ctx, &activitypb.ActivityRequestData{
226
>
Input: request.Input,
227
>
Header: request.Header,
228
>
// Dual-write user_metadata to the legacy ActivityRequestData field so that a
229
>
// rolled-back binary (which only reads from here) keeps showing it. The
230
>
// authoritative copy lives on ChasmComponentAttributes.user_metadata; this
231
>
// field will be dropped once a rollback to pre-migration code is no longer
232
>
// supported.
233
>
UserMetadata: request.GetUserMetadata(), //nolint:staticcheck // intentional dual-write for rollback safety
234
>
}),
235
>
Outcome: chasm.NewDataField(ctx, &activitypb.ActivityOutcome{}),
236
>
Visibility: chasm.NewComponentField(ctx, visibility),
237
>
}
238
>
239
>
if md := request.GetUserMetadata(); md != nil {
240
if err := ctx.SetUserMetadata(activity, md); err != nil {
241
return nil, err