The Go SDK now supports reapplying Workflow Updates when resetting a workflow execution.
Note: Support for reapplying updates on workflow reset require a server version ≥1.24.0
gRPC request failure metrics (*request_failure) emitted by the Go SDK now include the error status code as a tag under status_code. This can be disabled by setting DisableErrorCodeMetricTags on client.Options.
See also: #1472
This release includes some breaking changes for the experimental features Workflow Update and Worker Versioning. Users of these features should read the release notes carefully before upgrading.
Based on users feedback this release makes some breaking changes to the Workflow Update API used by client and workflows code.
Client.UpdateWorkflowWithOptions and Client.UpdateWorkflow into one API called Client.UpdateWorkflow that takes a client.UpdateWorkflowOptions struct.WaitPolicy in client.UpdateWorkflowOptions was replaced with WaitForStage. WaitForStage is now a required parameter in client.UpdateWorkflowOptions.WaitForStage is now properly respected by Client.UpdateWorkflow. Previously Client.UpdateWorkflow may have returned a handle before the desired WaitForStage was reached.workflow.SetUpdateHandler and workflow.SetUpdateHandlerWithOptions Now require update handles to take a workflow.Context as the first argument.workflow.GetUpdateInfo has been renamed to workflow.GetCurrentUpdateInfo .Worker Versioning is a pre-release, experimental feature that simplifies managing code changes by allowing you to peg workflows to build versions. This change revamps and improves the API and deprecates the existing experience.
The new APIs introduced with worker versioning are:
GetWorkerVersioningRules returns assignment and redirect rules for a given task queue.UpdateWorkerVersioningRules updates assignment and redirect rules for a given task queue.DescribeTaskQueueEnhanced extends the functionality of DescribeTaskQueue with workflow reachability status.A few APIs associated with legacy worker versioning have been deprecated:
UpdateWorkerBuildIdCompatibility replaced by UpdateWorkerVersioningRules.GetWorkerBuildIdCompatibility replaced by GetWorkerVersioningRules.GetWorkerTaskReachability replaced by DescribeTaskQueueEnhanced.Note: These new Worker Versioning APIs require a server version ≥1.24.0
grpc.NewClient instead of grpc.DialInternally the SDK now calls grpc.NewClient instead of grpc.Dial because it was deprecated in google.golang.org/grpc
This should be a transparent change to most users, google.golang.org/grpc does call out one subtle difference:
One subtle difference between NewClient and Dial and DialContext is that the former uses "dns" as the default name resolver, while the latter use "passthrough" for backward compatibility. This distinction should not matter to most users, but could matter to legacy users that specify a custom dialer and expect it to receive the target string directly.
Some deprecated dial options like WithBlock, WithTimeout, WithReturnConnectionError, and FailOnNonTempDialError are now ignored by grpc.NewClient. See https://github.com/grpc/grpc-go/blob/master/Documentation/anti-patterns.md for more context.
See also: #1488
TestWorkflowEnvironmentIn previous version of the Go SDK when a child workflow running in the test environment tried to continue as new the parent workflow would receive an error from the child workflow. Now the child workflow properly continues as new and the parent workflow will not receive an error.
See also: #1437
2024-04-12 - c4bf074 - datadog: Add tracer option to check error eligibility in the span (#1438)
2024-04-17 - 69bc6c3 - Update reapply (#1436)
2024-04-23 - 93c08b0 - Ensure consistent labels for rpc metrics (#1444)
2024-04-24 - 8361067 - Disable UTF8-invalid tests when running CLI dev server (#1448)
2024-04-30 - fe44a47 - Improve error message for missing body (#1451)
2024-05-01 - d051de6 - Option to redirect devserver stdout/stderr to a file (#1452)
2024-05-09 - 386a6d3 - Require update handler to have a context (#1457)
2024-05-09 - ded70a3 - Add support for NextRetryDelay for local activities (#1456)
2024-05-10 - 81cd5dc - Fix QueryRejectCondition parameter in QueryWorkflowWithOptions (#1461)
2024-05-10 - c69831e - Remove DisableStickyExecution (#1464)
2024-05-14 - 3b68c6d - Add request failure code label to metrics (#1472)
2024-05-17 - aa17647 - get-free-port: prevent duplicate ports on Linux (#1478)
2024-05-21 - 06c0ebc - Add SetFailureConverter to the activity and workflow test environments (#1484)
2024-05-21 - 222d4cf - Fix gauge metrics with latest otel SDK (#1482)
2024-05-21 - 725b428 - Only record activity_succeed_endtoend_latency on success (#1481)
2024-05-21 - fb06909 - Send original update request back in response (#1480)
2024-05-22 - bf2c79d - Switch to using Float64Gauge in otel integration (#1485)
2024-05-24 - a6ca6a5 - Replace grpc.Dial with grpc.NewClient (#1488)
2024-05-28 - bcfa85a - Workflow update client API refactor (#1489)
2024-05-31 - 486c233 - Minor logger improovments (#1495)
2024-05-31 - 4dd1ed8 - Fix bugs when using a custom FailureConverter in tests (#1490)
2024-06-06 - 0df7ad5 - Bump GitHub Actions (#1503)
2024-06-06 - 17193aa - Manually copy proxy options (#1502)
2024-06-06 - 5c171b7 - Make backfill tests more robust (#1504)
2024-06-06 - 9ecb2a4 - Change GetUpdateInfo to GetCurrentUpdateInfo (#1505)
2024-06-06 - bf29944 - testsuite.StartDevServer: Respect timeout during dial (#1498)
2024-06-07 - c73a007 - Support the new versioning API (#1494)
2024-06-10 - d4ff1f6 - Fix flake in TestUpdateAdmittedNoWorker (#1506)
2024-06-12 - 38fe879 - Always run all the versioning tests (#1510)
2024-06-12 - a7c8208 - Allow SDK to handle speculative WFT with command events (#1509)
2024-06-13 - 2720358 - Improve CI action (#1512)
2024-06-13 - 30a29ce - Add integration test for reset with update events (#1507)
2024-06-13 - 4c8b9e1 - Update API to v1.34.0 (#1511)
Fixes a bug with typed search attributes for child workflows not being properly applied to new child workflow executions.
2024-03-12 - 9c42221 - Make client Dial context controlable by callers (#1416) 2024-03-13 - 03d7704 - Update readme badge to github action (#1422) 2024-03-18 - 3da09e0 - Switch github runner to macos-14 (m1) (#1421) 2024-03-25 - 00fd4cd - Remove experimental flag from Start Delay (#1428) 2024-04-04 - 0cfdccb - Clarified description of workflow.Now (#1430) 2024-04-08 - 108aac8 - Fix support for typed search attributes in child workflow options (#1434) 2024-04-09 - a02b92e - Add support for unit testing child workflows that call continue-as-new (#1437) 2024-04-10 - 0007eee - Bump api-go to 1.32.0 to include Versioning 2 API changes (#1439)
Previously, search attributes were untyped maps with string keys and interface values. This causes ambiguity on what types a search attribute key represents and leads to errors. Also, the way search attributes were created or upserted allowed mistakes to occur and was not clear to the server exactly what was expected.
TypedSearchAttributes to client.ScheduleOptions and deprecated SearchAttributesGetTypedSearchAttributes to workflow and deprecated WorkflowInfo.SearchAttributesTypedSearchAttributes to client.StartWorkflowOptions and deprecated SearchAttributesSearchAttributes collection with methods and constructorSearchAttributeKey and SearchAttributeUpdate interfacesSearchAttributeKeyX types and constructors for typed keysgogo/protobuf has been replaced with Google's official proto compiler.
Users may notice:
time.Time in proto structs will now be timestamppb.Timestamptime.Duration will now be durationpb.DurationPrior to SDK version v1.26.0 our protobuf code generator allowed invalid UTF-8 data to be stored as proto strings. This isn't actually allowed by the proto3 spec, so if you're using our SDK and think you may store arbitrary binary data in our strings you should set -tags protolegacy when building against our SDK.
Example:
$ go build -tags protolegacy myworker/main.go
If you see an error like grpc: error unmarshalling request: string field contains invalid UTF-8 then you will need to enable this when building your code.
If you're unsure then you should specify it anyways as there's no harm in doing so unless you relied on the protobuf compiler to ensure all strings were valid UTF-8.
HTTP/2 Keep alive is now enabled by default. This should help avoid request timeouts on previously idle connections. If users want to revert to the old behavior they can set ConnectionOptions.DisableKeepAliveCheck to false.
See also: https://github.com/temporalio/sdk-go/pull/1299
As part of typed search attributes most old untyped search attributes API were deprecated, but will continue to function as they always have been going forward some breaking changes were required.
See also: https://github.com/temporalio/sdk-go/pull/1368
Breaking changes include:
TypedSearchAttributes to client.ScheduleWorkflowAction and 💥removed SearchAttributes and added UntypedSearchAttributes (needed until https://github.com/temporalio/temporal/issues/4787 is fixed)Workflow update handlers are now processed eagerly before the main workflow function instead of after. This means coroutine ordering can change causing non-determinism. When calling workflow.SetUpdateHandler and an update was received during that workflow task, and no other handlers have been set before, workflow.SetUpdateHandler will trigger the queued update handlers to run.
Fixed a bug in the workflow test suite that would cause workflow and activity mocks that shared the same name to override each other. If your test was doing this and asserting on the number of times a mock was called you may notice a change in behavior as activity and workflow mocks are now stored in separate maps.
see also: https://github.com/temporalio/sdk-go/pull/1371
Due to this change in update processing , rolling back the SDK to a pre v1.26.0 version may cause workflow using workflow update (receiving update requests or registering an update handler) to get stuck with non determinism errors until they roll forward again.
Tag workflow_task_execution_failed metric with error type to help differentiate workflow task failures caused by non determinism from other task failures
Dump coroutine stack on deadlock timeout. When the SDK detects a deadlock it will now try to dump the stack trace of the coroutine it detected as deadlocked.
Add deterministic range over map helper. Iterating over Go's standard maps is not deterministic and therefore cannot be done in a workflow context. The SDK now includes helpers DeterministicKeys and DeterministicKeysFunc to get the keys of a map in a deterministic order.
2023-10-13 - 06c90fb - Propagate Baggage in OTEL tracing interceptor (#1260)
2023-10-26 - 3cccbdd - Fix error documentation typos and enum values (#1276)
2023-10-31 - 0352634 - Add EmitDefault option for ProtoJson converter (#1286)
2023-11-08 - 0e432a9 - Add context propagators to local activity executions through test environments (#1291)
2023-11-08 - 4663bab - Fix typo in documentation (#1288)
2023-11-17 - 8068455 - Delete .github/workflows/semgrep.yml (#1294)
2023-11-21 - f9d73bf - Replace gogo protobuf (#1256)
2023-11-22 - 7db0d87 - Use the official features repo (#1298)
2023-11-27 - 745e948 - Add NotBefore function to testsuite.MockCallWrapper (#1301)
2023-11-27 - f5a0127 - Edit docstrings (#1302)
2023-11-28 - 33e8360 - Multi-platform CI and Makefile removal (#1293)
2023-11-28 - 70c8400 - Fix doc typo (#1305)
2023-11-28 - 8f2a3c8 - Use our new JSON coding stack (#1307)
2023-11-29 - 288a04f - Bump api-go version to fix Payload marshaling (#1308)
2023-11-29 - 89c8dba - Enabled keep alive by default (#1299)
2023-11-30 - 266e049 - Fix race in WaitSignalReturnParam (#1309)
2023-11-30 - 802d32e - Run cloud tests in series to avoid wfID conflict (#1311)
2023-11-30 - a309e59 - Tag workflow_task_execution_failed with error type (#1295)
2023-12-04 - 5fdbecc - Handle updates immediately when registered (#1306)
2023-12-04 - 838121a - Don't run workflowCancelHandler in test harness (#1296)
2023-12-04 - 987379d - Make remoteDataConverter implement PayloadCodec (#1303)
2023-12-04 - eb05747 - Fix flaky test (#1314)
2023-12-07 - 5d5b9c4 - Fix typo in docstring (#1317)
2023-12-14 - 7a9640d - Fix typo in update docstring (#1321)
2023-12-15 - f823b64 - Cleanup dead code and incorrect use of go routine in context pkg (#1320)
2023-12-27 - 95fe6ab - Fix bad Update mock in NamespaceClient (#1328)
2023-12-30 - 5a64898 - Failed Read-Only check causes a WFT failure in validator (#1329)
2024-01-04 - cb1d35e - Update dd-trace-go.v1 (#1332)
2024-01-05 - 2f61d2f - Add last BuildID to workflow info (#1335)
2024-01-07 - 7fc12d3 - Add otel metrics support (#1336)
2024-01-08 - 6244097 - Include update state machine fields in panic (#1327)
2024-01-08 - c1744ee - Bump go-api version to fix protojson vuln (#1333)
2024-01-09 - 1fe10d5 - Fix flaky build id issue (#1338)
2024-01-09 - 5ca9a4d - Add deterministic range over map helper (#1340)
2024-01-13 - fac7f7f - Update WorkflowRun.Get Doc String (#1346)
2024-01-16 - 0f12265 - Replace go.uber.org/atomic with sync/atomic (#1344)
2024-01-16 - 41d2288 - Evict workflow from cache on RespondTaskCompleted failure (#1358)
2024-01-16 - 54e131e - Make dataConverterWithoutDeadlock context aware (#1348)
2024-01-17 - 14103e0 - regenerate mocks with latest mockery (#1361)
2024-01-17 - 50ab40d - regenerate mocks under client to allow dynamic returns based on arguments (#1353)
2024-01-17 - 55c39b5 - Disable eager activities if tq rate limits is set (#1350)
2024-01-17 - b50cce9 - Replace some Sprintfs with string concatenation (#1345)
2024-01-17 - e3a3d95 - Always yield when registering update handles (#1325)
2024-01-19 - 14ddd7b - Dump coroutine stack on deadlock timeout (#1356)
2024-01-22 - 171504d - Fail task on unknown event when HistoryEvent.worker_may_ignore is false (#1363)
2024-01-22 - 30b2681 - Exit coroutine in order (#1362)
2024-01-22 - 94a5f5f - Allow client to suggest delay until next retry (#1319)
2024-01-26 - 536b875 - Exclude codes.DeadlineExceeded from the list of retryable gRPC codes (#1366)
2024-02-01 - 57b6679 - Typed Search Attributes (#1368)
2024-02-01 - 86764f8 - Handle nil valuePtr case in update handler Get (#1373)
2024-02-01 - a7c9528 - Prefix some errors with rule identifiers (#1281)
2024-02-01 - e2bec16 - Fix testing suite name conflict for workflow and activity (#887) (#1371)
2024-02-02 - 5c8c9a3 - Release Go SDK version 1.26.0-RC.1 (#1374)
2024-02-05 - 262766c - Fix data race on desiredWorkflowCacheSize (#1377)
2024-02-08 - 246a7d2 - Rectify the default values for keep-alive timeout (#1381)
2024-02-08 - 72a5b6f - workflowcheck: bump golang.org/x/tools from 0.13.0 to 0.17.0 (#1379)
2024-02-13 - d39fa9d - Add support for typed search attributes to the test suite (#1378)
2024-02-14 - 30da688 - Introduce a new constructor to override retry policy in ContinueAsNewError (#1383)
2024-02-20 - 5621b7f - Clarify OnUpsertTypedSearchAttributes (#1391)
2024-02-20 - 65aae9b - Document GetSearchAttributes is not supported on cloud (#1388)
2024-02-21 - 6d4ec2d - Make it possible to cancel workflows by ID when testing (#1392)
2024-02-22 - a71e4c4 - Update CI to Go lang 1.22 (#1389)
2024-02-27 - 34ef0a7 - Only set SDKPriorityUpdateHandling if workflow update is being used (#1398)
2024-02-27 - 54b2336 - Add note NextRetryDelay is not supported on the server (#1400)
2024-02-29 - d9a574d - Update workflow check with new function added in the SDK (#1403)
2024-03-01 - efabf46 - Update api-go to allow invalid UTF-8 in proto strings (#1407)
2024-03-08 - 1052374 - API key support via credentials abstraction (#1409)
2024-03-11 - 3b9c572 - Override API key with user metadata (#1419)
2024-03-11 - 682cca0 - Update both protobuf dependencies (#1417)
Note: This is a release candidate, we encourage users to test out this release to be prepared for upcoming changes and to report any bugs.
Previously, search attributes were untyped maps with string keys and interface values. This causes ambiguity on what types a search attribute key represents and leads to errors. Also, the way search attributes were created or upserted allowed mistakes to occur and was not clear to the server exactly what was expected.
TypedSearchAttributes to client.ScheduleOptions and deprecated SearchAttributesGetTypedSearchAttributes to workflow and deprecated WorkflowInfo.SearchAttributesTypedSearchAttributes to client.StartWorkflowOptions and deprecated SearchAttributesSearchAttributes collection with methods and constructorSearchAttributeKey and SearchAttributeUpdate interfacesSearchAttributeKeyX types and constructors for typed keysgogo/protobuf has been replaced with Google's official proto compiler.
Users may notice:
time.Time in proto structs will now be timestamppb.Timestamptime.Duration will now be durationpb.DurationPrior to SDK version v1.26.0 our protobuf code generator allowed invalid UTF-8 data to be stored as proto strings. This isn't actually allowed by the proto3 spec, so if you're using our SDK and think you may store arbitrary binary data in our strings you should set -tags protolegacy when building against our SDK.
Example:
$ go build -tags protolegacy myworker/main.go
If you see an error like grpc: error unmarshalling request: string field contains invalid UTF-8 then you will need to enable this when building your code.
If you're unsure then you should specify it anyways as there's no harm in doing so unless you relied on the protobuf compiler to ensure all strings were valid UTF-8.
HTTP/2 Keep alive is now enabled by default. This should help avoid request timeouts on previously idle connections. If users want to revert to the old behavior they can set ConnectionOptions.DisableKeepAliveCheck to false.
See also: https://github.com/temporalio/sdk-go/pull/1299
As part of typed search attributes most old untyped search attributes API were deprecated, but will continue to function as they always have been going forward some breaking changes were required.
See also: https://github.com/temporalio/sdk-go/pull/1368
Breaking changes include:
TypedSearchAttributes to client.ScheduleWorkflowAction and 💥removed SearchAttributes and added UntypedSearchAttributes (needed until https://github.com/temporalio/temporal/issues/4787 is fixed)Workflow update handlers are now processed eagerly before the main workflow function instead of after. When calling workflow.SetUpdateHandler and an update was received during that workflow task, and no other handlers have been set before, workflow.SetUpdateHandler will trigger the queued update handlers to run.
Fixed a bug in the workflow test suite that would cause workflow and activity mocks that shared the same name to override each other. If your test was doing this and asserting on the number of times a mock was called you may notice a change in behavior as activity and workflow mocks are now stored in separate maps.
see also: https://github.com/temporalio/sdk-go/pull/1371
Due to this change in update processing , rolling back the SDK to a pre v1.26.0 version may cause workflow using workflow update (receiving update requests or registering an update handler) to get stuck with non determinism errors until they roll forward again.
Tag workflow_task_execution_failed metric with error type to help differentiate workflow task failures caused by non determinism from other task failures
Dump coroutine stack on deadlock timeout. When the SDK detects a deadlock it will now try to dump the stack trace of the coroutine it detected as deadlocked.
Add deterministic range over map helper. Iterating over Go's standard maps is not deterministic and therefore cannot be done in a workflow context. The SDK now includes helpers DeterministicKeys and DeterministicKeysFunc to get the keys of a map in a deterministic order.
2023-10-13 - 06c90fb - Propagate Baggage in OTEL tracing interceptor (#1260)
2023-10-26 - 3cccbdd - Fix error documentation typos and enum values (#1276)
2023-10-31 - 0352634 - Add EmitDefault option for ProtoJson converter (#1286)
2023-11-08 - 0e432a9 - Add context propagators to local activity executions through test environments (#1291)
2023-11-08 - 4663bab - Fix typo in documentation (#1288)
2023-11-17 - 8068455 - Delete .github/workflows/semgrep.yml (#1294)
2023-11-21 - f9d73bf - Replace gogo protobuf (#1256)
2023-11-22 - 7db0d87 - Use the official features repo (#1298)
2023-11-27 - 745e948 - Add NotBefore function to testsuite.MockCallWrapper (#1301)
2023-11-27 - f5a0127 - Edit docstrings (#1302)
2023-11-28 - 33e8360 - Multi-platform CI and Makefile removal (#1293)
2023-11-28 - 70c8400 - Fix doc typo (#1305)
2023-11-28 - 8f2a3c8 - Use our new JSON coding stack (#1307)
2023-11-29 - 288a04f - Bump api-go version to fix Payload marshaling (#1308)
2023-11-29 - 89c8dba - Enabled keep alive by default (#1299)
2023-11-30 - 266e049 - Fix race in WaitSignalReturnParam (#1309)
2023-11-30 - 802d32e - Run cloud tests in series to avoid wfID conflict (#1311)
2023-11-30 - a309e59 - Tag workflow_task_execution_failed with error type (#1295)
2023-12-04 - 5fdbecc - Handle updates immediately when registered (#1306)
2023-12-04 - 838121a - Don't run workflowCancelHandler in test harness (#1296)
2023-12-04 - 987379d - Make remoteDataConverter implement PayloadCodec (#1303)
2023-12-04 - eb05747 - Fix flaky test (#1314)
2023-12-07 - 5d5b9c4 - Fix typo in docstring (#1317)
2023-12-14 - 7a9640d - Fix typo in update docstring (#1321)
2023-12-15 - f823b64 - Cleanup dead code and incorrect use of go routine in context pkg (#1320)
2023-12-27 - 95fe6ab - Fix bad Update mock in NamespaceClient (#1328)
2023-12-30 - 5a64898 - Failed Read-Only check causes a WFT failure in validator (#1329)
2024-01-04 - cb1d35e - Update dd-trace-go.v1 (#1332)
2024-01-05 - 2f61d2f - Add last BuildID to workflow info (#1335)
2024-01-07 - 7fc12d3 - Add otel metrics support (#1336)
2024-01-08 - 6244097 - Include update state machine fields in panic (#1327)
2024-01-08 - c1744ee - Bump go-api version to fix protojson vuln (#1333)
2024-01-09 - 1fe10d5 - Fix flaky build id issue (#1338)
2024-01-09 - 5ca9a4d - Add deterministic range over map helper (#1340)
2024-01-13 - fac7f7f - Update WorkflowRun.Get Doc String (#1346)
2024-01-16 - 0f12265 - Replace go.uber.org/atomic with sync/atomic (#1344)
2024-01-16 - 41d2288 - Evict workflow from cache on RespondTaskCompleted failure (#1358)
2024-01-16 - 54e131e - Make dataConverterWithoutDeadlock context aware (#1348)
2024-01-17 - 14103e0 - regenerate mocks with latest mockery (#1361)
2024-01-17 - 50ab40d - regenerate mocks under client to allow dynamic returns based on arguments (#1353)
2024-01-17 - 55c39b5 - Disable eager activities if tq rate limits is set (#1350)
2024-01-17 - b50cce9 - Replace some Sprintfs with string concatenation (#1345)
2024-01-17 - e3a3d95 - Always yield when registering update handles (#1325)
2024-01-19 - 14ddd7b - Dump coroutine stack on deadlock timeout (#1356)
2024-01-22 - 171504d - Fail task on unknown event when HistoryEvent.worker_may_ignore is false (#1363)
2024-01-22 - 30b2681 - Exit coroutine in order (#1362)
2024-01-22 - 94a5f5f - Allow client to suggest delay until next retry (#1319)
2024-01-26 - 536b875 - Exclude codes.DeadlineExceeded from the list of retryable gRPC codes (#1366)
2024-02-01 - 57b6679 - Typed Search Attributes (#1368)
2024-02-01 - 86764f8 - Handle nil valuePtr case in update handler Get (#1373)
2024-02-01 - a7c9528 - Prefix some errors with rule identifiers (#1281)
2024-02-01 - e2bec16 - Fix testing suite name conflict for workflow and activity (#887) (#1371)
2024-02-02 - 5c8c9a3 - Release Go SDK version 1.26.0-RC.1 (#1374)
2024-02-05 - 262766c - Fix data race on desiredWorkflowCacheSize (#1377)
2024-02-08 - 246a7d2 - Rectify the default values for keep-alive timeout (#1381)
2024-02-08 - 72a5b6f - workflowcheck: bump golang.org/x/tools from 0.13.0 to 0.17.0 (#1379)
2024-02-13 - d39fa9d - Add support for typed search attributes to the test suite (#1378)
2024-02-14 - 30da688 - Introduce a new constructor to override retry policy in ContinueAsNewError (#1383)
2024-02-20 - 5621b7f - Clarify OnUpsertTypedSearchAttributes (#1391)
2024-02-20 - 65aae9b - Document GetSearchAttributes is not supported on cloud (#1388)
2024-02-21 - 6d4ec2d - Make it possible to cancel workflows by ID when testing (#1392)
2024-02-22 - a71e4c4 - Update CI to Go lang 1.22 (#1389)
2024-02-27 - 34ef0a7 - Only set SDKPriorityUpdateHandling if workflow update is being used (#1398)
2024-02-27 - 54b2336 - Add note NextRetryDelay is not supported on the server (#1400)
2024-02-29 - d9a574d - Update workflow check with new function added in the SDK (#1403)
2024-03-01 - efabf46 - Update api-go to allow invalid UTF-8 in proto strings (#1407)
Note: This is a release candidate, we encourage users to test out this release to be prepared for upcoming changes and to report any bugs.
Previously, search attributes were untyped maps with string keys and interface values. This causes ambiguity on what types a search attribute key represents and leads to errors. Also, the way search attributes were created or upserted allowed mistakes to occur and was not clear to the server exactly what was expected.
TypedSearchAttributes to client.ScheduleOptions and deprecated SearchAttributesGetTypedSearchAttributes to workflow and deprecated WorkflowInfo.SearchAttributesTypedSearchAttributes to client.StartWorkflowOptions and deprecated SearchAttributesSearchAttributes collection with methods and constructorSearchAttributeKey and SearchAttributeUpdate interfacesSearchAttributeKeyX types and constructors for typed keysgogo/protobuf has been replaced with Google's official proto compiler.
Users may notice:
time.Time in proto structs will now be timestamppb.Timestamptime.Duration will now be durationpb.DurationHTTP/2 Keep alive is not enabled by default. This should help avoid request timeouts on previously idle connections. If users want to revert to the old behaviour they can set ConnectionOptions.DisableKeepAliveCheck to false.
See also: https://github.com/temporalio/sdk-go/pull/1299
As part of typed search attributes most old untyped search attributes API were deprecated, but will continue to function as they always have been going forward some breaking changes were required.
Breaking changes include:
TypedSearchAttributes to client.ScheduleWorkflowAction and 💥removed SearchAttributes and added UntypedSearchAttributes (needed until https://github.com/temporalio/temporal/issues/4787 is fixed)Workflow update handlers are now processed eagerly before the main workflow function instead of after. When calling workflow.SetUpdateHandler and an update was received during that workflow task, and no other handlers have been set before, workflow.SetUpdateHandler will trigger the queued update handlers to run.
Fixed a bug in the workflow test suite that would cause workflow and activity mocks that shared the same name to override each other. If your test was doing this and asserting on the number of times a mock was called you may notice a change in behavior as activity and workflow mocks are now stored in separate maps.
see also: https://github.com/temporalio/sdk-go/pull/1371
Due to this change in update processing , rolling back the SDK to a pre v1.26.0 version may cause workflow using workflow update (receiving update requests or registering an update handler) to get stuck with non determinism errors until they roll forward again.
Tag workflow_task_execution_failed metric with error type to help differentiate workflow task failures caused by non determinism from other task failures
Dump coroutine stack on deadlock timeout. When the SDK detects a deadlock it will now try to dump the stack trace of the coroutine it detected as deadlocked.
Add deterministic range over map helper. Iterating over Go's standard maps is not deterministic and therefore cannot be done in a workflow context. The SDK now includes helpers DeterministicKeys and DeterministicKeysFunc to get the keys of a map in a deterministic order.
2023-10-13 - 06c90fb - Propagate Baggage in OTEL tracing interceptor (#1260)
2023-10-26 - 3cccbdd - Fix error documentation typos and enum values (#1276)
2023-10-31 - 0352634 - Add EmitDefault option for ProtoJson converter (#1286)
2023-11-08 - 0e432a9 - Add context propagators to local activity executions through test environments (#1291)
2023-11-08 - 4663bab - Fix typo in documentation (#1288)
2023-11-17 - 8068455 - Delete .github/workflows/semgrep.yml (#1294)
2023-11-21 - f9d73bf - Replace gogo protobuf (#1256)
2023-11-22 - 7db0d87 - Use the official features repo (#1298)
2023-11-27 - 745e948 - Add NotBefore function to testsuite.MockCallWrapper (#1301)
2023-11-27 - f5a0127 - Edit docstrings (#1302)
2023-11-28 - 33e8360 - Multi-platform CI and Makefile removal (#1293)
2023-11-28 - 70c8400 - Fix doc typo (#1305)
2023-11-28 - 8f2a3c8 - Use our new JSON coding stack (#1307)
2023-11-29 - 288a04f - Bump api-go version to fix Payload marshaling (#1308)
2023-11-29 - 89c8dba - Enabled keep alive by default (#1299)
2023-11-30 - 266e049 - Fix race in WaitSignalReturnParam (#1309)
2023-11-30 - 802d32e - Run cloud tests in series to avoid wfID conflict (#1311)
2023-11-30 - a309e59 - Tag workflow_task_execution_failed with error type (#1295)
2023-12-04 - 5fdbecc - Handle updates immediately when registered (#1306)
2023-12-04 - 838121a - Don't run workflowCancelHandler in test harness (#1296)
2023-12-04 - 987379d - Make remoteDataConverter implement PayloadCodec (#1303)
2023-12-04 - eb05747 - Fix flaky test (#1314)
2023-12-07 - 5d5b9c4 - Fix typo in docstring (#1317)
2023-12-14 - 7a9640d - Fix typo in update docstring (#1321)
2023-12-15 - f823b64 - Cleanup dead code and incorrect use of go routine in context pkg (#1320)
2023-12-27 - 95fe6ab - Fix bad Update mock in NamespaceClient (#1328)
2023-12-30 - 5a64898 - Failed Read-Only check causes a WFT failure in validator (#1329)
2024-01-04 - cb1d35e - Update dd-trace-go.v1 (#1332)
2024-01-05 - 2f61d2f - Add last BuildID to workflow info (#1335)
2024-01-07 - 7fc12d3 - Add otel metrics support (#1336)
2024-01-08 - 6244097 - Include update state machine fields in panic (#1327)
2024-01-08 - c1744ee - Bump go-api version to fix protojson vuln (#1333)
2024-01-09 - 1fe10d5 - Fix flaky build id issue (#1338)
2024-01-09 - 5ca9a4d - Add deterministic range over map helper (#1340)
2024-01-13 - fac7f7f - Update WorkflowRun.Get Doc String (#1346)
2024-01-16 - 0f12265 - Replace go.uber.org/atomic with sync/atomic (#1344)
2024-01-16 - 41d2288 - Evict workflow from cache on RespondTaskCompleted failure (#1358)
2024-01-16 - 54e131e - Make dataConverterWithoutDeadlock context aware (#1348)
2024-01-17 - 14103e0 - regenerate mocks with latest mockery (#1361)
2024-01-17 - 50ab40d - regenerate mocks under client to allow dynamic returns based on arguments (#1353)
2024-01-17 - 55c39b5 - Disable eager activities if tq rate limits is set (#1350)
2024-01-17 - b50cce9 - Replace some Sprintfs with string concatenation (#1345)
2024-01-17 - e3a3d95 - Always yield when registering update handles (#1325)
2024-01-19 - 14ddd7b - Dump coroutine stack on deadlock timeout (#1356)
2024-01-22 - 171504d - Fail task on unknown event when HistoryEvent.worker_may_ignore is false (#1363)
2024-01-22 - 30b2681 - Exit coroutine in order (#1362)
2024-01-22 - 94a5f5f - Allow client to suggest delay until next retry (#1319)
2024-01-26 - 536b875 - Exclude codes.DeadlineExceeded from the list of retryable gRPC codes (#1366)
2024-02-01 - 57b6679 - Typed Search Attributes (#1368)
2024-02-01 - 86764f8 - Handle nil valuePtr case in update handler Get (#1373)
2024-02-01 - a7c9528 - Prefix some errors with rule identifiers (#1281)
2024-02-01 - e2bec16 - Fix testing suite name conflict for workflow and activity (#887) (#1371)
2024-02-02 - 5c8c9a3 - Release Go SDK version 1.26.0-RC.1 (#1374)
2024-02-05 - 262766c - Fix data race on desiredWorkflowCacheSize (#1377)
2024-02-08 - 246a7d2 - Rectify the default values for keep-alive timeout (#1381)
2024-02-08 - 72a5b6f - workflowcheck: bump golang.org/x/tools from 0.13.0 to 0.17.0 (#1379)
2024-02-13 - d39fa9d - Add support for typed search attributes to the test suite (#1378)
2024-02-14 - 30da688 - Introduce a new constructor to override retry policy in ContinueAsNewError (#1383)
2024-02-20 - 5621b7f - Clarify OnUpsertTypedSearchAttributes (#1391)
2024-02-20 - 65aae9b - Document GetSearchAttributes is not supported on cloud (#1388)
2024-02-21 - 6d4ec2d - Make it possible to cancel workflows by ID when testing (#1392)
2024-02-22 - a71e4c4 - Update CI to Go lang 1.22 (#1389)
2024-02-27 - 34ef0a7 - Only set SDKPriorityUpdateHandling if workflow update is being used (#1398)
2024-02-27 - 54b2336 - Add note NextRetryDelay is not supported on the server (#1400)
https://github.com/temporalio/sdk-go/releases/tag/v1.26.0-rc.1
Publishing a new tag to fix a mismatch in the sum.db checksum
Note: This is a release candidate, we encourage users to test out this release to be prepared for upcoming changes and to report any bugs.
Previously, search attributes were untyped maps with string keys and interface values. This causes ambiguity on what types a search attribute key represents and leads to errors. Also, the way search attributes were created or upserted allowed mistakes to occur and was not clear to the server exactly what was expected.
TypedSearchAttributes to client.ScheduleOptions and deprecated SearchAttributesGetTypedSearchAttributes to workflow and deprecated WorkflowInfo.SearchAttributesTypedSearchAttributes to client.StartWorkflowOptions and deprecated SearchAttributesSearchAttributes collection with methods and constructorSearchAttributeKey and SearchAttributeUpdate interfacesSearchAttributeKeyX types and constructors for typed keysgogo/protobuf has been replaced with Google's official proto compiler.
Users may notice:
time.Time in proto structs will now be timestamppb.Timestamptime.Duration will now be durationpb.DurationAs part of typed search attributes most old untyped search attributes API were deprecated, but will continue to function as they always have been going forward some breaking changes were required.
Breaking changes include:
TypedSearchAttributes to client.ScheduleWorkflowAction and 💥removed SearchAttributes and added UntypedSearchAttributes (needed until https://github.com/temporalio/temporal/issues/4787 is fixed)Workflow update handlers are now processed eagerly before the main workflow function instead of after. When calling workflow.SetUpdateHandler and an update was received during that workflow task, and no other handlers have been set before, workflow.SetUpdateHandler will trigger the queued update handlers to run.
Fixed a bug in the workflow test suite that would cause workflow and activity mocks that shared the same name to override each other. If your test was doing this and asserting on the number of times a mock was called you may notice a change in behavior as activity and workflow mocks are now stored in separate maps.
see also: https://github.com/temporalio/sdk-go/pull/1371
Tag workflow_task_execution_failed metric with error type to help differentiate workflow task failures caused by non determinism from other task failures
Dump coroutine stack on deadlock timeout. When the SDK detects a deadlock it will now try to dump the stack trace of the coroutine it detected as deadlocked.
Add deterministic range over map helper. Iterating over Go's standard maps is not deterministic and therefore cannot be done in a workflow context. The SDK now includes helpers DeterministicKeys and DeterministicKeysFunc to get the keys of a map in a deterministic order.
2023-10-13 - 06c90fb - Propagate Baggage in OTEL tracing interceptor (#1260)
2023-10-26 - 3cccbdd - Fix error documentation typos and enum values (#1276)
2023-10-31 - 0352634 - Add EmitDefault option for ProtoJson converter (#1286)
2023-11-08 - 0e432a9 - Add context propagators to local activity executions through test environments (#1291)
2023-11-08 - 4663bab - Fix typo in documentation (#1288)
2023-11-17 - 8068455 - Delete .github/workflows/semgrep.yml (#1294)
2023-11-21 - f9d73bf - Replace gogo protobuf (#1256)
2023-11-22 - 7db0d87 - Use the official features repo (#1298)
2023-11-27 - 745e948 - Add NotBefore function to testsuite.MockCallWrapper (#1301)
2023-11-27 - f5a0127 - Edit docstrings (#1302)
2023-11-28 - 33e8360 - Multi-platform CI and Makefile removal (#1293)
2023-11-28 - 70c8400 - Fix doc typo (#1305)
2023-11-28 - 8f2a3c8 - Use our new JSON coding stack (#1307)
2023-11-29 - 288a04f - Bump api-go version to fix Payload marshaling (#1308)
2023-11-29 - 89c8dba - Enabled keep alive by default (#1299)
2023-11-30 - 266e049 - Fix race in WaitSignalReturnParam (#1309)
2023-11-30 - 802d32e - Run cloud tests in series to avoid wfID conflict (#1311)
2023-11-30 - a309e59 - Tag workflow_task_execution_failed with error type (#1295)
2023-12-04 - 5fdbecc - Handle updates immediately when registered (#1306)
2023-12-04 - 838121a - Don't run workflowCancelHandler in test harness (#1296)
2023-12-04 - 987379d - Make remoteDataConverter implement PayloadCodec (#1303)
2023-12-04 - eb05747 - Fix flaky test (#1314)
2023-12-07 - 5d5b9c4 - Fix typo in docstring (#1317)
2023-12-14 - 7a9640d - Fix typo in update docstring (#1321)
2023-12-15 - f823b64 - Cleanup dead code and incorrect use of go routine in context pkg (#1320)
2023-12-27 - 95fe6ab - Fix bad Update mock in NamespaceClient (#1328)
2023-12-30 - 5a64898 - Failed Read-Only check causes a WFT failure in validator (#1329)
2024-01-04 - cb1d35e - Update dd-trace-go.v1 (#1332)
2024-01-05 - 2f61d2f - Add last BuildID to workflow info (#1335)
2024-01-07 - 7fc12d3 - Add otel metrics support (#1336)
2024-01-08 - 6244097 - Include update state machine fields in panic (#1327)
2024-01-08 - c1744ee - Bump go-api version to fix protojson vuln (#1333)
2024-01-09 - 1fe10d5 - Fix flaky build id issue (#1338)
2024-01-09 - 5ca9a4d - Add deterministic range over map helper (#1340)
2024-01-13 - fac7f7f - Update WorkflowRun.Get Doc String (#1346)
2024-01-16 - 0f12265 - Replace go.uber.org/atomic with sync/atomic (#1344)
2024-01-16 - 41d2288 - Evict workflow from cache on RespondTaskCompleted failure (#1358)
2024-01-16 - 54e131e - Make dataConverterWithoutDeadlock context aware (#1348)
2024-01-17 - 14103e0 - regenerate mocks with latest mockery (#1361)
2024-01-17 - 50ab40d - regenerate mocks under client to allow dynamic returns based on arguments (#1353)
2024-01-17 - 55c39b5 - Disable eager activities if tq rate limits is set (#1350)
2024-01-17 - b50cce9 - Replace some Sprintfs with string concatenation (#1345)
2024-01-17 - e3a3d95 - Always yield when registering update handles (#1325)
2024-01-19 - 14ddd7b - Dump coroutine stack on deadlock timeout (#1356)
2024-01-22 - 171504d - Fail task on unknown event when HistoryEvent.worker_may_ignore is false (#1363)
2024-01-22 - 30b2681 - Exit coroutine in order (#1362)
2024-01-22 - 94a5f5f - Allow client to suggest delay until next retry (#1319)
2024-01-26 - 536b875 - Exclude codes.DeadlineExceeded from the list of retryable gRPC codes (#1366)
2024-02-01 - 57b6679 - Typed Search Attributes (#1368)
2024-02-01 - 86764f8 - Handle nil valuePtr case in update handler Get (#1373)
2024-02-01 - a7c9528 - Prefix some errors with rule identifiers (#1281)
2024-02-01 - e2bec16 - Fix testing suite name conflict for workflow and activity (#887) (#1371)
2024-02-01 - f144428 - Release Go SDK version 1.26.0-RC.1
Fix a regression causing some custom logger implementations to log key-values as a list.
2023-10-11 - 83199af - Small docs tweaks. (#1262) 2023-10-12 - a6cdcd7 - Add UpdateWorkflowByID to TestWorkflowEnvironment (#1264) 2023-10-13 - b484666 - loggerWith.WithCallerSkip expand keyvals (#1267)
slogIf using Go version 1.21+ the Go SDK provides built in integration with the standard slog package.
package main
import (
"log/slog"
"os"
"go.temporal.io/sdk/client"
"go.temporal.io/sdk/log"
"go.temporal.io/sdk/worker"
)
func main() {
clientOptions := client.Options{
Logger: log.NewStructuredLogger(
slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{
AddSource: true,
Level: slog.LevelDebug,
}))),
}
temporalClient, err := client.Dial(clientOptions)
// ...
}
WorkflowInfo fieldsAdded GetContinueAsNewSuggested() and GetCurrentHistorySize() to WorkflowInfo.
Added StartDelay option to StartWorkflowOptions. StartDelay will cause Temporal to wait before dispatching the first workflow task.
If the workflow gets a signal before the delay, a workflow task will be dispatched and the rest
of the delay will be ignored.
2023-08-02 - 1ec43ad - Fix LA start to close timeout (#1180)
2023-08-04 - 3aba985 - Remove mentions of elasticsearch (#1186)
2023-08-06 - 66946b9 - fixing spelling errors in comments (#1188)
2023-08-07 - 23ff5a7 - Add option to ignore invalid parent spans (#1178)
2023-08-08 - 654e872 - Fix testsuite package docs (#1192)
2023-08-08 - 793489f - Fix race condition with eager workflow start and close (#1191)
2023-08-10 - 1fccf9c - Fix race condition in eager dispatch (#1195)
2023-08-10 - 90fcc71 - Enabled worker versioning tests (#1193)
2023-08-10 - c0a947b - Add note on heart beating and async activities (#1198)
2023-08-11 - 7dbde86 - Fix flaky TestAsyncActivityCompletion (#1199)
2023-08-11 - d5d6d3e - Update CI to Golang v1.21 (#1200)
2023-08-19 - 9bd67dd - Add new fields to workflow info (#1202)
2023-08-21 - 27895a9 - Clarify what happens if an error and result are returned (#1203)
2023-08-22 - 20c550a - Fix flake in TestQueryOnlyCoroutineUsage (#1204)
2023-08-23 - b9e5e24 - Refactor NextCommandEvents (#1205)
2023-08-28 - d5a2f8f - Fix race condition during cache eviction (#1210)
2023-08-29 - a7f9cdf - Add test for child wf cancel and update (#1214)
2023-08-30 - 9345e81 - Check all functions with workflow.Context as first parameter (#1215)
2023-08-31 - 0939af2 - Update Temporal API to v1.24.0 (#1220)
2023-09-01 - 7485282 - Fix the documentation of ListWorkflow for querying open workflows (#1217)
2023-09-01 - 90e7399 - Add slog adapter (#1219)
2023-09-01 - 9dc99ed - Update readme for slog (#1222)
2023-09-01 - c514225 - Add replay option to disable deadlock detection (#1221)
2023-09-05 - 591ce7e - Clarify GetLastCompletionResult works with schedule (#1225)
2023-09-05 - 6bdfec6 - chore: create UpdateCallbacks binding for the RoadRunner (#1223)
2023-09-05 - b7931cb - Handle generic maps and channels (#1224)
2023-09-07 - bc5e57d - Remove binary file (#1226)
2023-09-08 - 7bf78b8 - Edit doc comments (#1228)
2023-09-11 - 8ef6db7 - Stop using the tinycicd namespace for tests (#1233)
2023-09-13 - ecfaa65 - Code inside workflow.SideEffect is deterministic (#1230)
2023-09-18 - 22435a7 - Add doc links throughout our user-facing APIs (#1239)
2023-09-18 - f1d6480 - feat(contrib/opentelemetry): add TraceID and SpanID fields to the logger (#1232)
2023-09-23 - 6039cd3 - Disable running sessions on a versioned worker (#1241)
2023-09-23 - a5ee832 - Decrease iterations of TestVersionLoopWorkflow (#1242)
2023-09-23 - bfb39ac - Expose SetContinuedAsNewRunID in the TestWorkflowEnvironment (#1246)
2023-09-23 - ff9b3f4 - Expose StartDelay in StartWorkflowOptions (#1244)
2023-09-25 - 59d8488 - Add SDK version and name to history (#1245)
2023-09-27 - 159a69f - Don't register a versioned worker for eager start (#1251)
2023-10-02 - 9228307 - Convert panics in update protocol state machine to errors (#1253)
2023-10-03 - fecfba8 - Fix selector AddSend docs (#1254)
2023-10-04 - a001e5f - Add TaskReachability API (#1247)
2023-10-05 - df09c35 - Allow eager workflow start on versioned worker (#1255)
Added protection in the SDK against running mutating workflow functions in a read only context. A read only context is a query handler, update validator, side effect, or mutable side effect. Previously, in some cases, the SDK would seem to allow it but silently generate an invalid workflow history. This change allows developers to quickly catch their mistake and prevents generating invalid workflow histories
Eager Workflow Dispatch (EWD) is a mechanism that minimizes the duration from starting a workflow to the processing of the first workflow task, making Temporal more suitable for latency sensitive applications. Eager workflow Dispatch can be enabled by setting EnableEagerStart in StartWorkflowOptions and if the server supports it and a local worker is available the task is fed directly to the worker.
Note: Requires Temporal Server 1.20+
2023-06-23 - d56a1ca - Use getNextID() when handling mutable side effects (#1146) 2023-06-23 - e720652 - Fix history paging on looking for WFT Fail (#1147) 2023-06-27 - f223247 - Update workflowcheck dependencies (#1148) 2023-06-28 - 435b192 - Document when the activity context is cancelled (#1150) 2023-06-29 - 1923300 - Start version numbers at 0 in godoc (#987) 2023-06-29 - 261f652 - Add missing schedule types (#1151) 2023-06-30 - 524b4d1 - Add more mocks (#1152) 2023-07-05 - e1d76b7 - Add docs on update (#1154) 2023-07-17 - 023af0e - Move commit info to env var to mitigate run injection vulnerability. (#1165) 2023-07-17 - 4714f38 - Prevent modifying workflow state in read only contexts (#1159) 2023-07-17 - 57d29ee - Expose update interceptor input (#1166) 2023-07-17 - 930cc2b - Reassign runningWorkflows workflow ID in test environment (#1163) 2023-07-17 - ca05fcd - Add interceptors for Await and AwaitWithTimeout (#1161) 2023-07-17 - dd24fd5 - Add support for update info (#1162) 2023-07-23 - 3ba8110 - Hardcode noop metrics handler to avoid logs (#1169) 2023-07-24 - 899f6d0 - Add IsLocalActivity to ActivityInfo (#1170) 2023-07-24 - a059d88 - Unlock before panicking (#1168) 2023-07-24 - a649812 - Make QueryWorkflowWithOptions go through interceptor (#1171) 2023-07-26 - 746bcf2 - Add eager workflow start (#1164) 2023-07-31 - 30c8ca2 - Rework cancellation counting (#1181) 2023-07-31 - 6523916 - Expand WF context locking to cover WFT responses (#1182) 2023-07-31 - 7fe0679 - Clarify ScheduleToStartTimeout in ActivityOptions (#1183)
Various bug fixes and usability improvements on the alpha feature Sync Update and Worker Versioning
2023-06-01 - ddd33fc - Add Semgrep scanning (#1124) 2023-06-05 - eb68bb8 - Remove coveralls link (#1126) 2023-06-07 - 24f2c86 - Aligning OnWorkflow with OnActivity and adding unit tests to confirm behavior is coherent (#1128) 2023-06-09 - a3499c8 - Treat UpdateWorkflow as a long-poll (#1123) 2023-06-12 - 11c2cb9 - Allow ignoring function ref issues (#1135) 2023-06-12 - 5075346 - Fix stopping dev server on Windows (#1129) 2023-06-14 - 1a0d5f9 - Do not send original request msg back to server (#1139) 2023-06-14 - 2990ebf - Change message look ahead (#1136) 2023-06-15 - ae9ed7b - Fix inconsistent BuildID field name & empty TQ in intent check (#1141) 2023-06-16 - 00e8cec - Isolate Ctrl+Break to dev server instead of console (#1140)
This version adds support for our new Worker Versioning feature. Please note that this feature's API is subject to change. This feature allows you to assign build identifiers to workers, and ensure that workers operating on a task queue do not receive tasks that they will be incompatible with. You declare the relative [in]compatibility of build identifiers. We will be publishing documentation on this feature soon (and these notes will be updated with a link).
Note: worker versioning will require support from the Temporal server, to be available in release v1.21.0
2023-05-18 - 269b55b - Set Update ID client side (#1106) 2023-05-18 - eb8ccc1 - Add option to ignore unknown fields when protojson unmarshalling (#1105) 2023-05-19 - a3cd0d1 - Allow update panics to bubble up (#1108) 2023-05-22 - f709720 - Make sure SDK flags are applied to the correct WFT (#1112) 2023-05-22 - febeb48 - Write sdk flags directly during replay (#1116) 2023-05-22 - ff67cdb - Ignore errors from uploading to coveralls (#1115) 2023-05-23 - 55ef398 - Switch to the official coveralls uploader (#1117) 2023-05-24 - 720dab0 - Send ProtocolMessageCommands where appropriate (#1107) 2023-05-25 - 76377c7 - Worker Versioning (#1120) 2023-05-25 - ed13374 - Update panic handling (#1119) 2023-05-25 - fc09967 - Check for child workflow already started error when setting env.testError (#1109)
2023-04-14 - a090256 - Remove version_set_id from CompatibleVersionSet (#1089) 2023-04-19 - 29aecb3 - Async Update Polling (#1088) 2023-04-19 - 528337f - Allow unknown fields while parsing json history (#1092) 2023-04-21 - 52be9f5 - Fix typo in NewDisconnectedContext documentation. (#1094) 2023-04-24 - a1f826a - Error on Registering Activity with Workflow Context (#1093) 2023-04-24 - ad1af5e - Exposing WorkflowExecution Started Event attributes on the Workflow Info (#1090) 2023-04-25 - 5cf9af3 - Clarify description of With function (#1096) 2023-05-11 - 95c81bd - Properly store the original failurepb on decode (#1101)
2023-04-17 - 787cd80 - Track the worker for each workflow context (#1070)
2023-04-12 - 6da1899 - Prevent inferring messages twice (#1083)
The draft tag from the Schedules API has been removed.
2023-02-14 - 3063eee - workflowcheck: mark some fmt functions as deterministic (#1038) 2023-02-16 - 0b0234f - Update CI to test golang 1.20 (#1039) 2023-02-21 - 16d73c5 - Local activity nonfirst attempt counts for metering (#1046) 2023-02-21 - dc4f883 - Use sensible defaults for ScheduleCalendarSpec (#1047) 2023-03-01 - 07c8c7e - Track mutable side effect calls (#1051) 2023-03-07 - 3ce152b - Lookahead to infer messages on all replay paths (#1055) 2023-03-09 - e047c84 - Reduce SA bloat on GetVersion (#1056) 2023-03-13 - 3d009e0 - Add versioning API methods to client (#920) 2023-03-14 - 6b11229 - Suppress update messages during replay (#1059) 2023-03-16 - 91636e4 - Pass errors to the child workflow execution future (#1058) 2023-03-20 - 6eb3e36 - Remove experimental tag from schedules (#1064) 2023-03-22 - e62df8c - Fix compatibility misspelling (#1067) 2023-03-27 - 3b95c6e - Track the worker for each workflow context (#1070) 2023-03-28 - 3d9a1ef - Fix DevServer tests (#1072) 2023-03-28 - 88a40de - Add FrontendHostPort method to DevServer (#1071) 2023-03-29 - 5c0e091 - Message inference for more WF ctx reset paths (#1073) 2023-04-04 - 1b62656 - Remove WorkflowIDReusePolicy from schedule options (#1077) 2023-04-11 - 0005c07 - Add message IDs to update messages (#1079) 2023-04-12 - a294142 - Update WorkflowReplayer docstring instructions for obtaining workflow history JSON (#1081)
Worker now retries for a period of time on fatal errors when polling for new tasks. This improves worker resilience when running temporal behind proxies that may modify incoming requests.
2023-02-06 - ac60814 - Add testsuite.StartDevServer that starts temporal CLI (#1032) 2023-02-09 - f554827 - Retry "non retryable" error on worker long poll (#1034)
Updates to depend on the latest upstream API version
2023-01-24 - 1fe6824 - Convert SDK update to protocol/messages approach (#1006) 2023-01-27 - 3b37e0f - Prevent cache eviction race (#1013) 2023-01-30 - 1b39ac9 - Deliver messages even when events are skipped (#1015) 2023-01-30 - 9a541ee - Add ContextPropagators option for replay (#1019) 2023-01-30 - 9b0c6fc - Correct updateHandle.Get when passed nil pointer (#1017) 2023-01-31 - 093eabe - On replayer use task queue from history (#1023) 2023-01-31 - 6e8a39a - Fix headings on activity docs (#1022) 2023-02-01 - 18824b6 - Protect against nil defref in update resp handling (#1025) 2023-02-01 - c423fc8 - Expose session state (#1024) 2023-02-01 - f037c9d - Workaround for updates delivered in first WFT (#1026) 2023-02-02 - a9a4baa - Update to api v1.16.0 (#1028) 2023-02-02 - c6405d6 - Handle CanceledAfterStarted in CanceledEvent (#1027)
Many improvements to the workflow replayer to help catch more non nondeterminate workflow changes when tested with the replayer.
2022-12-08 - 8e0a972 - Add EnableLoggingInReplay flag to WorkflowReplayerOptions for propagation (#979) 2023-01-03 - 06e474c - Fix schedule docs (#992) 2023-01-04 - 50f633a - Client APIs for workflow update (#989) 2023-01-04 - 5fffe62 - Add GetUnhandledSignalNames (#993) 2023-01-04 - 6f4d14f - Fix history replayer (#990) 2023-01-05 - 0d7304b - Add option to overide replayer execution info (#998) 2023-01-05 - f965f94 - Fix panic on starting child workflows with duplicate IDs (#999) 2023-01-09 - 3dc5e1e - Rewrite service proxy and interceptor to use new api-go code. (#974) 2023-01-09 - 64d80f8 - contrib/tally: improve godoc (#985) 2023-01-11 - a080d2c - updated installation instructions for determinism checker to include latest flag. (#1001) 2023-01-11 - a1154f3 - Datadog tracing implementation (#921) 2023-01-11 - b575b7c - Rename sdk-features to features (#1002) 2023-01-16 - 002db6e - Some documentation fixes (#1004)
:boom: Breaking changes have been made to creating a schedule. A *ScheduleWorkflowAction instead of a ScheduleWorkflowAction type is now used when creating a schedule.
2022-11-15 - 68010f8 - bugfix: consistently plumb failureConverter (#956) 2022-11-15 - ad892e2 - Schedule fixes (#959) 2022-11-21 - 0d8f46a - Fix default catchupWindow (#963) 2022-11-22 - 0635622 - Add ci trigger for sdk-features (#961) 2022-11-28 - 86b0ef6 - Add num_pollers metric (#965) 2022-11-28 - a23dec9 - Add local_activity_execution_failed metric (#966) 2022-12-06 - 8314c25 - Fix some documentation (#976) 2022-12-06 - 9bcabc9 - Reset SA and memos if execution context is stale (#973)