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
andtemporal-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.
- Server Thrift API → Protobuf API. Go import path is
- Helm charts ☸️ : Deploy the Temporal server to a Kubernetes Cluster.
- Entity renames 🏷️ :
Decision
→Command
.DecisionTask
→WorkflowTask
.Decider
→Workflow
.Domain
→Namespace
.NamespaceStatus
→NamespaceState
.TaskList
→TaskQueue
.ArchivalStatus
→ArchivalState
.
- Import path rename 📦 :
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
. - W
orkflowExecutionTimeout
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 ofWorkflowExecutionTimeout
. - Renamed:
DecisionTaskStartToCloseTimeout
→WorkflowTaskTimeout
. Defaults to 10 seconds.
- Workflow retry refactors 🔁 :
ExpirationInterval
has been removed fromRetryPolicy
. Instead,WorkflowExecutionTimeout
is used to stop retries for Workflows.- Attempt counters start at 1.
- Activity retry refactors 🔁 :
- Temporal includes default RetryOptions for Activities.
initialInterval
= 1 second.maximumInterval
= 100 * initialInterval.backoffCoefficient
= 2.
- To disable Activity retries, configure Activities with
RetryOptions
that setmaximumAttempts
to 1. ScheduleToClose
is used to stop retries for Activities.
- Temporal includes default RetryOptions for Activities.
- CLI updates 🧰 :
- 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
.
- List namespaces (#463):
- Admin Command improvements:
- New admin commands:
- Simplified SQL Schemas ➰ : Schemas are now less complex.
- All Queries are strongly consistent 🔎 : The actual current state is always returned.
- SDKs 🔌 : Significantly improved experience for both Java SDK and Go SDK.
- When using Docker 🐳 :
BroadcastAddress
can be configured via theTEMPORAL_BROADCAST_ADDRESS
environment variable.MYSQL_TX_ISOLATION_COMPAT
environment variable can be set astrue
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.
- Other minor changes 🔹 :
- 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).