Today is an exciting day for us! Temporal is releasing its newest version, v0.28.0, bringing us one step closer to a stable production ready release. We want to thank all of the users who have helped us iterate and move the product forward.
This changelog includes all of the changes since Temporal forked from Cadence, and should help users who are interested in upgrading.
What has changed?#
- Cadence Oct 2019 → Temporal v0.28.0 Alpha: The software version has bumped. __ Thrift/TChannel → Protobuf/gRPC__ ⚡ :
- Server Thrift API → Protobuf API. Go import path is
go.temporal.io/api. All communication over the wire can be encrypted via TLS. Note: Support for TLS in tctl and temporal-web is still in-progress. Thrift errors have been converted to custom service errors backed by standard gRPC error codes. Errors are serialized using the Protobuf type Failure. They can now be chained together and passed across different SDKs in different languages. All payloads (Workflow input, Activity input, etc...) sent to Temporal now have headers and data fields. Standard gRPC health service is used for health checks. Standard Protobuf types are used for time and duration. Uber YARPC library has been removed. Decision → Command. DecisionTask → WorkflowTask. Decider → Workflow. Domain → Namespace. NamespaceStatus → NamespaceState. TaskList → TaskQueue. ArchivalStatus → ArchivalState. go.uber.org/cadence → go.temporal.io/sdk. Workflow timeout refactors ⌛: - Workflow timeouts are optional. Attempt counters start at 1. Workflow Executions have 3 timeouts available: Renamed:
ExecutionStartToCloseTimeout → WorkflowRunTimeout. WorkflowExecutionTimeout is new. It limits the total Workflow execution time including retries and continue-as-new. It also enables limiting the total time of a cron job. The default is 10 years. WorkflowRunTimeout defaults to the value of WorkflowExecutionTimeout. Renamed:DecisionTaskStartToCloseTimeout → WorkflowTaskTimeout. Defaults to 10 seconds. ExpirationInterval has been removed from RetryPolicy. Instead, WorkflowExecutionTimeout is used to stop retries for Workflows. Attempt counters start at 1. - Temporal includes default RetryOptions for Activities.
initialInterval = 1 second. maximumInterval = 100 * initialInterval. backoffCoefficient = 2. RetryOptions that set maximumAttempts to 1. ScheduleToClose is used to stop retries for Activities. - New admin commands:
- List namespaces (#463):
./tctl admin namespace list. Describe Shard (#370): ./tctl admin shard describe --shard_id ... / d -sid. List Tasks (#429/#433): ./tctl admin shard list_tasks. Describe Task (#408, #416, #412): ./tctl admin shard describe_task --task_type [timer, replication, transfer] ... / dt. List Cluster memberships(#423): ./tctl admin membership list_db. List Ringpop members (#426): ./tctl admin membership list_gossip. List Replication DLQ Tasks (#456): ./tctl admin kafka list_dlq. BroadcastAddress can be configured via the TEMPORAL_BROADCAST_ADDRESS environment variable. MYSQL_TX_ISOLATION_COMPAT environment variable can be set as true in order to support setting up schemas with pre-5.7.20 MySQL installations. Getting started experience has been simplified to have Docker pre baked with 'default' namespace. - Pass 127.0.0.1 explicitly to Cassandra in docker dependency (#540). Remove statsd from docker-compose files (#536). Expose Cassandra and serial consistency settings in configuration (#533). Adopt Google api-linter and Buf (#526). Support dynamic cluster IP addresses in failure scenarios (#495). Save last
RetryStatus for retryable failures (#432). 