We want to upgrade our Temporal versions but we won’t be able to upgrade the server (Postgres backend) and the Go SDK at the same pace. I didn’t manage to find documentation / statements about the kind of backward compatibility Temporal offers between upgrades?
For example:
we have a temporal server running on v1.10.0 and we wanted to upgrade the SDK to v1.12.0.
we have a temporal server running on v1.5.1, the SDK version is already in v1.10.0 with no issues. We consider bumping it to v1.12.0.
We are currently looking at upgrading our servers version but, in the meantime, we wanted to know what behaviour we should expect when we upgrade SDK if they don’t match the server version, if there are some limitations, etc…
There should be no need to bump server and SDK releases together. SDKs are expected to be backwards compatible (unless some major issue has been found during testing, which would be reported in the release notes).
Yes, but some newer features might not be available with older SDKs. We highly recommend keeping SDKs recent, as in case of any problem, the first ask is to upgrade to the latest version.
Hi @maxim , I have several workflow service that use various version go sdk (1.17.0 - 1.25.1) depend on when the service been built. Then lately I got this error that refer to go.temporal.io/sdk@v1.10.0
{"level":"error","ts":"2025-02-28T10:42:48.886Z","msg":"Worker received non-retriable error. Shutting down.","Namespace":"temporal-system","TaskQueue":"temporal-archival-tq","WorkerID":"184@cotbspapp3@","WorkerType":"ActivityWorker","Error":"Context timeout is not set.","logging-call-at":"asm_amd64.s:1581","stacktrace":"go.temporal.io/server/common/log.(*zapLogger).Error\n\t/temporal/common/log/zap_logger.go:142\ngo.temporal.io/server/common/log.(*SdkLogger).Error\n\t/temporal/common/log/sdk_logger.go:83\ngo.temporal.io/sdk/internal.(*baseWorker).pollTask\n\t/go/pkg/mod/go.temporal.io/sdk@v1.10.0/internal/internal_worker_base.go:286\ngo.temporal.io/sdk/internal.(*baseWorker).runPoller\n\t/go/pkg/mod/go.temporal.io/sdk@v1.10.0/internal/internal_worker_base.go:244"}
After scanning, go sdk v1.10.0 is used by temporal server. is it possible happen because differentiate version too far?