Skip to content

Commit e29940d

Browse files
authored
Added summary to local activity options (#524)
1 parent 2319df1 commit e29940d

File tree

3 files changed

+26
-1
lines changed

3 files changed

+26
-1
lines changed

src/Temporalio/Worker/WorkflowInstance.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2221,7 +2221,15 @@ public override Task<TResult> ScheduleLocalActivityAsync<TResult>(
22212221
cmd.Attempt = doBackoff.Attempt;
22222222
cmd.OriginalScheduleTime = doBackoff.OriginalScheduleTime;
22232223
}
2224-
instance.AddCommand(new() { ScheduleLocalActivity = cmd });
2224+
var workflowCommand = new WorkflowCommand { ScheduleLocalActivity = cmd };
2225+
if (input.Options.Summary is { } summary)
2226+
{
2227+
workflowCommand.UserMetadata = new()
2228+
{
2229+
Summary = payloadConverter.ToPayload(summary),
2230+
};
2231+
}
2232+
instance.AddCommand(workflowCommand);
22252233
return seq;
22262234
},
22272235
input.Options.CancellationToken ?? instance.CancellationToken);

src/Temporalio/Workflows/LocalActivityOptions.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,13 @@ public class LocalActivityOptions : ICloneable
7272
/// </remarks>
7373
public TimeSpan? LocalRetryThreshold { get; set; }
7474

75+
/// <summary>
76+
/// Gets or sets a single-line fixed summary for this activity that may appear in UI/CLI.
77+
/// This can be in single-line Temporal markdown format.
78+
/// </summary>
79+
/// <remarks>WARNING: This setting is experimental.</remarks>
80+
public string? Summary { get; set; }
81+
7582
/// <summary>
7683
/// Create a shallow copy of these options.
7784
/// </summary>

tests/Temporalio.Tests/Worker/WorkflowWorkerTests.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6234,6 +6234,13 @@ await Workflow.WaitConditionWithOptionsAsync(new(
62346234
Summary = "my-activity",
62356235
});
62366236

6237+
// Local activity
6238+
await Workflow.ExecuteLocalActivityAsync(() => DoNothing(), new()
6239+
{
6240+
StartToCloseTimeout = TimeSpan.FromSeconds(30),
6241+
Summary = "my-local-activity",
6242+
});
6243+
62376244
// Child
62386245
await Workflow.ExecuteChildWorkflowAsync(
62396246
(UserMetadataWorkflow wf) => wf.RunAsync(true),
@@ -6269,6 +6276,9 @@ await ExecuteWorkerAsync<UserMetadataWorkflow>(
62696276
evt.UserMetadata?.Summary?.Data?.ToStringUtf8() == "\"my-wait-condition-timer\"");
62706277
Assert.Contains(history.Events, evt => evt.ActivityTaskScheduledEventAttributes != null &&
62716278
evt.UserMetadata?.Summary?.Data?.ToStringUtf8() == "\"my-activity\"");
6279+
Assert.Contains(history.Events, evt => evt.MarkerRecordedEventAttributes != null &&
6280+
evt.MarkerRecordedEventAttributes.MarkerName == "core_local_activity" &&
6281+
evt.UserMetadata?.Summary?.Data?.ToStringUtf8() == "\"my-local-activity\"");
62726282
Assert.Contains(history.Events, evt => evt.StartChildWorkflowExecutionInitiatedEventAttributes != null &&
62736283
evt.UserMetadata?.Summary?.Data?.ToStringUtf8() == "\"my-child\"" &&
62746284
evt.UserMetadata?.Details?.Data?.ToStringUtf8() == "\"my-child-details\"");

0 commit comments

Comments
 (0)