Unverified Commit ea9d00e7 authored by Yan Ru Pei's avatar Yan Ru Pei Committed by GitHub
Browse files

fix: allow router to be registered as general transport type (#4633)


Signed-off-by: default avatarPeaBrane <yanrpei@gmail.com>
parent 6a0e67ed
......@@ -10,11 +10,10 @@ use parking_lot::{Mutex, RwLock};
use tokio::sync::oneshot;
use dynamo_runtime::{
component::{Endpoint, TransportType},
component::{Endpoint, build_transport_type},
discovery::DiscoverySpec,
prelude::DistributedRuntimeProvider,
protocols::EndpointId,
transports::nats,
};
use crate::{
......@@ -318,18 +317,18 @@ impl ModelManager {
// Register router via discovery mechanism
let discovery = endpoint.component().drt().discovery();
let instance_id = discovery.instance_id();
let request_plane_mode = endpoint.drt().request_plane();
// Build NATS transport subject for the router endpoint
// Build transport for router endpoint based on request plane mode
// Use KV_ROUTER_COMPONENT as the component name to distinguish from the generate endpoint's component
let router_endpoint_id = router_endpoint_id(endpoint.id().namespace);
// Placeholder subject - router is not callable, only registered for lifecycle coordination
let nats_subject = nats::instance_subject(&router_endpoint_id, instance_id);
let transport = build_transport_type(request_plane_mode, &router_endpoint_id, instance_id);
let discovery_spec = DiscoverySpec::Endpoint {
namespace: router_endpoint_id.namespace.clone(),
component: router_endpoint_id.component.clone(),
endpoint: router_endpoint_id.name.clone(),
transport: TransportType::Nats(nats_subject),
transport,
};
discovery.register(discovery_spec).await?;
......
......@@ -65,6 +65,7 @@ mod registry;
pub mod service;
pub use client::Client;
pub use endpoint::build_transport_type;
#[derive(Debug, Clone, Serialize, Deserialize, Eq, PartialEq, Hash)]
#[serde(rename_all = "snake_case")]
......
......@@ -256,7 +256,7 @@ impl EndpointConfigBuilder {
/// - HTTP: Uses full URL path including endpoint name (e.g., http://host:port/v1/rpc/endpoint_name)
/// - TCP: Includes endpoint name for routing (e.g., host:port/endpoint_name)
/// - NATS: Uses subject-based addressing (unique per endpoint)
fn build_transport_type(
pub fn build_transport_type(
mode: RequestPlaneMode,
endpoint_id: &EndpointId,
connection_id: u64,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment