Skip to content

Commit 95f9987

Browse files
Update to socketaddr
1 parent 25c655e commit 95f9987

5 files changed

Lines changed: 60 additions & 64 deletions

File tree

Cargo.toml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,12 @@ prost = "0.13.1"
4040
ratatui = "0.28.0"
4141
serde = { version = "1.0.197", features = ["derive"] }
4242
strum = "0.26.2"
43-
tokio = { version = "1.36.0", features = ["macros", "process", "rt-multi-thread", "signal"] }
43+
tokio = { version = "1.36.0", features = [
44+
"macros",
45+
"process",
46+
"rt-multi-thread",
47+
"signal",
48+
] }
4449
tokio-stream = { version = "0.1.15", features = ["net"] }
4550
tokio-util = "0.7.10"
4651
toml = "0.8.12"

src/args.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,10 @@
1919
2020
use crate::config::get_data_dir;
2121
use clap::{Parser, Subcommand};
22-
use std::path::{Path, PathBuf};
22+
use std::{
23+
net::SocketAddr,
24+
path::{Path, PathBuf},
25+
};
2326

2427
const LONG_ABOUT: &str = "
2528
dft - DataFusion TUI
@@ -133,19 +136,19 @@ pub enum Command {
133136
#[clap(short, long)]
134137
config: Option<String>,
135138
#[clap(long, help = "Set the port to be used for server")]
136-
port: Option<String>,
139+
addr: Option<SocketAddr>,
137140
#[clap(long, help = "Set the port to be used for serving metrics")]
138-
metrics_port: Option<String>,
141+
metrics_addr: Option<SocketAddr>,
139142
},
140143
/// Start a FlightSQL server
141144
#[command(name = "serve-flightsql")]
142145
ServeFlightSql {
143146
#[clap(short, long)]
144147
config: Option<String>,
145148
#[clap(long, help = "Set the port to be used for server")]
146-
port: Option<String>,
149+
addr: Option<SocketAddr>,
147150
#[clap(long, help = "Set the port to be used for serving metrics")]
148-
metrics_port: Option<String>,
151+
metrics_addr: Option<SocketAddr>,
149152
},
150153
}
151154

src/config.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
2020
use std::path::PathBuf;
2121

22+
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
23+
2224
use datafusion_app::config::ExecutionConfig;
2325
use directories::{ProjectDirs, UserDirs};
2426
use lazy_static::lazy_static;
@@ -84,8 +86,8 @@ pub struct FlightSQLServerConfig {
8486
pub execution: ExecutionConfig,
8587
#[serde(default = "default_connection_url")]
8688
pub connection_url: String,
87-
#[serde(default = "default_server_metrics_port")]
88-
pub server_metrics_port: String,
89+
#[serde(default = "default_server_metrics_addr")]
90+
pub server_metrics_addr: SocketAddr,
8991
#[serde(default = "default_auth_config")]
9092
pub auth: AuthConfig,
9193
}
@@ -96,7 +98,7 @@ impl Default for FlightSQLServerConfig {
9698
Self {
9799
execution: default_execution_config(),
98100
connection_url: default_connection_url(),
99-
server_metrics_port: default_server_metrics_port(),
101+
server_metrics_addr: default_server_metrics_addr(),
100102
auth: default_auth_config(),
101103
}
102104
}
@@ -131,8 +133,8 @@ pub struct HttpServerConfig {
131133
pub execution: ExecutionConfig,
132134
#[serde(default = "default_connection_url")]
133135
pub connection_url: String,
134-
#[serde(default = "default_server_metrics_port")]
135-
pub server_metrics_port: String,
136+
#[serde(default = "default_server_metrics_addr")]
137+
pub server_metrics_addr: SocketAddr,
136138
#[serde(default = "default_auth_config")]
137139
pub auth: AuthConfig,
138140
#[serde(default = "default_timeout_seconds")]
@@ -147,7 +149,7 @@ impl Default for HttpServerConfig {
147149
Self {
148150
execution: default_execution_config(),
149151
connection_url: default_connection_url(),
150-
server_metrics_port: default_server_metrics_port(),
152+
server_metrics_addr: default_server_metrics_addr(),
151153
auth: default_auth_config(),
152154
timeout_seconds: default_timeout_seconds(),
153155
result_limit: default_result_limit(),
@@ -229,8 +231,8 @@ pub fn default_connection_url() -> String {
229231
}
230232

231233
#[cfg(any(feature = "flightsql", feature = "http"))]
232-
fn default_server_metrics_port() -> String {
233-
"0.0.0.0:9000".to_string()
234+
fn default_server_metrics_addr() -> SocketAddr {
235+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 9000)
234236
}
235237

236238
#[derive(Clone, Debug, Default, Deserialize)]

src/server/flightsql/mod.rs

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ use datafusion_app::extensions::DftSessionStateBuilder;
2626
use datafusion_app::local::ExecutionContext;
2727
use log::info;
2828
use service::FlightSqlServiceImpl;
29-
use std::net::SocketAddr;
29+
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
3030
use std::time::Duration;
3131
use tokio::net::TcpListener;
3232
use tokio::sync::oneshot;
@@ -121,8 +121,8 @@ impl FlightSqlApp {
121121
pub async fn try_new(
122122
app_execution: AppExecution,
123123
config: &AppConfig,
124-
addr: &str,
125-
metrics_addr: &str,
124+
addr: SocketAddr,
125+
metrics_addr: SocketAddr,
126126
) -> Result<Self> {
127127
info!("Listening to FlightSQL on {addr}");
128128
let flightsql = service::FlightSqlServiceImpl::new(app_execution);
@@ -132,7 +132,6 @@ impl FlightSqlApp {
132132
let (tx, rx) = tokio::sync::oneshot::channel();
133133
let handle = create_server_handle(config, flightsql, listener, rx)?;
134134

135-
let metrics_addr: SocketAddr = metrics_addr.parse()?;
136135
try_start_metrics_server(metrics_addr)?;
137136

138137
let app = Self {
@@ -192,43 +191,37 @@ pub async fn try_run(cli: DftArgs, config: AppConfig) -> Result<()> {
192191
let (addr, metrics_addr) = if let Some(cmd) = cli.command.clone() {
193192
match cmd {
194193
Command::ServeFlightSql {
195-
port: Some(port),
196-
metrics_port: Some(metrics_port),
194+
addr: Some(addr),
195+
metrics_addr: Some(metrics_addr),
197196
..
198-
} => (
199-
format!("localhost:{port}"),
200-
format!("0.0.0.0:{metrics_port}"),
201-
),
197+
} => (addr, metrics_addr),
202198
Command::ServeFlightSql {
203-
port: Some(port),
204-
metrics_port: None,
199+
addr: Some(addr),
200+
metrics_addr: None,
205201
..
206-
} => (
207-
format!("localhost:{port}"),
208-
config.flightsql_server.server_metrics_port.clone(),
209-
),
202+
} => (addr, config.flightsql_server.server_metrics_addr),
210203
Command::ServeFlightSql {
211-
port: None,
212-
metrics_port: Some(metrics_port),
204+
addr: None,
205+
metrics_addr: Some(metrics_addr),
213206
..
214207
} => (
215-
DEFAULT_SERVER_ADDRESS.to_string(),
216-
format!("0.0.0.0:{metrics_port}"),
208+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 50051),
209+
metrics_addr,
217210
),
218211

219212
_ => (
220-
DEFAULT_SERVER_ADDRESS.to_string(),
221-
config.flightsql_server.server_metrics_port.clone(),
213+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 50051),
214+
config.flightsql_server.server_metrics_addr,
222215
),
223216
}
224217
} else {
225218
(
226-
DEFAULT_SERVER_ADDRESS.to_string(),
227-
config.flightsql_server.server_metrics_port.clone(),
219+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 50051),
220+
config.flightsql_server.server_metrics_addr,
228221
)
229222
};
230223

231-
let app = FlightSqlApp::try_new(app_execution, &config, &addr, &metrics_addr).await?;
224+
let app = FlightSqlApp::try_new(app_execution, &config, addr, metrics_addr).await?;
232225
app.run().await;
233226
Ok(())
234227
}

src/server/http/mod.rs

Lines changed: 18 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
mod router;
1919

20-
use std::net::SocketAddr;
20+
use std::net::{IpAddr, Ipv4Addr, SocketAddr};
2121

2222
use crate::{
2323
args::{Command, DftArgs},
@@ -84,14 +84,13 @@ impl HttpApp {
8484
pub async fn try_new(
8585
execution: AppExecution,
8686
config: AppConfig,
87-
addr: &str,
88-
metrics_addr: &str,
87+
addr: SocketAddr,
88+
metrics_addr: SocketAddr,
8989
) -> Result<Self> {
9090
info!("Listening to HTTP on {addr}");
9191
let listener = TcpListener::bind(addr).await.unwrap();
9292
let router = create_router(execution, config.http_server);
9393

94-
let metrics_addr: SocketAddr = metrics_addr.parse()?;
9594
try_start_metrics_server(metrics_addr)?;
9695

9796
let app = Self { listener, router };
@@ -160,42 +159,36 @@ pub async fn try_run(cli: DftArgs, config: AppConfig) -> Result<()> {
160159
let (addr, metrics_addr) = if let Some(cmd) = cli.command.clone() {
161160
match cmd {
162161
Command::ServeHttp {
163-
port: Some(port),
164-
metrics_port: Some(metrics_port),
162+
addr: Some(addr),
163+
metrics_addr: Some(metrics_addr),
165164
..
166-
} => (
167-
format!("localhost:{port}"),
168-
format!("0.0.0.0:{metrics_port}"),
169-
),
165+
} => (addr, metrics_addr),
170166
Command::ServeHttp {
171-
port: Some(port),
172-
metrics_port: None,
167+
addr: Some(addr),
168+
metrics_addr: None,
173169
..
174-
} => (
175-
format!("localhost:{port}"),
176-
config.http_server.server_metrics_port.clone(),
177-
),
170+
} => (addr, config.http_server.server_metrics_addr.clone()),
178171
Command::ServeHttp {
179-
port: None,
180-
metrics_port: Some(metrics_port),
172+
addr: None,
173+
metrics_addr: Some(metrics_addr),
181174
..
182175
} => (
183-
DEFAULT_SERVER_ADDRESS.to_string(),
184-
format!("0.0.0.0:{metrics_port}"),
176+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080),
177+
metrics_addr,
185178
),
186179

187180
_ => (
188-
DEFAULT_SERVER_ADDRESS.to_string(),
189-
config.http_server.server_metrics_port.clone(),
181+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080),
182+
config.http_server.server_metrics_addr.clone(),
190183
),
191184
}
192185
} else {
193186
(
194-
DEFAULT_SERVER_ADDRESS.to_string(),
195-
config.http_server.server_metrics_port.clone(),
187+
SocketAddr::new(IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)), 8080),
188+
config.http_server.server_metrics_addr.clone(),
196189
)
197190
};
198-
let app = HttpApp::try_new(app_execution, config.clone(), &addr, &metrics_addr).await?;
191+
let app = HttpApp::try_new(app_execution, config.clone(), addr, metrics_addr).await?;
199192
app.run().await;
200193

201194
Ok(())

0 commit comments

Comments
 (0)