Release Highlights
- Elasticsearch v7 is now supported: #1164 (see details below).
- Internal visibility queue is used by default (not Kafka): #1235 (see details below).
- Metrics improvements: #1216, #1223, #1227, #1231, #1232, #1245.
- Schema changes.
- Bug fixes.
Schema changes
This release includes schema changes.
Before upgrading your Temporal Server cluster, run the schema upgrate tool to support version 1.4
.
Schema update tool instructions are here: https://docs.temporal.io/docs/server-versions-and-dependencies/#upgrade-your-version-of-temporal.
Elasticsearch v7 Support
Upgrading to Elasticsearch v7 (ES7) from ES6 includes a number of breaking changes.
The most important one is the removal of types.
Therefore the ES6 Go client is not compatible with ES7 and upgrading the Temporal Server is a multi step process.
Fresh install
If you are installing a fresh version of the Temporal Server, use ES7.
Install the latest ES7 version, and set the ES version in the Server's static config:
persistence:
datastores:
es-visibility:
elasticsearch:
version: "v7"
Or, set ES_VERSION
env to v7
if you are using pre-build docker image.
Upgrade with temporary cluster shutdown
If you can afford any Temporal Server downtime while upgrading Elasticsearch, then simply shutdown your Temporal cluster and upgrade ES6 to ES7 following the steps from the Elasticsearch documentation.
If you are on the latest 6.8.x
, just perform a rolling upgrade of Elasticsearch.
Rolling upgrade of the Temporal Server
You can also upgrade the Temporal Server cluster with some minimal downtime in enhanced visibility only.
- Update the Server to this
v1.7.0
release. - Add the following to the dynamic config:
history.visibilityProcessorEnabled:
- value: false
-
Restart the Server.
Workflow visibility information won't be updated. -
Upgrade ES6 to ES7 following steps from the Elasticsearch documentation.
If you are on the latest6.8.x
, just perform a rolling upgrade of Elasticsearch. -
Start ES7.
Visibility read queries will temporarily generate errors.
Write queries are blocked because the processor is disabled. -
Switch to ES7 in the Server's static config:
persistence:
datastores:
es-visibility:
elasticsearch:
version: "v7"
Or, set ES_VERSION
env to v7
if you are using pre-build docker image.
- Remove this from the dynamic config:
history.visibilityProcessorEnabled:
- value: false
- Restart the Server one more time.
Managed AWS Elasticsearch version
During our internal testing we found out that the latest AWS Elasticsearch version 7.9
has issues and can't be used.
If you are using AWS Elasticsearch upgrade to 7.7
.
Internal visibility queue is used by default
This release uses internal visibility queues by default, instead of Kafka.
You may lose unprocessed Kafka messages if you are upgrading from version other than v1.6.4
.
To prevent this, upgrade to v1.6.4
first or follow the upgrade steps from the v1.5.0 release.
In the next release all remaining Kafka code will be completely removed.
Change details
2021-01-21 - 1428a3d - Set default ES bulk processor ack timeout to 1 minute (#1210)
2021-01-21 - b46fbe3 - Add ES logger (#1209)
2021-01-22 - 3aa0d68 - Update Go SDK to 1.4.0 (#1211)
2021-01-22 - 95c1b5b - Remove support for locking down admin operations (#1194)
2021-01-22 - d2fc34b - Improve PostgreSQL config (#1214)
2021-01-22 - f6225de - Fix NDC metrics reporting (#1216)
2021-01-25 - 0825207 - Add more logging to ES (#1222)
2021-01-25 - 1e7c190 - Fix metrics scope namespace tag initialization (#1223)
2021-01-25 - a4d1428 - Bugfix: activity heartbeat timeout (#1220)
2021-01-26 - 089f746 - Improve ES logging (#1228)
2021-01-26 - 30aed76 - Fix metrics tag name (#1227)
2021-01-26 - ba7be16 - Fix replication failure metrics (#1232)
2021-01-26 - cce754a - Fix parent close metrics definition (#1231)
2021-01-26 - ec33858 - Bugfix: close execution request goes to Kafka even when visibility queue type is set to internalWithDualProcessor (#1229)
2021-01-27 - 485ae99 - Accept empty Kafka config when visibility queue is set to internal (#1238)
2021-01-27 - 532b318 - Cleanup DB schema (#1130)
2021-01-27 - e12c7a1 - Switch visibility queue default to internal (#1235)
2021-01-28 - d3bc2a9 - Bugfix: NoopResolver was always used for version compatibility check (#1233)
2021-01-29 - ce44532 - Add password masker (#1217)
2021-02-01 - 23e5b8b - Fix distribution metrics issue (#1245)
2021-02-01 - 43954fd - Adjust number of histogram buckets (#1248)
2021-02-01 - 520de19 - Correctly initialize prometheus reporter (#1250)
2021-02-02 - 69da561 - Bugfix: Allow enabling TLS for sql tool without requiring key/cert. (#1252)
2021-02-02 - 9d9d8bf - Add server option for custom Elasticsearch HTTP client (#1246)
2021-02-02 - f3e33a9 - Set search.idle.after to 365 days (#1254)
2021-02-03 - 10884f0 - Deprecate token bucket (#1253)
2021-02-03 - 3e9e452 - Replace deprecated NewExitError with Exit method (#1257)
2021-02-03 - f7f9ac1 - Simplify matching engine rate limit logic (#1260)
2021-02-04 - 10205de - Improve matching engine error type (#1261)
2021-02-05 - c5ee475 - Add logger to matching service (#1264)
2021-02-08 - e831c9d - Refactor TLS tests (#1266)
2021-02-09 - 7ea0ee0 - Add background executions table scanner (#1244)
2021-02-09 - 8301804 - Fix update schema command for temporal_visibility (#1268)
2021-02-09 - f6e2c13 - Create non-transient workflow task when version changes (#1272)
2021-02-10 - cf20471 - Set connection timeout for cassandra tool (#1277)
2021-02-11 - afc0001 - Add quotes to config_tempate.yaml (#1284)
2021-02-11 - c977c8b - Rename ArchiveVisibilityRequest to VisibilityRecord (#1281)
2021-02-12 - 4363aca - Use document Id to match request and response in ES processor afterFunc callback (#1265)
2021-02-12 - ee84511 - Copy visibilityAckLevel in copyShardInfo (#1287)
2021-02-16 - 289e1de - Enable dynamic update of TLS certificates (#1288)
2021-02-16 - e3496b1 - Add protection on child workflow ID (#1293)
Helpful links to get you started with Temporal
Temporal Docs
Server
Docker Compose
Helm Chart