July 31, 2020

Temporal v0.28.0 changelog

Cully Wakelin

Cully Wakelin

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.
  • Helm charts ☸️ : Deploy the Temporal server to a Kubernetes Cluster.
  • Entity renames 🏷️ :
    • DecisionCommand.
    • DecisionTaskWorkflowTask.
    • DeciderWorkflow.
    • DomainNamespace.
    • NamespaceStatusNamespaceState.
    • TaskListTaskQueue.
    • ArchivalStatusArchivalState.
  • Import path rename 📦 : go.uber.org/cadencego.temporal.io/sdk.
  • Workflow timeout refactors ⌛:
    • Workflow timeouts are optional.
    • Attempt counters start at 1.
    • Workflow Executions have 3 timeouts available:
    • Renamed:ExecutionStartToCloseTimeoutWorkflowRunTimeout.
    • 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:DecisionTaskStartToCloseTimeoutWorkflowTaskTimeout. Defaults to 10 seconds.
  • Workflow retry refactors 🔁 :
    • ExpirationInterval has been removed from RetryPolicy. 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 set maximumAttempts to 1.
    • ScheduleToClose is used to stop retries 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.
    • Admin Command improvements:
      • Filter Tasks from TaskQueue based on Workflow and run Ids (#462).
      • Consistent CLI admin command names (#427).
      • Enum parameter flags changed from int to string (#445, #447).
      • Support table-view for list commands (#444).
  • 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 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.
  • 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).

Docker images (use tag 0.28.0)