Skip to content

Commit 53ee3cf

Browse files
committed
(fix) reverted back to static port through .env config
Implementing dynamic backend port through .env to avoid issues with port collision though we default to 50051 still
1 parent d7f5a02 commit 53ee3cf

6 files changed

Lines changed: 6 additions & 65 deletions

File tree

‎backend/Cargo.lock‎

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎backend/api/Cargo.toml‎

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ prost = "0.14.1"
1818
tonic = "0.14.2"
1919
tonic-middleware = "0.4.0"
2020
tonic-prost = "0.14.2"
21-
tokio-stream = "0.1"
2221
tonic-web = "0.14.2"
2322
tower-http = { version = "0.6.6", features = ["cors"] }
2423
clerk-rs = { version = "0.4.2", features = ["axum"] }

‎backend/api/src/grpc.rs‎

Lines changed: 5 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use tokio::net::TcpListener;
21
use tonic::transport::Server;
32
use tonic_web::GrpcWebLayer;
43

@@ -13,29 +12,15 @@ use crate::services::HelloWorldServiceImpl;
1312
pub mod middleware;
1413
pub mod services;
1514

16-
const MAX_PORT_ATTEMPTS: u16 = 10;
17-
18-
async fn bind_listener(start_port: u16) -> Result<(TcpListener, u16), Box<dyn std::error::Error>> {
19-
for offset in 0..MAX_PORT_ATTEMPTS {
20-
let port = start_port + offset;
21-
match TcpListener::bind(format!("0.0.0.0:{}", port)).await {
22-
Ok(listener) => return Ok((listener, port)),
23-
Err(e) if offset < MAX_PORT_ATTEMPTS - 1 => {
24-
tracing::warn!("Port {} unavailable ({}), trying {}...", port, e, port + 1);
25-
}
26-
Err(e) => return Err(format!("No available port found after {} attempts: {}", MAX_PORT_ATTEMPTS, e).into()),
27-
}
28-
}
29-
unreachable!()
30-
}
31-
3215
#[tokio::main]
3316
async fn main() -> Result<(), Box<dyn std::error::Error>> {
3417
dotenv::dotenv().ok();
3518
tracing_subscriber::fmt().with_env_filter("info").init();
3619

37-
let (listener, port) = bind_listener(50051).await?;
38-
let incoming = tokio_stream::wrappers::TcpListenerStream::new(listener);
20+
let port: u16 = std::env::var("GRPC_PORT")
21+
.unwrap_or_else(|_| "50051".to_string())
22+
.parse()?;
23+
let addr = format!("0.0.0.0:{}", port).parse()?;
3924

4025
// Initialize database
4126
let db_config = data::DatabaseConfig::from_env();
@@ -57,7 +42,7 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
5742
.layer(GrpcWebLayer::new())
5843
// .layer(RequestInterceptorLayer::new(auth_interceptor.clone()))
5944
.add_service(GreeterServer::new(greeter_service))
60-
.serve_with_incoming(incoming)
45+
.serve(addr)
6146
.await?;
6247

6348
Ok(())

‎frontend/bun.lockb‎

0 Bytes
Binary file not shown.

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@
44
"scripts": {
55
"dev:backend": "cd backend/api && cargo run --bin grpc-server",
66
"dev:frontend": "cd frontend && bun dev",
7-
"dev": "bash scripts/dev.sh"
7+
"dev": "concurrently \"bun run dev:backend\" \"bun run dev:frontend\""
88
}
99
}

‎scripts/dev.sh‎

Lines changed: 0 additions & 42 deletions
This file was deleted.

0 commit comments

Comments
 (0)