diff --git a/packages/core-bridge/Cargo.lock b/packages/core-bridge/Cargo.lock index f9fba31ea..e7c1cf06e 100644 --- a/packages/core-bridge/Cargo.lock +++ b/packages/core-bridge/Cargo.lock @@ -373,20 +373,6 @@ dependencies = [ "syn", ] -[[package]] -name = "dashmap" -version = "6.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" -dependencies = [ - "cfg-if", - "crossbeam-utils", - "hashbrown 0.14.5", - "lock_api", - "once_cell", - "parking_lot_core", -] - [[package]] name = "derive_more" version = "2.1.1" @@ -686,12 +672,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" - [[package]] name = "futures-util" version = "0.3.31" @@ -761,29 +741,6 @@ dependencies = [ "wasip3", ] -[[package]] -name = "governor" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9efcab3c1958580ff1f25a2a41be1668f7603d849bb63af523b208a3cc1223b8" -dependencies = [ - "cfg-if", - "dashmap", - "futures-sink", - "futures-timer", - "futures-util", - "getrandom 0.3.4", - "hashbrown 0.16.1", - "nonzero_ext", - "parking_lot", - "portable-atomic", - "quanta", - "rand 0.9.2", - "smallvec", - "spinning_top", - "web-time", -] - [[package]] name = "h2" version = "0.4.13" @@ -803,12 +760,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "hashbrown" -version = "0.14.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" - [[package]] name = "hashbrown" version = "0.15.5" @@ -913,6 +864,7 @@ dependencies = [ "hyper", "hyper-util", "rustls", + "rustls-native-certs", "rustls-pki-types", "tokio", "tokio-rustls", @@ -1409,12 +1361,6 @@ dependencies = [ "syn", ] -[[package]] -name = "nonzero_ext" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" - [[package]] name = "ntapi" version = "0.4.3" @@ -1516,7 +1462,6 @@ dependencies = [ "thiserror 2.0.18", "tokio", "tonic", - "tracing", ] [[package]] @@ -1885,21 +1830,6 @@ dependencies = [ "pulldown-cmark", ] -[[package]] -name = "quanta" -version = "0.12.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3ab5a9d756f0d97bdc89019bd2e4ea098cf9cde50ee7564dde6b81ccc8f06c7" -dependencies = [ - "crossbeam-utils", - "libc", - "once_cell", - "raw-cpuid", - "wasi", - "web-sys", - "winapi", -] - [[package]] name = "quinn" version = "0.11.9" @@ -2047,15 +1977,6 @@ version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" -[[package]] -name = "raw-cpuid" -version = "11.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "498cd0dc59d73224351ee52a95fee0f1a617a2eae0e7d9d720cc622c73a54186" -dependencies = [ - "bitflags", -] - [[package]] name = "redox_syscall" version = "0.5.18" @@ -2129,16 +2050,22 @@ dependencies = [ "http-body", "http-body-util", "hyper", + "hyper-rustls", "hyper-util", "js-sys", "log", "percent-encoding", "pin-project-lite", + "quinn", + "rustls", + "rustls-native-certs", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", "tokio", + "tokio-rustls", "tower", "tower-http", "tower-service", @@ -2522,15 +2449,6 @@ dependencies = [ "windows-sys 0.60.2", ] -[[package]] -name = "spinning_top" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96d2d1d716fb500937168cc09353ffdc7a012be8475ac7308e1bdf0e3923300" -dependencies = [ - "lock_api", -] - [[package]] name = "stable_deref_trait" version = "1.2.1" @@ -2647,7 +2565,7 @@ dependencies = [ [[package]] name = "temporalio-client" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "async-trait", @@ -2677,7 +2595,7 @@ dependencies = [ [[package]] name = "temporalio-common" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "async-trait", @@ -2722,7 +2640,7 @@ dependencies = [ [[package]] name = "temporalio-macros" -version = "0.2.0" +version = "0.3.0" dependencies = [ "proc-macro2", "quote", @@ -2731,7 +2649,7 @@ dependencies = [ [[package]] name = "temporalio-sdk-core" -version = "0.2.0" +version = "0.3.0" dependencies = [ "anyhow", "async-trait", @@ -2739,7 +2657,6 @@ dependencies = [ "bon", "crossbeam-channel", "crossbeam-utils", - "dashmap", "derive_more", "enum-iterator", "enum_dispatch", @@ -2747,7 +2664,6 @@ dependencies = [ "futures", "futures-util", "gethostname", - "governor", "itertools", "lru", "mockall", @@ -3224,8 +3140,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee48d38b119b0cd71fe4141b30f5ba9c7c5d9f4e7a3a8b4a674e4b6ef789976f" dependencies = [ "getrandom 0.3.4", - "js-sys", - "wasm-bindgen", ] [[package]] diff --git a/packages/core-bridge/sdk-core b/packages/core-bridge/sdk-core index 08adc4a43..30c4a3135 160000 --- a/packages/core-bridge/sdk-core +++ b/packages/core-bridge/sdk-core @@ -1 +1 @@ -Subproject commit 08adc4a43be357a214fe80ae64f877a0ca8c8ee2 +Subproject commit 30c4a3135f617d9d465a6478a8154fefd5466e87 diff --git a/packages/core-bridge/src/client.rs b/packages/core-bridge/src/client.rs index 55fcfc1d3..b3f560c21 100644 --- a/packages/core-bridge/src/client.rs +++ b/packages/core-bridge/src/client.rs @@ -627,12 +627,20 @@ mod config { metrics_meter: Option, ) -> ConnectionOptions { let (ascii_headers, bin_headers) = partition_headers(self.headers); + let http_connect_proxy = self.http_connect_proxy.map(Into::into); ConnectionOptions::new(self.target_url) .client_name(self.client_name) .client_version(self.client_version) .maybe_tls_options(self.tls.map(Into::into)) - .maybe_http_connect_proxy(self.http_connect_proxy.map(Into::into)) + .maybe_http_connect_proxy(http_connect_proxy.clone()) + // DNS load balancing is mutually exclusive with HTTP CONNECT proxy in sdk-core. + // Disable it when a proxy is configured; otherwise use the default. + .dns_load_balancing(if http_connect_proxy.is_some() { + None + } else { + Some(temporalio_client::DnsLoadBalancingOptions::default()) + }) .maybe_headers(ascii_headers) .maybe_binary_headers(bin_headers) .maybe_api_key(self.api_key) diff --git a/packages/core-bridge/src/worker.rs b/packages/core-bridge/src/worker.rs index 979d1a74b..09a4d08be 100644 --- a/packages/core-bridge/src/worker.rs +++ b/packages/core-bridge/src/worker.rs @@ -339,6 +339,12 @@ pub fn worker_complete_nexus_task( #[js_function] pub fn worker_initiate_shutdown(worker: OpaqueInboundHandle) -> BridgeResult<()> { let worker_ref = worker.borrow()?; + + // Core worker shutdown now spawns a Tokio task, so this sync Neon binding must + // enter Core's Tokio runtime before initiating shutdown. + let runtime = worker_ref.core_runtime.clone(); + enter_sync!(runtime); + worker_ref.core_worker.initiate_shutdown(); Ok(()) }