Skip to content

Conversation

@yuandrew
Copy link
Contributor

@yuandrew yuandrew commented Oct 14, 2025

What was changed

Send plugin names over to core for worker heartbeating.

Updated Core to latest main, 9e9a461.

Updated test to validate replacing clients with a client from a different runtime is invalid.

Why?

Worker heartbeating

Checklist

  1. Closes [Feature Request] Enable Worker Heartbeating #1196

  2. How was this tested:

Added tests for plugin name propogation, and runtime options configuration

  1. Any docs updates needed?

Note

Forwards worker plugin names to Core, introduces runtime heartbeat options, upgrades bridge to new temporalio core crates, and updates tests/CI accordingly.

  • Worker/Bridge:
    • Add plugins to temporalio.bridge.worker.WorkerConfig and forward to Core as PluginInfo (for heartbeating).
    • Make replace_client return errors; Python Worker.client setter now enforces same runtime.
  • Runtime:
    • Introduce RuntimeOptions (telemetry + worker_heartbeat_interval_millis) and switch init_runtime to use it.
    • Python Runtime accepts worker_heartbeat_interval and passes options to bridge.
  • Core/Deps:
    • Migrate to temporalio-* crates (client/common/sdk-core) and bump deps (prost 0.14, tonic 0.14, opentelemetry 0.31, etc.).
  • Client API:
    • Expose Client.plugins.
  • Tests:
    • Add tests for plugin name propagation to Core, runtime heartbeat options, and rejecting client replacement across runtimes; minor metrics assertion tweak.
  • CI:
    • Ensure poe lint runs (after build) in CI jobs.

Written by Cursor Bugbot for commit a4c50ee. This will update automatically on new commits. Configure here.

@yuandrew yuandrew marked this pull request as ready for review October 21, 2025 01:04
@yuandrew yuandrew requested a review from a team as a code owner October 21, 2025 01:04
)
.nexus_task_poller_behavior(conf.nexus_task_poller_behavior)
.plugins(
conf.plugins
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So, something that will need some discussion here. This PR reports worker plugins. We should discuss whether that is really what we intend. Plugins which exist only in the client and not the worker will be completely invisible. That could potentially be changed here at least for plugins in clients used by workers, though not generally for any client. I think that was something we didn't really think through when we decided to go with heartbeat as a carrier for this information, but maybe we conclude that is fine.

Typescript will be a bit more complicated as well with its additional plugin types.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed offline, we will for now have both worker and client plugins and dedup names

Copy link
Member

@Sushisource Sushisource left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking good to me, only thing is the default interval

Copy link
Member

@Sushisource Sushisource left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature Request] Enable Worker Heartbeating

4 participants