Skip to content

Commit 4557ac8

Browse files
authored
Release Java SDK v1.34.0 (#2824)
1 parent fb87ce6 commit 4557ac8

File tree

1 file changed

+106
-0
lines changed

1 file changed

+106
-0
lines changed

releases/v1.34.0

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# **💥 BREAKING CHANGES**
2+
3+
## Nexus Failure Serialization
4+
5+
The Java SDK now uses Temporal `Failure` protos for Nexus operation and handler task
6+
failures, instead of the legacy `UnsuccessfulOperationError`/`HandlerError` format.
7+
This allows `OperationException` and `HandlerException` to carry their own message and
8+
stack trace independently of their cause.
9+
10+
The SDK automatically falls back to the legacy format when the server does not support
11+
the new format. However, if your code inspects the raw structure of Nexus failures
12+
(e.g. via custom interceptors or failure converters), you may need to update it to
13+
handle the new format. (#2773)
14+
15+
# **Highlights**
16+
17+
## Spring Boot 4 and Jackson 3 Support
18+
19+
Spring Boot 4 is now supported. The Spring Boot autoconfigure module was updated for
20+
Spring Boot 4 API changes (e.g. updated class references in `MetricsScopeAutoConfiguration`
21+
and `OpenTracingAutoConfiguration`). No code changes are needed in application code. (#2787)
22+
23+
Jackson 3 is now optionally supported via a multi-release JAR. To opt in, call
24+
`JacksonJsonPayloadConverter.setDefaultAsJackson3(true, jacksonCompatMode)` at startup.
25+
Jackson 3 and Jackson 2 converters are wire-compatible. Jackson 3 is an optional
26+
dependency and is not pulled in automatically. (#2783)
27+
28+
Plugin beans (`WorkflowServiceStubsPlugin`, `WorkflowClientPlugin`, `ScheduleClientPlugin`,
29+
`WorkerPlugin`) defined in the Spring context are now automatically discovered and wired
30+
into the Temporal client and worker configuration. Plugins support `@Order` and `@Priority`
31+
annotations for consistent ordering. (#2766)
32+
33+
## Upgrade-on-ContinueAsNew
34+
35+
PINNED workflows can now upgrade to the latest worker deployment version on
36+
continue-as-new by setting `initialVersioningBehavior` to `AUTO_UPGRADE` in
37+
`ContinueAsNewOptions`. A new `WorkflowInfo.isTargetWorkerDeploymentVersionChanged()`
38+
method lets workflows detect when the target worker deployment version has changed,
39+
enabling explicit upgrade decisions. (#2811)
40+
41+
## Local Timeout for Activity Heartbeats
42+
43+
Activity heartbeat timeouts are now enforced locally by the SDK, matching the behavior
44+
of the Core-based SDKs. Previously, only the server enforced heartbeat timeouts; the
45+
local check reduces the time it takes for a stale activity to be detected and retried.
46+
This feature applies to heartbeat timeouts only, not overall activity timeouts. (#2804)
47+
48+
## Nexus Caller Timeouts
49+
50+
`ScheduleToStartTimeout` and `StartToCloseTimeout` are now supported for Nexus
51+
operations, in addition to the existing `ScheduleToCloseTimeout`. The test server was
52+
updated to enforce all three timeout types and compute the `OPERATION_TIMEOUT` header
53+
correctly. (#2760)
54+
55+
# **Bugfixes**
56+
57+
## ContextClassLoader Propagation for Poll Tasks
58+
59+
When `PollerBehaviorAutoscaling` is enabled, poll tasks run asynchronously on a
60+
common `ForkJoinPool`, whose threads use the system class loader by default. This
61+
caused class-loading failures in frameworks like Spring Boot that rely on a custom
62+
context class loader (e.g. `LaunchedClassLoader`). The SDK now captures and propagates
63+
the context class loader from the thread that created the `WorkerFactory` to all
64+
worker threads. (#2808)
65+
66+
## Workflow Slot Not Marked Used for Async Pollers
67+
68+
When `PollerBehaviorAutoscaling` was enabled, `AsyncWorkflowPollTask` was not calling
69+
`markSlotUsed` on the `SlotSupplier` after receiving a task. This caused the
70+
`WORKER_TASK_SLOTS_AVAILABLE` metric to report an incorrectly high value. (#2803)
71+
72+
## Validate `WorkerDeploymentOptions` at Build Time
73+
74+
`WorkerDeploymentOptions.build()` now rejects configurations where
75+
`defaultVersioningBehavior` is set to anything other than `UNSPECIFIED` when
76+
`useVersioning` is `false`. Previously such configurations were silently accepted but
77+
then rejected by the server at workflow task completion, causing workflows to get stuck.
78+
(#2807)
79+
80+
## Fix Exception Swallowing on `Workflow.getVersion()`
81+
82+
A bug where exceptions thrown by a workflow could be swallowed and replaced by a
83+
worker-shutdown error when `Workflow.getVersion()` was called is now fixed for all
84+
new workflows. Existing workflows replay correctly without any changes. (#2819)
85+
86+
# What's Changed
87+
88+
2026-02-26 - 9799bd00 - Add missing apostrophe to WorkflowException message (#2776)
89+
2026-02-27 - ef194239 - Add headers to cancel nexus task (#2798)
90+
2026-03-10 - 20fb8520 - Nexus caller timeouts (#2760)
91+
2026-03-10 - dbd648bd - Update Nexus failure conversion (#2773)
92+
2026-03-11 - 6ba0947f - Fix async poller workflow slot used (#2803)
93+
2026-03-13 - 53449bb5 - Introduce local timeout for activity heartbeats (#2804)
94+
2026-03-16 - 9356745c - Replace docker instructions for running a local server with CLI instructions. (#2806)
95+
2026-03-17 - 95169659 - Cancel timer when Workflow.await condition is satisfied (#2799)
96+
2026-03-17 - fb2defd9 - Fix time skipping for dotnet SDK (#2805)
97+
2026-03-19 - 02182b93 - Support plugins in spring-boot-autoconfigure (#2766)
98+
2026-03-23 - a714cc10 - Allow poller scale-down on timeout when server supports autoscaling (#2812)
99+
2026-03-24 - b9c186d1 - Add note about Rosetta for old protoc-gen-rpc-java (#2815)
100+
2026-03-25 - c195cd1d - Add Spring Boot 4 support (#2787)
101+
2026-03-25 - fcb4e841 - Add opt-in Jackson 3 support via multi-release JAR (#2783)
102+
2026-03-27 - 0e1a7a25 - Validate deployment options and test worker with versioning off and custom build ID (#2807)
103+
2026-03-27 - da5e8a17 - Add upgrade-on-CAN support (#2811)
104+
2026-03-30 - b9b0f6b5 - Fix ContextClassLoader propagation for poll tasks (#2808)
105+
2026-03-31 - 5d969b87 - `tryUseSdkFlag(SdkFlag.SKIP_YIELD_ON_VERSION)` so that we default to enabling `SKIP_YIELD_ON_VERSION` when calling `getVersion()` (#2819)
106+
2026-03-31 - fb87ce6c - Update Temporal Cloud-API to v0.12.0 (#2814)

0 commit comments

Comments
 (0)