From d774996e89648dbdf25326cc8440b51847095abb Mon Sep 17 00:00:00 2001 From: discord9 <55937128+discord9@users.noreply.github.com> Date: Fri, 22 Aug 2025 12:22:49 +0800 Subject: [PATCH] chore: make internal grpc optional (#6789) * chore: make internal grpc optional Signed-off-by: discord9 * revert sqlness runner too Signed-off-by: discord9 --------- Signed-off-by: discord9 --- src/frontend/src/frontend.rs | 4 ++-- src/frontend/src/heartbeat.rs | 12 ++++++++---- src/frontend/src/server.rs | 6 +++--- tests-integration/src/cluster.rs | 10 +--------- tests/conf/frontend-test.toml.template | 4 ---- tests/runner/src/server_mode.rs | 15 --------------- 6 files changed, 14 insertions(+), 37 deletions(-) diff --git a/src/frontend/src/frontend.rs b/src/frontend/src/frontend.rs index 3829cda718..137e988154 100644 --- a/src/frontend/src/frontend.rs +++ b/src/frontend/src/frontend.rs @@ -50,7 +50,7 @@ pub struct FrontendOptions { pub grpc: GrpcOptions, /// The internal gRPC options for the frontend service. /// it provide the same service as the public gRPC service, just only for internal use. - pub internal_grpc: GrpcOptions, + pub internal_grpc: Option, pub mysql: MysqlOptions, pub postgres: PostgresOptions, pub opentsdb: OpentsdbOptions, @@ -80,7 +80,7 @@ impl Default for FrontendOptions { heartbeat: HeartbeatOptions::frontend_default(), http: HttpOptions::default(), grpc: GrpcOptions::default(), - internal_grpc: GrpcOptions::internal_default(), + internal_grpc: None, mysql: MysqlOptions::default(), postgres: PostgresOptions::default(), opentsdb: OpentsdbOptions::default(), diff --git a/src/frontend/src/heartbeat.rs b/src/frontend/src/heartbeat.rs index dd0e89399d..add975385e 100644 --- a/src/frontend/src/heartbeat.rs +++ b/src/frontend/src/heartbeat.rs @@ -56,10 +56,14 @@ impl HeartbeatTask { resp_handler_executor: HeartbeatResponseHandlerExecutorRef, ) -> Self { HeartbeatTask { - peer_addr: addrs::resolve_addr( - &opts.internal_grpc.bind_addr, - Some(&opts.internal_grpc.server_addr), - ), + // if internal grpc is configured, use its address as the peer address + // otherwise use the public grpc address, because peer address only promises to be reachable + // by other components, it doesn't matter whether it's internal or external + peer_addr: if let Some(internal) = &opts.internal_grpc { + addrs::resolve_addr(&internal.bind_addr, Some(&internal.server_addr)) + } else { + addrs::resolve_addr(&opts.grpc.bind_addr, Some(&opts.grpc.server_addr)) + }, meta_client, report_interval: heartbeat_opts.interval.as_millis() as u64, retry_interval: heartbeat_opts.retry_interval.as_millis() as u64, diff --git a/src/frontend/src/server.rs b/src/frontend/src/server.rs index b198604e42..ab33a5b500 100644 --- a/src/frontend/src/server.rs +++ b/src/frontend/src/server.rs @@ -218,11 +218,11 @@ where handlers.insert((Box::new(grpc_server), grpc_addr)); } - if opts.meta_client.is_some() { + if let Some(internal_grpc) = &opts.internal_grpc { // Always init Internal GRPC server - let grpc_addr = parse_addr(&opts.internal_grpc.bind_addr)?; + let grpc_addr = parse_addr(&internal_grpc.bind_addr)?; let grpc_server = self.build_grpc_server( - &opts.grpc, + internal_grpc, &opts.meta_client, Some("INTERNAL_GRPC_SERVER".to_string()), false, diff --git a/tests-integration/src/cluster.rs b/tests-integration/src/cluster.rs index 4a037413bd..8242e4022e 100644 --- a/tests-integration/src/cluster.rs +++ b/tests-integration/src/cluster.rs @@ -445,10 +445,7 @@ impl GreptimeDbClusterBuilder { } fn build_frontend_options(&self) -> FrontendOptions { - let mut fe_opts = FrontendOptions { - meta_client: Some(Default::default()), - ..Default::default() - }; + let mut fe_opts = FrontendOptions::default(); // Choose a random unused port between [14000, 24000] for local test to avoid conflicts. let port_range = 14000..=24000; @@ -466,11 +463,6 @@ impl GreptimeDbClusterBuilder { fe_opts.grpc.bind_addr = construct_addr(grpc_port); fe_opts.grpc.server_addr = construct_addr(grpc_port); - let internal_grpc_port = - self.choose_random_unused_port(port_range.clone(), max_attempts, localhost); - fe_opts.internal_grpc.bind_addr = construct_addr(internal_grpc_port); - fe_opts.internal_grpc.server_addr = construct_addr(internal_grpc_port); - fe_opts.mysql.addr = construct_addr(self.choose_random_unused_port( port_range.clone(), max_attempts, diff --git a/tests/conf/frontend-test.toml.template b/tests/conf/frontend-test.toml.template index 9d8bbdfd5e..de4ce86adc 100644 --- a/tests/conf/frontend-test.toml.template +++ b/tests/conf/frontend-test.toml.template @@ -1,7 +1,3 @@ [grpc] bind_addr = "{grpc_addr}" server_addr = "{grpc_addr}" - -[internal_grpc] -bind_addr = "{internal_grpc_addr}" -server_addr = "{internal_grpc_addr}" diff --git a/tests/runner/src/server_mode.rs b/tests/runner/src/server_mode.rs index 3b04299142..b3d471da46 100644 --- a/tests/runner/src/server_mode.rs +++ b/tests/runner/src/server_mode.rs @@ -60,7 +60,6 @@ pub enum ServerMode { Frontend { http_addr: String, rpc_bind_addr: String, - internal_rpc_bind_addr: String, mysql_addr: String, postgres_addr: String, metasrv_addr: String, @@ -101,8 +100,6 @@ struct ConfigContext { metasrv_addr: String, // for frontend and standalone grpc_addr: String, - // for frontend in distributed mode - internal_grpc_addr: String, // for standalone mysql_addr: String, // for standalone @@ -127,14 +124,12 @@ impl ServerMode { pub fn random_frontend(metasrv_port: u16) -> Self { let http_port = get_unique_random_port(); let rpc_port = get_unique_random_port(); - let internal_rpc_port = get_unique_random_port(); let mysql_port = get_unique_random_port(); let postgres_port = get_unique_random_port(); ServerMode::Frontend { http_addr: format!("127.0.0.1:{http_port}"), rpc_bind_addr: format!("127.0.0.1:{rpc_port}"), - internal_rpc_bind_addr: format!("127.0.0.1:{internal_rpc_port}"), mysql_addr: format!("127.0.0.1:{mysql_port}"), postgres_addr: format!("127.0.0.1:{postgres_port}"), metasrv_addr: format!("127.0.0.1:{metasrv_port}"), @@ -329,15 +324,6 @@ impl ServerMode { instance_id: id, metasrv_addr, grpc_addr, - internal_grpc_addr: if let ServerMode::Frontend { - internal_rpc_bind_addr, - .. - } = self - { - internal_rpc_bind_addr.clone() - } else { - String::new() - }, mysql_addr, postgres_addr, }; @@ -395,7 +381,6 @@ impl ServerMode { ServerMode::Frontend { http_addr, rpc_bind_addr, - internal_rpc_bind_addr: _, mysql_addr, postgres_addr, metasrv_addr,