Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .env-example
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,5 @@ GRPC_PORT=50051

DEFINITIONS='./definitions'
RUNTIME_STATUS_UPDATE_INTERVAL_SECONDS=30
AQUILA_GRPC_CONNECT_TIMEOUT_SECS=2
AQUILA_GRPC_REQUEST_TIMEOUT_SECS=10
4 changes: 2 additions & 2 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ edition = "2024"

[workspace.dependencies]
async-trait = "0.1.89"
code0-flow = { version = "0.0.37" }
code0-flow = { version = "0.0.38" }
tucana = { version = "0.0.75" }
tokio = { version = "1.44.1", features = ["rt-multi-thread", "signal"] }
log = "0.4.27"
Expand Down
6 changes: 6 additions & 0 deletions crates/taurus/src/app/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,8 @@ async fn setup_dynamic_services_if_needed(
TaurusRuntimeExecutionService::from_url(
config.aquila_url.clone(),
config.aquila_token.clone(),
Duration::from_secs(config.aquila_grpc_connect_timeout_secs),
Duration::from_secs(config.aquila_grpc_request_timeout_secs),
)
.await,
);
Expand All @@ -127,6 +129,8 @@ async fn setup_dynamic_services_if_needed(
config.aquila_url.clone(),
config.aquila_token.clone(),
read_module_status_identifiers(config.definitions.as_str()),
Duration::from_secs(config.aquila_grpc_connect_timeout_secs),
Duration::from_secs(config.aquila_grpc_request_timeout_secs),
)
.await,
));
Expand Down Expand Up @@ -199,6 +203,8 @@ async fn push_definitions_until_success(config: &Config) {
config.aquila_url.clone(),
config.definitions.as_str(),
config.aquila_token.clone(),
Duration::from_secs(config.aquila_grpc_connect_timeout_secs),
Duration::from_secs(config.aquila_grpc_request_timeout_secs),
)
.await
.with_definition_source(String::from("taurus"));
Expand Down
11 changes: 9 additions & 2 deletions crates/taurus/src/client/runtime_execution.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use code0_flow::flow_service::{
auth::get_authorization_metadata, retry::create_channel_with_retry,
};
use std::time::Duration;
use tonic::{Extensions, Request, transport::Channel};
use tucana::{
aquila::{ExecutionRequest, execution_service_client::ExecutionServiceClient},
Expand All @@ -16,8 +17,14 @@ pub struct TaurusRuntimeExecutionService {
}

impl TaurusRuntimeExecutionService {
pub async fn from_url(aquila_url: String, aquila_token: String) -> Self {
let channel = create_channel_with_retry("Aquila", aquila_url).await;
pub async fn from_url(
aquila_url: String,
aquila_token: String,
connect_timeout: Duration,
request_timeout: Duration,
) -> Self {
let channel =
create_channel_with_retry("Aquila", aquila_url, connect_timeout, request_timeout).await;
let client = ExecutionServiceClient::new(channel);

TaurusRuntimeExecutionService {
Expand Down
7 changes: 5 additions & 2 deletions crates/taurus/src/client/runtime_status.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use std::time::{SystemTime, UNIX_EPOCH};
use std::time::{Duration, SystemTime, UNIX_EPOCH};

use code0_flow::flow_service::{
auth::get_authorization_metadata, retry::create_channel_with_retry,
Expand All @@ -22,8 +22,11 @@ impl TaurusRuntimeStatusService {
aquila_url: String,
aquila_token: String,
identifiers: Vec<String>,
connect_timeout: Duration,
request_timeout: Duration,
) -> Self {
let channel = create_channel_with_retry("Aquila", aquila_url).await;
let channel =
create_channel_with_retry("Aquila", aquila_url, connect_timeout, request_timeout).await;
Self::new(channel, aquila_token, identifiers)
}

Expand Down
14 changes: 14 additions & 0 deletions crates/taurus/src/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,12 @@ pub struct Config {
/// Runtime status heartbeat interval in seconds while Taurus is running.
/// Set to 0 to disable periodic heartbeat updates.
pub runtime_status_update_interval_seconds: u64,

/// Timeout in seconds for establishing Aquila gRPC channels.
pub aquila_grpc_connect_timeout_secs: u64,

/// Timeout in seconds for Aquila gRPC requests.
pub aquila_grpc_request_timeout_secs: u64,
}

/// Implementation for all relevant `Taurus` startup configurations
Expand All @@ -52,6 +58,14 @@ impl Config {
"RUNTIME_STATUS_UPDATE_INTERVAL_SECONDS",
30_u64,
),
aquila_grpc_connect_timeout_secs: env_with_default(
"AQUILA_GRPC_CONNECT_TIMEOUT_SECS",
2_u64,
),
aquila_grpc_request_timeout_secs: env_with_default(
"AQUILA_GRPC_REQUEST_TIMEOUT_SECS",
10_u64,
),
}
}
}
2 changes: 2 additions & 0 deletions docs/dev.md
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,8 @@ Defaults are defined in `crates/taurus/src/config/mod.rs`.
| `GRPC_PORT` | Health server port | `50051` |
| `DEFINITIONS` | Path sent to `FlowUpdateService` for definition sync | `./definitions` |
| `RUNTIME_STATUS_UPDATE_INTERVAL_SECONDS` | Heartbeat interval in dynamic mode (`0` disables heartbeat) | `30` |
| `AQUILA_GRPC_CONNECT_TIMEOUT_SECS` | Timeout in seconds for establishing Aquila gRPC channels | `2` |
| `AQUILA_GRPC_REQUEST_TIMEOUT_SECS` | Timeout in seconds for Aquila gRPC requests | `10` |

## Local Development

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