diff --git a/backend/Cargo.lock b/backend/Cargo.lock index 5b9aa79e..20235b5e 100644 --- a/backend/Cargo.lock +++ b/backend/Cargo.lock @@ -2803,6 +2803,7 @@ dependencies = [ "http-body", "http-body-util", "pin-project-lite", + "tokio", "tower-layer", "tower-service", "tracing", diff --git a/backend/config-e2e.yml b/backend/config-e2e.yml index e8fc6fd8..ff916c3f 100644 --- a/backend/config-e2e.yml +++ b/backend/config-e2e.yml @@ -1,23 +1,24 @@ database: - databases_directory_path: databases - max_connections_per_vault: 12 + databases_directory_path: databases + max_connections_per_vault: 12 server: - host: 0.0.0.0 - port: 3000 - max_body_size_mb: 512 - max_clients_per_vault: 256 + host: 0.0.0.0 + port: 3000 + max_body_size_mb: 512 + max_clients_per_vault: 256 + response_timeout_seconds: 60 users: - user_tokens: - - name: admin - token: test-token-change-me - vault_access: - type: allow_access_to_all + user_tokens: + - name: admin + token: test-token-change-me + vault_access: + type: allow_access_to_all - - name: test - token: other-test-token - vault_access: - type: allow_list - allowed: - - default + - name: test + token: other-test-token + vault_access: + type: allow_list + allowed: + - default diff --git a/backend/sync_server/Cargo.toml b/backend/sync_server/Cargo.toml index 7d8e892f..4c8c655a 100644 --- a/backend/sync_server/Cargo.toml +++ b/backend/sync_server/Cargo.toml @@ -21,7 +21,7 @@ axum = { version = "0.7.4", features = ["ws", "macros", "tracing", "multipart"]} axum-extra = { version = "0.9.6", features = ["typed-header"] } aide-axum-typed-multipart = "0.13.0" axum_typed_multipart = "0.11.0" -tower-http = { version = "0.6.1", features = ["cors", "trace", "limit"] } +tower-http = { version = "0.6.1", features = ["cors", "trace", "limit", "timeout"] } tracing-subscriber = { version = "0.3.19", features = ["fmt", "env-filter"]} serde_yaml = "0.9.34" sqlx = { version = "0.8.3", features = ["sqlite", "runtime-tokio", "uuid", "chrono"] } diff --git a/backend/sync_server/src/config/server_config.rs b/backend/sync_server/src/config/server_config.rs index 077bd8d8..ce922fb9 100644 --- a/backend/sync_server/src/config/server_config.rs +++ b/backend/sync_server/src/config/server_config.rs @@ -3,9 +3,10 @@ use serde::{Deserialize, Serialize}; use crate::consts::{ DEFAULT_HOST, DEFAULT_MAX_BODY_SIZE_MB, DEFAULT_MAX_CLIENTS_PER_VAULT, DEFAULT_PORT, + DEFAULT_RESPONSE_TIMEOUT_SECONDS, }; -#[derive(Debug, Deserialize, Serialize, Clone)] +#[derive(Debug, Deserialize, Serialize, Clone, Default)] pub struct ServerConfig { #[serde(default = "default_host")] pub host: String, @@ -18,6 +19,9 @@ pub struct ServerConfig { #[serde(default = "default_max_clients_per_vault")] pub max_clients_per_vault: usize, + + #[serde(default = "default_response_timeout_seconds")] + pub response_timeout_seconds: u64, } fn default_host() -> String { @@ -40,13 +44,7 @@ fn default_max_clients_per_vault() -> usize { DEFAULT_MAX_CLIENTS_PER_VAULT } -impl Default for ServerConfig { - fn default() -> Self { - Self { - host: default_host(), - port: default_port(), - max_body_size_mb: default_max_body_size_mb(), - max_clients_per_vault: default_max_clients_per_vault(), - } - } +fn default_response_timeout_seconds() -> u64 { + debug!("Using default response timeout (seconds): {DEFAULT_RESPONSE_TIMEOUT_SECONDS}"); + DEFAULT_RESPONSE_TIMEOUT_SECONDS } diff --git a/backend/sync_server/src/consts.rs b/backend/sync_server/src/consts.rs index 1453f25a..57fb2559 100644 --- a/backend/sync_server/src/consts.rs +++ b/backend/sync_server/src/consts.rs @@ -4,4 +4,5 @@ pub const DEFAULT_HOST: &str = "127.0.0.1"; pub const DEFAULT_PORT: u16 = 3000; pub const DEFAULT_MAX_CONNECTIONS_PER_VAULT: u32 = 12; pub const DEFAULT_MAX_BODY_SIZE_MB: usize = 4096; +pub const DEFAULT_RESPONSE_TIMEOUT_SECONDS: u64 = 60; pub const DEFAULT_MAX_CLIENTS_PER_VAULT: usize = 256;