Skip to content

Update Core SDK to c57f825 - #161

Merged
FranzBusch merged 1 commit into
apple:mainfrom
RalucaP:rppc/update-core-sdk
Jul 15, 2026
Merged

FranzBusch merged 1 commit into
apple:mainfrom
RalucaP:rppc/update-core-sdk

Conversation

@RalucaP

@RalucaP RalucaP commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Motivation

The macOS test lanes on #159 fail with a worker BridgeError — "missing grpc-status trailer, stream was terminated without a final status" on the worker's first get_system_info call:

The cause is dependency drift. tonic 0.14.6 (grpc/grpc-rust#2543) made the gRPC client reject an HTTP-200 response that carries no grpc-status trailer, per the gRPC-over-HTTP/2 spec. sdk-core's gRPC override builds success responses without that trailer and relied on older tonic inferring OK from a trailerless 200. Our pinned core db65dd9 predates the upstream fix, so once it is rebuilt against tonic 0.14.6+ the worker fails on connect.

Modifications

Move the dependencies/sdk-core submodule from db65dd9 to c57f825, the merge commit of temporalio/sdk-core#1257, which appends a grpc-status: 0 trailer to those override responses:

Result

Once build-temporal-core-artifacts.yml reruns against the bumped submodule and publishes a new release, the macOS worker lanes should pass. A follow-up on #159 then bumps Package.swift's url + checksum (both Bridge and BridgeDarwin) to that release.

Test Plan

Verified locally: built the sdk-core c-bridge staticlib from c57f825 (Rust 1.88, tonic 0.14.6), wrapped it into an xcframework, and ran a worker connect + workflow-execution test. It passes end-to-end, where the pre-fix core failed on the first get_system_info. Full CI validation happens when the artifacts workflow republishes and #159 consumes the new release.

Note

This bumps the Core SDK only; the artifact rebuild and consumer bump follow. Once this is merged:

Separately might be worth a follow-up: the artifacts build doesn't pin its Rust dependencies (no committed Cargo.lock / --locked), which is what let this drift on a rebuild of the same commit, pinning would prevent a recurrence.

The macOS test lanes on apple#159 fail with a worker BridgeError,
"missing grpc-status trailer, stream was terminated without a final
status", on the worker's first get_system_info call:
  apple#159
  https://github.com/apple/swift-temporal-sdk/actions/runs/29327782027/job/87068156954

Cause: tonic 0.14.6 made the gRPC client reject an HTTP-200 response
that carries no grpc-status trailer, per the gRPC-over-HTTP/2 spec:
  grpc/grpc-rust#2543
sdk-core's gRPC override built success responses without that trailer
and relied on older tonic inferring OK from a trailerless 200. The
pinned db65dd9 core predates the fix, so once it is rebuilt against
tonic 0.14.6+ every macOS worker test fails on connect.

Fix: temporalio/sdk-rust#1257 appends a grpc-status: 0 trailer to
those override responses. This moves the submodule from db65dd9 to
c57f825 (the #1257 merge commit) to pick it up:
  temporalio/sdk-rust#1257
  https://github.com/temporalio/sdk-core/blob/c57f825ff4a312d084773498fceeca9eef853607/crates/client/src/callback_based.rs#L107-L112

Verified locally: built the c-bridge staticlib from c57f825 and the
worker connects and runs a workflow end-to-end (previously it failed
on the first get_system_info).

Build-input bump only. Once the artifacts workflow reruns and
publishes the new release, apple#159 bumps Package.swift's url and
checksum to it.
@FranzBusch FranzBusch added the 🔨 semver/patch No public API change. label Jul 15, 2026
@FranzBusch
FranzBusch merged commit e2fc4c6 into apple:main Jul 15, 2026
31 of 34 checks passed
FranzBusch pushed a commit that referenced this pull request Jul 15, 2026
### Motivation

The `build-temporal-core-artifacts.yml` run against #161's core fails on
the macOS and both musl Linux jobs ([failing
run](https://github.com/apple/swift-temporal-sdk/actions/runs/29413263280)):

```
error[E0463]: can't find crate for `core`
```

As of
[c57f825](https://github.com/temporalio/sdk-core/blob/c57f825ff4a312d084773498fceeca9eef853607),
sdk-core pins its toolchain to 1.94 via
[`rust-toolchain.toml`](https://github.com/temporalio/sdk-core/blob/c57f825ff4a312d084773498fceeca9eef853607/rust-toolchain.toml#L2).
The workflow installs 1.88 and adds the build targets to it, but builds
under the pin (1.94), which has no `std` for those targets.

### Modifications

Set `RUST_VERSION` to `1.94` so the target adds and the build share a
toolchain.

### Result

Rerunning the workflow builds the macOS and musl jobs cleanly and
publishes a release from c57f825, which #159 can then consume.

### Test plan

- [x] Built the c57f825 core with 1.94 for `x86_64-apple-darwin` (the
failing slice) and `aarch64-apple-darwin`, and ran a worker connect +
workflow test on the arm64 build end-to-end which passes.
- [ ] musl/iOS slices and the full matrix: the workflow rerun and #159's
CI.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

🔨 semver/patch No public API change.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants