1.3.0
Get from NuGet and read the README
Highlights
Warn on Unfinished Workflow Handlers
Previously if you had a signal handler or update handler that was not complete when the workflow was marked complete,
it'd silently be ignored/abandoned. Now you will get a warning. Users are encouraged to add
await Workflow.WaitConditionAsync(() => Workflow.AllHandlersFinished);
to the bottom of their workflow to ensure they
have no outstanding handlers. If the previous no-warn situation is preferred, the signal/update attribute has a setting
to just abandon.
New Deterministic Async Helpers
While many Task
based calls are safe for use in workflows (e.g. Task.WhenAll
) there are some that are not (e.g.
Task.Run
). So instead of only having some safe implementations of these and documenting others are safe, we wrapped
multiple in general. Some were added this release, so overall the set is:
Workflow.DelayAsync
- Safe form ofTask.Delay
Workflow.RunTaskAsync
- Safe form ofTask.Run
orTask.Factory.StartNew
Workflow.WhenAllAsync
- Safe form ofTask.WhenAll
Workflow.WhenAnyAsync
- Safe form ofTask.WhenAny
Temporalio.Workflows.Mutex
- Safe form ofSystem.Threading.Mutex
Temporalio.Workflows.Semaphore
- Safe form ofSystem.Threading.Semaphore
orSystem.Threading.SemaphoreSlim
Cloud Operations Client (EXPERIMENTAL)
For making operation-based calls against the cloud, there is now a Temporalio.Client.TemporalCloudOperationsClient
that implements ITemporalCloudOperationsClient
and contains a static ConnectAsync
method that works similar to the
TemporalClient
version. There is a CloudService
property on this client that gives raw access to the gRPC service.
This SDK API and the cloud operations API is experimental and may change in incompatible ways in the future.
Resource-based Worker Auto-tuning (EXPERIMENTAL)
Experimental support for worker tuning has been added along with an implementation for auto-tuning based on available
resources. TemporalWorkerOptions
now has a Tuner
field that can be set with an instance of
Temporalio.Worker.Tuning.IWorkerTuner
. This can be a fixed-size based tuner via WorkerTuner.CreateFixedSize
or based
on resources via WorkerTuner.CreateResourceBased
. Technically the interface can be manually implemented to return
custom ISlotSupplier
s, but only fixed-size and resource-based slot suppliers are currently supported, custom slot
suppliers will appear in the future.
This SDK API is experimental and may change in incompatible ways in the future.
Specific Changes
2024-07-01 - 29753e5 - Expose resource based autotuning (#293)
2024-07-01 - 9ce6b8f - Added exception notation to ConnectAsync method (#295)
2024-07-02 - 0d0334f - Minor test fixes (#296)
2024-07-02 - 72f6fb2 - Warn on unfinished workflow handlers (#294)
2024-07-02 - 8349537 - Add Temporalio.Workflows.Mutex (#298)
2024-07-08 - 4a6d4a0 - Experimental cloud operations client (#302)
2024-07-10 - 1fceb0b - Skip slow versioning test and update vuln dep (#301)
2024-07-12 - fa3867e - Support for workflow ID conflict policy (#304)
2024-07-18 - 23af803 - Use GH ARM runner (#308)
2024-07-19 - 32d1931 - Support query for listing schedules (#310)
2024-07-25 - df3b47a - Command reordering in Core (#315)
2024-08-02 - 64c3140 - Change default schedule catchup window to match API (#319)
2024-08-05 - 62da5d6 - Add workflow id conflict policy to signal with start (#322)
2024-08-05 - ac9c891 - Allow updating search attributes from schedule updates (#320)
2024-08-06 - 2ce6c99 - HTTP CONNECT proxy support (#318)
2024-08-06 - 66574bd - Add rule code and edit signal warning (#317)
2024-08-06 - 6695adf - Add Workflow.RunTaskAsync and Workflow.WhenAllAsync (#313)
2024-08-06 - 9ffc963 - Add features repo test to .NET CI (#324)
2024-08-07 - 89c43d1 - Add omes image build (#323)
2024-08-08 - 0b5a857 - Fix NuGet package smoke test (#326)
2024-08-09 - efdb9a0 - Do not warn about leftover handlers on workflow failure (#329)