Skip to content

Commit 7182d14

Browse files
committed
feat: made aquila grpc timeout configurable
1 parent 97a114e commit 7182d14

7 files changed

Lines changed: 40 additions & 4 deletions

File tree

.env-example

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,5 @@ GRPC_PORT=50051
1111

1212
DEFINITIONS='./definitions'
1313
RUNTIME_STATUS_UPDATE_INTERVAL_SECONDS=30
14+
AQUILA_GRPC_CONNECT_TIMEOUT_SECS=2
15+
AQUILA_GRPC_REQUEST_TIMEOUT_SECS=10

crates/taurus/src/app/mod.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ async fn setup_dynamic_services_if_needed(
118118
TaurusRuntimeExecutionService::from_url(
119119
config.aquila_url.clone(),
120120
config.aquila_token.clone(),
121+
Duration::from_secs(config.aquila_grpc_connect_timeout_secs),
122+
Duration::from_secs(config.aquila_grpc_request_timeout_secs),
121123
)
122124
.await,
123125
);
@@ -127,6 +129,8 @@ async fn setup_dynamic_services_if_needed(
127129
config.aquila_url.clone(),
128130
config.aquila_token.clone(),
129131
read_module_status_identifiers(config.definitions.as_str()),
132+
Duration::from_secs(config.aquila_grpc_connect_timeout_secs),
133+
Duration::from_secs(config.aquila_grpc_request_timeout_secs),
130134
)
131135
.await,
132136
));
@@ -199,6 +203,8 @@ async fn push_definitions_until_success(config: &Config) {
199203
config.aquila_url.clone(),
200204
config.definitions.as_str(),
201205
config.aquila_token.clone(),
206+
Duration::from_secs(config.aquila_grpc_connect_timeout_secs),
207+
Duration::from_secs(config.aquila_grpc_request_timeout_secs),
202208
)
203209
.await
204210
.with_definition_source(String::from("taurus"));

crates/taurus/src/client/runtime_execution.rs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use code0_flow::flow_service::{
22
auth::get_authorization_metadata, retry::create_channel_with_retry,
33
};
4+
use std::time::Duration;
45
use tonic::{Extensions, Request, transport::Channel};
56
use tucana::{
67
aquila::{ExecutionRequest, execution_service_client::ExecutionServiceClient},
@@ -16,8 +17,14 @@ pub struct TaurusRuntimeExecutionService {
1617
}
1718

1819
impl TaurusRuntimeExecutionService {
19-
pub async fn from_url(aquila_url: String, aquila_token: String) -> Self {
20-
let channel = create_channel_with_retry("Aquila", aquila_url).await;
20+
pub async fn from_url(
21+
aquila_url: String,
22+
aquila_token: String,
23+
connect_timeout: Duration,
24+
request_timeout: Duration,
25+
) -> Self {
26+
let channel =
27+
create_channel_with_retry("Aquila", aquila_url, connect_timeout, request_timeout).await;
2128
let client = ExecutionServiceClient::new(channel);
2229

2330
TaurusRuntimeExecutionService {

crates/taurus/src/client/runtime_status.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use std::time::{SystemTime, UNIX_EPOCH};
1+
use std::time::{Duration, SystemTime, UNIX_EPOCH};
22

33
use code0_flow::flow_service::{
44
auth::get_authorization_metadata, retry::create_channel_with_retry,
@@ -22,8 +22,11 @@ impl TaurusRuntimeStatusService {
2222
aquila_url: String,
2323
aquila_token: String,
2424
identifiers: Vec<String>,
25+
connect_timeout: Duration,
26+
request_timeout: Duration,
2527
) -> Self {
26-
let channel = create_channel_with_retry("Aquila", aquila_url).await;
28+
let channel =
29+
create_channel_with_retry("Aquila", aquila_url, connect_timeout, request_timeout).await;
2730
Self::new(channel, aquila_token, identifiers)
2831
}
2932

crates/taurus/src/config/mod.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,12 @@ pub struct Config {
3030
/// Runtime status heartbeat interval in seconds while Taurus is running.
3131
/// Set to 0 to disable periodic heartbeat updates.
3232
pub runtime_status_update_interval_seconds: u64,
33+
34+
/// Timeout in seconds for establishing Aquila gRPC channels.
35+
pub aquila_grpc_connect_timeout_secs: u64,
36+
37+
/// Timeout in seconds for Aquila gRPC requests.
38+
pub aquila_grpc_request_timeout_secs: u64,
3339
}
3440

3541
/// Implementation for all relevant `Taurus` startup configurations
@@ -52,6 +58,14 @@ impl Config {
5258
"RUNTIME_STATUS_UPDATE_INTERVAL_SECONDS",
5359
30_u64,
5460
),
61+
aquila_grpc_connect_timeout_secs: env_with_default(
62+
"AQUILA_GRPC_CONNECT_TIMEOUT_SECS",
63+
2_u64,
64+
),
65+
aquila_grpc_request_timeout_secs: env_with_default(
66+
"AQUILA_GRPC_REQUEST_TIMEOUT_SECS",
67+
10_u64,
68+
),
5569
}
5670
}
5771
}

docs/dev.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,8 @@ Defaults are defined in `crates/taurus/src/config/mod.rs`.
100100
| `GRPC_PORT` | Health server port | `50051` |
101101
| `DEFINITIONS` | Path sent to `FlowUpdateService` for definition sync | `./definitions` |
102102
| `RUNTIME_STATUS_UPDATE_INTERVAL_SECONDS` | Heartbeat interval in dynamic mode (`0` disables heartbeat) | `30` |
103+
| `AQUILA_GRPC_CONNECT_TIMEOUT_SECS` | Timeout in seconds for establishing Aquila gRPC channels | `2` |
104+
| `AQUILA_GRPC_REQUEST_TIMEOUT_SECS` | Timeout in seconds for Aquila gRPC requests | `10` |
103105

104106
## Local Development
105107

docs/installation.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,5 @@ Set `MODE=dynamic` when the IDE is required/needed.
101101
| `AQUILA_TOKEN` | Token used by Taurus to authenticate with Aquila. | `token` |
102102
| `DEFINITIONS` | Path to the runtime definition modules. | `./definitions` |
103103
| `RUNTIME_STATUS_UPDATE_INTERVAL_SECONDS` | Interval (in seconds) of updating the current runtime status. | `30s` |
104+
| `AQUILA_GRPC_CONNECT_TIMEOUT_SECS` | Timeout in seconds for establishing Aquila gRPC channels. | `2s` |
105+
| `AQUILA_GRPC_REQUEST_TIMEOUT_SECS` | Timeout in seconds for Aquila gRPC requests. | `10s` |

0 commit comments

Comments
 (0)