@@ -22,6 +22,7 @@ use ballista_scheduler::externalscaler::external_scaler_server::ExternalScalerSe
2222use futures:: future:: { self , Either , TryFutureExt } ;
2323use hyper:: { server:: conn:: AddrStream , service:: make_service_fn, Server } ;
2424use std:: convert:: Infallible ;
25+ use std:: net:: { IpAddr , Ipv4Addr } ;
2526use std:: { net:: SocketAddr , sync:: Arc } ;
2627use tonic:: transport:: Server as TonicServer ;
2728use tower:: Service ;
@@ -62,14 +63,18 @@ async fn start_server(
6263 "Ballista v{} Scheduler listening on {:?}" ,
6364 BALLISTA_VERSION , addr
6465 ) ;
66+ //should only call SchedulerServer::new() once in the process
67+ let scheduler_server_without_caller_ip = SchedulerServer :: new (
68+ config_backend. clone ( ) ,
69+ namespace. clone ( ) ,
70+ IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) ,
71+ ) ;
6572
6673 Ok ( Server :: bind ( & addr)
6774 . serve ( make_service_fn ( move |request : & AddrStream | {
68- let scheduler_server = SchedulerServer :: new (
69- config_backend. clone ( ) ,
70- namespace. clone ( ) ,
71- request. remote_addr ( ) . ip ( ) ,
72- ) ;
75+ let mut scheduler_server = scheduler_server_without_caller_ip. clone ( ) ;
76+ scheduler_server. set_caller_ip ( request. remote_addr ( ) . ip ( ) ) ;
77+
7378 let scheduler_grpc_server =
7479 SchedulerGrpcServer :: new ( scheduler_server. clone ( ) ) ;
7580
0 commit comments