github temporalio/temporal v1.18.0

latest releases: v1.24.0-m3.4, v1.23.1, v1.24.0-m3.3...
19 months ago

Release Highlights

Upgrade action item summary

  • Before upgrade
    • If you’re using ES v6: do not deploy this version until after moving to ES v7 or later
    • If you’re using ES v7+: upgrade schema to include new builtin search attributes (see Schedules section below)
    • If you used the experimental Schedules feature in 1.17: delete all schedules and recreate them after upgrading
  • After upgrade
    • Change dynamic config matching.useOldRouting to false on all nodes as close in time as possible. This will cause temporary matching disruption during the propagation.
    • Remove publicClient from static config and restart all nodes (if you have problems with this change please let us know)
    • Consider enabling host-level worker pool and multi-cursor task processing (see Task processing section below)
    • Consider setting persistence rate limits (see Persistence rate limiting section below)

Elasticsearch v6 support is removed

Elasticsearch v7 became the default supported version in 1.12.0 release. In 1.18.0, Elasticsearch v6 support is completely removed. If you are still using Elasticsearch v6, don't upgrade to 1.18.0. Upgrade Elasticsearch first following the migration guide.

Along with v6 support removal, we added Elasticsearch v8 support. Elasticsearch v8 doesn’t have breaking changes that affect Temporal.

Batch API

This release introduces new batch operation APIs in the Frontend Service. The feature is enabled by default.

  • StartBatchOperation: Start a batch operation.
  • StopBatchOperation: Stop a running batch operation.
  • DescribeBatchOperation: Get detail information about a batch operation.
  • ListBatchOperations: List all the batch operations.

By default, the APIs support one concurrent operation per Namespace. This value is configurable by dynamic config: frontend.MaxConcurrentBatchOperationPerNamespace.

Use DescribeBatchOperation or metrics batcher_processor_requests and batcher_processor_errors to monitor the progress of batch operations.

Cluster API

The following Cluster APIs moved from the admin service to the operator service. Those APIs will be deprecated in the admin service in a future release.

  • AddOrUpdateRemoteCluster: Add or update a connection configuration to a remote Cluster.
  • RemoveRemoteCluster: Remove a connection to a remote Cluster.
  • ListClusters: List the configuration of all connected Clusters.

Task processing

Host level task scheduler

  • Host level task scheduler now uses separate task channels for each namespace for better resource isolation.
  • Deprecated the dynamic config history.[timer|transfer|visibility]TaskHighPriorityRPS.

Multi-cursor queue

New multi-cursor queue implementation for better resource isolation and handling cases not covered by host-level task scheduler: too many pending tasks, stuck queue ack level, etc.

  • The new implementation can be enabled by setting the value of dynamic config history.[timer|transfer|visibility]ProcessorEnableMultiCursor to true.
  • The host-level worker pool for the corresponding queue should also be enabled, otherwise the above dynamic config won’t take effect. This can be done by setting history.[timer|transfer|visibility]ProcessorEnablePriorityTaskScheduler to true.

Task Loading

  • The dynamic config history.[timer|transfer|visibility]ProcessorMaxPollHostRPS can be used to limit the throughput of the queue processor. This is very useful for recovering from a persistence outage which leads to a large task queue backlog in persistence. Set the value to a small number and gradually increase to ensure a smooth draining of the backlog. By default, value for this config is 0 and will fallback to 30% of the history.persistenceMaxQPS for transfer and timer queue and 15% for visibility queue.

Metrics

New task processing related metrics are added for better visibility.

  • task_latency_load: measures the duration from task generation to task loading (task schedule to start latency for persistence queue).
  • task_latency_schedule: measures the duration from task submission (to task scheduler) to processing (task schedule to start latency for in-memory queue).
  • queue_latency_schedule: measures the time it takes to schedule 100 tasks in one task channel in the host level task scheduler. If there are less than 100 tasks in the task channel for 30s, the latency will be scaled to 100 tasks upon emission. NOTE: this is still an experimental metric and is subject to change.

Retry behavior

Consolidated retry logic for APIs calls to two places: service handler (by an interceptor) and service client for calling other temporal services or persistence. Limited retry maximum attempts and removed retry logic in other places to avoid potential retry storm.

Persistence rate limiting

Persistence layer rate limiter prioritizes user requests (e.g. start workflow, signal workflow, etc.) over system background requests (e.g. task loading, requests incurred by task processing, replication, etc.)

Persistence max QPS for each namespace can be set by tuning the dynamic config [frontend|history|matching|worker].persistenceNamespaceMaxQPS. By default, this value is 0 and will fallback to the overall host persistence QPS set by [frontend|history|matching|worker].persistenceMaxQPS.

Persistence metrics persistence_requests, persistence_latency and persistence_error* now also contains namespace tag for better observability.

UpsertMemo

This release adds UpsertMemo to modify existing workflow memo. It works similarly to UpsertSearchAttributes. However, on the visibility side, the memo is updated only when used with advanced visibility (i.e. Elasticsearch). When used with standard visibility (SQL databases), the memo is not being updated currently, and the workflow memo can be retrieved correctly only from the mutable state (that is, you can call DescribeWorkflowExecution to retrieve it).

Matching routing

Task queues are now distributed among matching nodes based on namespace and type, for better load balancing. This change is disabled by default to avoid disruption during the upgrade. After upgrading to 1.18, you should make a dynamic config change on all nodes simultaneously to set matching.useOldRouting to false. You can use the following snippet:

# Remove this after upgrading to 1.19:
matching.useOldRouting:
- value: false

This change will cause a short disruption to Task dispatch as nodes reload the dynamic config and then Task Queues get moved between matching nodes. You’ll also see some persistence errors in logs for a few minutes.

We plan to make this routing the default in 1.19, so if you don’t make the dynamic config change, it’ll happen during the next upgrade.

Schedules

A few incompatible changes were made to the Schedules feature, which was introduced as experimental in 1.17. If you have created any Schedules, you should delete them before upgrading to this release, and recreate them after the upgrade.

The Schedule feature is now enabled by default.

If you're using Advanced Visibility (i.e. Elasticsearch), Schedules don’t appear in Workflow lists anymore. If you’re not using Elasticsearch, Schedules continue to appear in Workflow lists for now.

There is one new builtin search attribute to support Schedule visibility. You can add it to Elasticsearch by running the upgrade script from the server repo. See the top of the script for environment variables to use to point it at your Elasticsearch. You can do this before or after the upgrade, but before creating any Schedules. (If you didn’t perform the v2 upgrade when upgrading to 1.17, which also added search attributes for Schedules, also do that now.)

schema/elasticsearch/visibility/versioned/v3/upgrade.sh

Frontend connections

The Temporal Server can now make internal frontend connections using the membership system for service resolution. This feature is optional in this release but will be the default in a future release. To switch to using membership service resolution:

  • Remove the publicClient section from your config.
  • If you were not using TLS to connect to frontend, no other changes are required.
  • If you were using TLS and publicClient.hostPort was pointing directly to frontend(s), no other changes are required. It will still use TLS to connect to the frontend.
  • If your publicClient.hostPort was pointing to a load balancer that terminated TLS, so the frontend itself did not terminate TLS, then you should also remove your global.tls.frontend.client and global.tls.systemWorker settings. Connections will be made directly from the worker role to the frontend role without TLS.

If you have problems with this change in your environment, please let us know.

Maximum retention

The maximum Namespace retention limit of 30 days is removed. Namespaces now can use any retention as needed, as long as the persistence has enough capacity for the storage.

Dynamic config interface

The dynamicconfig.Client interface was changed and simplified.

If you’re using Temporal with our pre-build container images or binaries, there’s nothing to do.

If you’re building your own Temporal binary and only refer to dynamicconfig.Client or dynamicconfig.NewFileBasedClient in your ServerOptions, you should be able to rebuild with no code changes.

If you’ve written a custom dynamic config implementation, you’ll need to change it to the new interface. This should be pretty straightforward, but if you have any questions, please contact us; we can help.

All changes

2022-06-21 - 231655c - Rename queryTermination to queryCompletion (#3000)
2022-06-22 - 73881a3 - Prepare for 1.18 release (#3009)
2022-06-22 - f86b8d2 - Per-service fx-ified OTEL tracing (#2896)
2022-06-22 - c7d831b - Explicitly specify timezone for TIMESTAMP values (#3012)
2022-06-22 - 958bde7 - Update mysql image version to support arm64 (#3013)
2022-06-23 - 6cab7e5 - Add developer doc on tracing (#3014)
2022-06-23 - 0c0d369 - Some instrumentation tips for tracing (#3017)
2022-06-24 - abdc156 - Update dependencies and checkers (#3016)
2022-06-25 - a431b8a - Tracing docs typo (#3018)
2022-06-27 - 8004b16 - Update Cassandra install guide for MacBook with ARM chip (#3026)
2022-06-27 - 2d0071d - Don't check delete workflow execution transfer task version (#3021)
2022-06-27 - 187e1ae - Prioritize task processor shutdown (#3024)
2022-06-27 - 3354e35 - Multi-cursor components: queue slice (#2996)
2022-06-27 - 69ae0f4 - Release shard lock earlier during delete workflow execution (#3028)
2022-06-28 - e52d10e - Adjust shard acquire expiration (#3032)
2022-06-28 - b262b52 - Cancel activity when eager execution and request cancellation are in the same WFT (#3029)
2022-06-29 - 8a38825 - Switch mock sdk uses to gomock-based sdk mocks (#3030)
2022-06-29 - 6c0f53a - Perf optimize interleaved weighted round robin scheduler (#3034)
2022-06-29 - d09213a - Proto definition for multi cursor queue persistence states (#3035)
2022-06-29 - 23a6bec - Rename task predicates definition (#3037)
2022-06-29 - 30a8920 - Generate most of the gRPC wrappers in client (#3001)
2022-06-30 - 1b330e1 - Run task rescheduler in background (#3038)
2022-06-30 - e7c02d9 - Make queue max read level always exclusive (#3036)
2022-06-30 - ce47ea9 - Revert "Adjust shard acquire expiration (#3032)" (#3041)
2022-06-30 - 5d9c892 - Unit tests for scheduler workflow + bug fixes (#3020)
2022-06-30 - c7866bb - add support for multiple pragma statements and driver syntax (#3031)
2022-06-30 - d968a39 - Remove reporter and userscope interfaces (#3044)
2022-06-30 - 2b31d0d - Update backfill history in sync workflow state (#3042)
2022-07-01 - 2d7072e - Clean up history branch ancestor operation (#3046)
2022-07-01 - 08ce28c - Move external-mocks to go:generate (#3039)
2022-07-01 - da4de65 - Implement foundation of versioning API (#2980)
2022-07-01 - 8d570d6 - Fix potential npe in scheduler workflow update signal (#3049)
2022-07-01 - de11646 - Fix error shadowing in standby executors (#3053)
2022-07-01 - ca22f60 - Improve error handling for standby transfer task verification (#3050)
2022-07-05 - 72ff3da - Add convertion func for persistence multi-cursor queue state (#3051)
2022-07-05 - d02851f - Handle workflow already completed when verifying first workflow task scheduled (#3061)
2022-07-05 - 7c57f96 - Remove unnecessary debug log (#3063)
2022-07-06 - bab298f - Fix namespace failover callback (#3066)
2022-07-06 - 7bb5319 - Do not hold lock when running namespace change callback (#3067)
2022-07-06 - 7d6be15 - Move replication task cleanup to processor manager (#3068)
2022-07-07 - 1f4c05f - Resource aware operation retry (#3069)
2022-07-07 - 05575d9 - Add ability to clear search attributes (#3047)
2022-07-07 - 080aed3 - Fix schedule jitter calculation bug (#3059)
2022-07-07 - 7cde1d0 - Do not double execute close execution task if visibility archival is disabled (#3072)
2022-07-08 - 50a2f3a - Rename queue processor (#3075)
2022-07-10 - d138aef - Reorder frontend rate limiter (#3080)
2022-07-10 - 92c866c - Remove rds iam auth plugin (#3079)
2022-07-11 - 987fac1 - Get and set queue states in shard info (#3074)
2022-07-11 - 9d632d7 - Change a bunch of code to use generics (#3078)
2022-07-11 - 29f0ab2 - Move search attributes empty slice check to DecodeValue (#3073)
2022-07-11 - cbf6cb1 - Fix merge collision between #3078 and #3074 (#3084)
2022-07-12 - 4f01664 - Add protection against system namespace delete (#3087)
2022-07-13 - 04988f6 - Add optional --defaultdb flag to sql tool (#2950)
2022-07-13 - 9a9798b - Support history task cancellation (#3052)
2022-07-13 - e069799 - Do fx logging properly (#3098)
2022-07-13 - 76e123c - Use backoff.ThrottleRetry in ringpop (#3099)
2022-07-13 - 1af66ac - Start services in parallel (#3100)
2022-07-14 - e969dd8 - change custom datastore config map type (#3082)
2022-07-14 - 8d536bc - Expand comment on shard context acquire behavior (#3095)
2022-07-14 - a1ac36f - Refactor: rename termCh to completionCh (#3101)
2022-07-14 - 7f16276 - Fix deleteexecutions iterator (#3083)
2022-07-14 - 1b95eaf - Update DeleteWorkflowExecution description (#3048)
2022-07-14 - 1ef4de4 - Wait to acquire lease in matchingEngine (#3033)
2022-07-15 - 8d82a8c - Make staticcheck great again (#3103)
2022-07-15 - ae5cad8 - Fix workflow ID reuse when running on ScyllaDB (#3027)
2022-07-15 - 5425bfa - Use shard lifecycle context for persistence operations (#3096)
2022-07-15 - db09e28 - Consume api v1.10.0 (WorkflowUpdate) (#3102)
2022-07-18 - d0ebe68 - Improve verification APIs error handling (#3064)
2022-07-18 - e55f328 - Emit metric for activity eager execution (#3110)
2022-07-18 - 0b9fbba - Fix concurrency of shard acquisition and flaky test (#3097)
2022-07-18 - 44db941 - Make shard.GetEngine always take Context (#3112)
2022-07-18 - 2cf6ec2 - Make TransientWorkflowTaskInfo more general (#3109)
2022-07-18 - 881f37d - Treat protoc warnings as errors (#3113)
2022-07-18 - 378759c - Bump UI to v2.2.3 (#3114)
2022-07-18 - d85d678 - Rename workflow_task_info to transient_workflow_task_info (#3115)
2022-07-18 - 219240a - Added history of active clusters to NamespaceDetail (#3106)
2022-07-20 - 50bc62f - Updated NamespaceReplicationQueue API to use specific types instead of interface{}, since it only works with one type (#3121)
2022-07-20 - ba585a9 - Create binary tool for debugging Temporal (#2932)
2022-07-20 - 2617e65 - Don't count PermissionDenied as ServiceFailure (#3119)
2022-07-21 - e3aeee4 - Fix operation tag for admin service APIs (#3125)
2022-07-21 - eea8343 - Fix metrics for OperatorService (#3129)
2022-07-22 - 85a5f1e - Fix queue rate limiting busy loop (#3111)
2022-07-22 - d56e1d6 - Update sql tools readme (#3090)
2022-07-22 - b8ca07b - Fix task rate limiting (#3137)
2022-07-25 - 54bf185 - Fix timer metric bucket (#3136)
2022-07-25 - 9d95361 - Randomize shard ownership assertion starting position (#3058)
2022-07-25 - 0dfc7f9 - Use default consistency level for visibility DeleteWorkflowExecution (#3132)
2022-07-25 - 16df6dd - Add config to disable ORDER BY clause (#3128)
2022-07-26 - e857659 - Consolidate rpc client metrics logic (#3147)
2022-07-26 - c2a3a2b - Add fuzz-style test for shard controller (#3124)
2022-07-26 - 8309427 - Multi-cursor executable reader implementation (#3118)
2022-07-27 - 8c24825 - Bring back the task complete loop (#3151)
2022-07-27 - 942041f - Fix task rescheduler flaky test (#3152)
2022-07-27 - 77aaf84 - Remove RunId from visibility query sort for ES 7 (#3140)
2022-07-27 - 7f48014 - Core persistence priority rate limiting (#3139)
2022-07-27 - 87847e0 - Run one per-ns worker per namespace instead of namespace × component (#3116)
2022-07-27 - b43f516 - Multi-cursor: reader group (#3153)
2022-07-28 - 2342964 - Don't dispatch expired tasks from taskReader buffer (#3161)
2022-07-28 - c9b9c67 - Implement tdbg AdminDeleteWorkflow (#3157)
2022-07-28 - 61108e7 - Add metrics to detect no poller issue (#3146)
2022-07-28 - e96d485 - Update shard replication timestamp with max generated task (#3158)
2022-07-28 - 4392952 - Config worker use public frontend endpoint (#3162)
2022-07-31 - 4d56df9 - add address translation to Cassandra persistence (#3076)
2022-08-01 - c0fbdf9 - Adds ability to specify sanitizeOptions for prometheus metrics (#3170)
2022-08-02 - 66852ea - Fix tally timer metric (#3173)
2022-08-02 - c5aad01 - Multi-cursor: queue implementation (#3167)
2022-08-03 - 3ab0bae - Add admin workflow rebuild command (#3175)
2022-08-03 - ab56cdf - Add version check for delete workflow transfer task (#3159)
2022-08-03 - 04e4c65 - Fix Cassandra fixed address translator unit test (#3179)
2022-08-03 - 98ae497 - Code restructure (#3181)
2022-08-04 - 3182dc2 - Define & use shard controller interface (#3180)
2022-08-04 - 0b4bf47 - Simplify system retry logic: Part 1 (#3172)
2022-08-04 - 9a2fde6 - Multi cursor: wire up implementation (#3176)
2022-08-04 - cae7cba - Remove namespace max retention (#3148)
2022-08-04 - a8fb66a - Batch operation per namespace worker (#3094)
2022-08-04 - bed5d1f - Make branch token initialization part of data persistence interface (#3187)
2022-08-05 - ae43598 - additional history scavenger heartbeat (#3186)
2022-08-05 - 68b3d7e - Add missing NewHistoryBranch (#3188)
2022-08-05 - 9e0b2a1 - Fix task predicates operation (#3190)
2022-08-05 - 7825ead - Refactor transient workflow task creation (#3189)
2022-08-05 - 875a976 - Use detached context for shard context operations (#3194)
2022-08-08 - bd68cc0 - Fix queue processor throttling logic (#3195)
2022-08-08 - ef19550 - Simplify system retry logic: Part 2 (#3191)
2022-08-08 - de694c6 - Use separate mutex for shard context state (#3108)
2022-08-08 - b27975d - Hide scheduler workflows with new search attribute (#3123)
2022-08-09 - 206100b - Add DeleteNamespace integration test (#3206)
2022-08-10 - 42168bf - Push serialization of history branch from history manager down to history store (#3205)
2022-08-10 - 9be1e18 - Only load complete event if need to report to parent (#3207)
2022-08-10 - 3c6abda - Only load complete event for standby close task if needed (#3209)
2022-08-10 - c8c2777 - Use a prefix for scheduler workflow ids (#3201)
2022-08-10 - c5ccbd5 - Add read-only APIs that've been added since the original list was created (#3208)
2022-08-10 - aadbbac - Default to unix time 0, instead of time.Time{} (#3213)
2022-08-11 - db5f14f - Fix shard close error type (#3215)
2022-08-11 - 6fe8f3e - Fix inline history archival (#3216)
2022-08-11 - 55e50fb - Improve task processing retry behavior (#3218)
2022-08-11 - cf74ca4 - Add comment for newDetachedContext (#3219)
2022-08-11 - 0f1b823 - Multi-cursor: metrics (#3198)
2022-08-12 - 85bb4e7 - Versioning metadata propagation between partitions (#3166)
2022-08-12 - 2f84879 - Chain methods for setting retry policy parameters (#3220)
2022-08-15 - e9d2ba5 - remove maxshards, switch from random to sequential (#3200)
2022-08-15 - b294990 - Upgrade gocql version to v1.2.0 (#3226)
2022-08-15 - 4873231 - Fix archival activities error handling (#3227)
2022-08-15 - 53d11ae - Delegate branch token serialization/deserialization to store layer (#3225)
2022-08-15 - e52d5bb - Enhanced persistence priority rate limiting (#3163)
2022-08-15 - cd876ee - Fix failover queue shutdown (#3232)
2022-08-16 - cd9dec9 - Update go.temporal.io/sdk to v1.16.0 (#3231)
2022-08-16 - 298ccf9 - Use namespace and type for task queue routing (#3202)
2022-08-16 - 8c77bde - OTEL tracing updates (#3107)
2022-08-16 - f5730ce - Propagate original branch token to persistence history store layer (#3234)
2022-08-16 - f4d0290 - Structured defaults in dynamicconfig (#3199)
2022-08-16 - 0f99d82 - Remove GetRingpopChannel from integration tests (#3235)
2022-08-16 - 9af6e3c - Revert "OTEL tracing updates (#3107)" (#3236)
2022-08-16 - bcc440b - Prevent concurrent workflow execution deletion (#3237)
2022-08-17 - 83aa3b7 - Address context.TODO in history service (#3242)
2022-08-17 - ef78ea9 - Completely move signal with start logic into its own package (#3182)
2022-08-18 - 9e0cc83 - Add EncodedFailureAttributes to supported capabilities (#3244)
2022-08-18 - 77be7a9 - Evenly distributed frontend global rps limit (#3251)
2022-08-19 - f960b34 - Switch to github.com/temporalio/tchannel-go (#3250)
2022-08-19 - 95e24d7 - Add support for ES8 (#3185)
2022-08-19 - 1b210d8 - Remove support for ES6 (#3184)
2022-08-19 - 6688c25 - Do not enqueue replication task to DLQ if shard shutdown (#3245)
2022-08-19 - 47c141b - Sync API and add dummy implementations of batch operations (#3249)
2022-08-19 - 2c40ed5 - Make mocksdk/generate.sh compatible with macos (#3254)
2022-08-22 - 5f4f30d - Multi-cursor: fix scheduled task precision issue (#3255)
2022-08-22 - 9274c34 - Add generic time-bound and space-bound flusher (#2970)
2022-08-22 - 8d696e8 - Small update to workflow resetter confusing error message (#3257)
2022-08-22 - 5f89f38 - Add resource exhausted cause persistence limit (#3260)
2022-08-23 - 86bda4b - Move client version check to SDK interceptor (#3262)
2022-08-23 - 780bb6f - Use separate task channel for different namespaces (#3252)
2022-08-24 - eba842b - Merge ES ClientV7 with base client interface (#3259)
2022-08-24 - 15e313e - Add --allow-no-auth flag to allow noopAuthorizer (#3263)
2022-08-24 - e08606c - Fix Makefile to match temporal-sql-tool's instructions (#3264)
2022-08-25 - c059c69 - Support upsert memo (#3091)
2022-08-25 - 6c638c0 - Shorten timeout used for recording task started (#3268)
2022-08-25 - de9757c - Multi-cursor: reader watermark monitoring and mitigation (#3253)
2022-08-25 - e084bab - Task channel aware rescheduling (#3266)
2022-08-25 - 48a5af0 - Remove redundant error metrics (#3269)
2022-08-25 - 3c0f03f - Make task scheduler TrySubmit always non-blocking (#3267)
2022-08-29 - e35d696 - Wire up batcher APIs (#3233)
2022-08-29 - 49b7098 - Send ringpopServiceResolver events on diffs instead of ringpop events (#3238)
2022-08-30 - cbfaefb - Add a unit test for future.Get behavior (#3278)
2022-08-30 - 3c8fa0c - Init internal cluster client using membership info (#3160)
2022-08-30 - 94abd6c - Remove frontend handler retries (#3285)
2022-08-30 - 7c59672 - Increase page size for namespace registry refresh (#3283)
2022-08-30 - bd4e420 - Refactor dynamic config Client and Collection (#3271)
2022-08-30 - 04013e5 - Multi-cursor: queue reader priority rate limiting (#3273)
2022-08-31 - 8788461 - Add more queue and task processing metrics (#3274)
2022-08-31 - d1afec2 - Multi-cursor: slice count monitoring & mitigation (#3276)
2022-08-31 - 5ab8ab8 - Multi-cursor: pending task count monitoring & mitigation (#3275)
2022-09-01 - 948e303 - Multi-cursor: improve namespace failover (#3279)
2022-09-01 - 5ed995b - fix cassandra tool consistency readme to reflect the config default (#3290)
2022-09-01 - da4784f - Share grpc connections across sdk clients (#3239)
2022-09-01 - 27e8bcb - Use custom grpc resolver for frontend connections (#3280)
2022-09-01 - 2bd34e0 - Enable schedules by default and add integration tests (#3289)
2022-09-01 - e12217b - Improve task scheduler namespace change callback (#3293)
2022-09-01 - 853269a - Multi-cursor: stop empty readers (#3294)
2022-09-01 - 6a354ee - Add metrics tags back to task executor response (#3298)
2022-09-02 - 3315733 - Multi-cursor: fix timer task precision (#3297)
2022-09-02 - e32488e - Multi-cursor: shrink slice predicate (#3291)
2022-09-02 - 1c02b23 - Multi-cursor: fix task deletion (#3295)
2022-09-02 - ae33851 - Slow down task scheduling upon resource exhausted (#3305)
2022-09-06 - aaafa05 - Move DeleteWorkflowExecution to workflow service (#3300)
2022-09-06 - c74881b - Improve batcher workflow metrics (#3306)
2022-09-06 - f97debb - Use 60 days as history scavenger min age (#3310)
2022-09-06 - e4bf183 - Multi-cursor: move alert deduping to queue monitor (#3315)
2022-09-06 - 2739f2f - Multi-cursor: slice predicate action (#3312)
2022-09-06 - 25c2594 - Set upsert memo capability (#3314)
2022-09-06 - ba13e73 - Fix task executable metrics tags (#3307)
2022-09-06 - 1504c8b - Multi-cursor: Improve slice count action (#3313)
2022-09-07 - e96b58c - Remove ES6 client (#3317)
2022-09-07 - a91898d - Fix describe completed batch operation counter (#3316)
2022-09-07 - 3c2ddea - Clone request if search attributes are mapped (#3299)
2022-09-07 - c0577e0 - Revert 'Remove frontend handler retries (#3285)' (#3321)
2022-09-07 - 44ee560 - Move commonly used get & update function to api package (#3311)
2022-09-07 - dc328c7 - Tweak schedule test timeouts (#3320)
2022-09-07 - 15cf869 - Skip ratelimiting for some persistence APIs (#3322)
2022-09-07 - 163d94b - Move cluster management api to operator handler (#2985)
2022-09-07 - 22e0825 - Fix flaky buffered event test (#3318)
2022-09-07 - 8fa94ed - Simplify worker fx (#3324)
2022-09-07 - 8e64fa8 - Move start workflow to api package (#3326)
2022-09-07 - 0c4a0e7 - Move reset sticky task queue to api package (#3327)
2022-09-07 - 7cbff9e - Add refresh to force update dynamic rate limiter (#3335)
2022-09-07 - 0a042d1 - Increase default sendArchiveSignal timeout and make it configurable (#3325)
2022-09-07 - 34c219a - Remove deprecated namespace fields (#3329)
2022-09-07 - 8251b5b - Update go.temporal.io/sdk to latest version (#3331)
2022-09-07 - 6d8c6a9 - Update base CI image version (#3334)
2022-09-07 - d2cc4a4 - Remove deprecated namespace fields from parentclosepolicy.Request (#3330)
2022-09-07 - 8db40a4 - Move record activity task started to api package (#3328)
2022-09-08 - 8be957e - Fix snake case to camel case (#3339)
2022-09-08 - b21ac2a - Update Makefile to start server with --allow-no-auth (#3342)
2022-09-08 - 57b07b1 - Bypass namespace validator for DescribeNamespace API (#3336)
2022-09-08 - 4899a21 - Move respond activity task completed to api package (#3333)
2022-09-08 - 72da3ba - Move respond activity task failed to api package (#3344)
2022-09-08 - d2a9fe9 - Move record activity task heartbeat to api package (#3346)
2022-09-08 - 978f932 - Move request cancel workflow to api package (#3347)
2022-09-08 - 09c2051 - Cleanup leftover after "mutable state builder" to "mutable state" rename (#3343)
2022-09-08 - 8338211 - Move terminate workflow to api package (#3349)
2022-09-08 - cb3f1bc - Move respond activity task canceled to api package (#3345)
2022-09-08 - e80a691 - Delay namespace deletion (#3341)
2022-09-08 - 9f93c44 - Move signal workflow to api package (#3348)
2022-09-09 - 55c2543 - Return a "not found" error code for empty archival namespaces (#3340)
2022-09-09 - e5d8144 - Update Go SDK to v1.17.0 (#3354)
2022-09-09 - ec325c5 - Enforce memo size limit during StartWorkflow (#3352)
2022-09-09 - 9624e81 - Use multi-cursor queue state for workflow deletion check (#3332)
2022-09-09 - 4b2c624 - Add namespace tag for persistence metrics (#3355)
2022-09-09 - 30bf250 - Prioritize task loading persistence requests (#3217)
2022-09-09 - 2925d4f - Add namespace tag for service client metrics (#3356)
2022-09-09 - 33263db - Fix memo/search attribute size validation when upserting (#3353)
2022-09-09 - 5389cd5 - Use memo for schedule list info (#3359)
2022-09-12 - f84e4c9 - Add separate metrics for memo size (#3365)
2022-09-12 - 642d035 - Multi-cursor: fix scheduled queue look-ahead (#3364)
2022-09-12 - 9493ec3 - Fail integration tests on shutdown errors (#3301)
2022-09-12 - b3897aa - Skip task namespaceNotActive check in single queue mode (#3369)
2022-09-12 - f50d84c - Attaches success/error statistics to the batch operation workflow's memo (#3360)
2022-09-12 - cb2cc6f - Implement new schedule API features (#3337)
2022-09-12 - 5e6b2d7 - Remove unused history event check (#3373)
2022-09-13 - 877c2f5 - Update task processing dynamic config defaults (#3374)
2022-09-13 - b812e8e - Calculate schedule times in sideeffect (#3375)
2022-09-13 - 574228e - Exclude taskAlreadyStarted error from history client logging (#3376)
2022-09-13 - 81a92f1 - Use mock DB client in namespace unit test (#3363)
2022-09-13 - cf75441 - Move build proto dependencies to separate go.mod (#3377)
2022-09-14 - fcec8f9 - Update api version to v1.12.0 (#3379)
2022-09-14 - 6494f88 - Allow NewHistoryBranch optionally specify branch id (#3386)
2022-09-14 - 5742408 - Retry after sdk post-Start errors in per-namespace worker (#3385)
2022-09-15 - bba148c - Prevent scheduled task max read level update when shard status invalid (#3382)
2022-09-15 - 0a27533 - Make TestShardControllerFuzz less flaky (#3394)
2022-09-15 - 65dd13e - Move notifyQueueProcessor to acquireShard (#3392)
2022-09-15 - 160ba69 - Fix fail workflow due to attributes size violation (#3388)
2022-09-15 - 2ec2234 - Fix task schedule latency metric (#3395)
2022-09-15 - ce9a66f - Fix timerGate race condition in rescheduler (#3396)
2022-09-15 - c91d596 - Add CloseVisibilityTaskID to DeleteExecutionVisibilityTask (#3391)
2022-09-15 - f361405 - Remove shardOwnershipLost error from fault injection execution store (#3399)
2022-09-16 - c9e8f49 - Dynamic config (#3390)
2022-09-16 - 569433f - Revert "Remove unused history event check (#3373)" (#3400)
2022-09-16 - de91ae4 - Change search attribute validator to expect field names instead of alias (#3398)
2022-09-16 - 86966c5 - Process signals later in scheduler workflow (#3397)

Helpful links to get you started with Temporal

Temporal Docs
Server
Docker Compose
Helm Chart

Docker images for this release (use tag 1.18.0)

Server
Server With Auto Setup (what is Auto-Setup?)
Admin-Tools

Don't miss a new temporal release

NewReleases is sending notifications on new releases.