diff --git a/src/api/appservice_server.rs b/src/api/appservice_server.rs index 9d47f8b6670b9367d30db8666e944edc92df5b1c..e296ef264fcd91afdda8542c254ac66d66a7b0a5 100644 --- a/src/api/appservice_server.rs +++ b/src/api/appservice_server.rs @@ -44,7 +44,7 @@ pub(crate) async fn send_request<T: OutgoingRequest>( let mut reqwest_request = reqwest::Request::try_from(http_request)?; - *reqwest_request.timeout_mut() = Some(Duration::from_secs(30)); + *reqwest_request.timeout_mut() = Some(Duration::from_secs(120)); let url = reqwest_request.url().clone(); let mut response = match services() diff --git a/src/api/client_server/keys.rs b/src/api/client_server/keys.rs index d71ac888f66eb0487dd23a8ec80265eb4e7b2fc4..bc82bd9899efe4ee76b42a887a9ae8ba380b3750 100644 --- a/src/api/client_server/keys.rs +++ b/src/api/client_server/keys.rs @@ -370,7 +370,7 @@ pub(crate) async fn get_keys_helper<F: Fn(&UserId) -> bool>( .get(server) { // Exponential backoff - let mut min_elapsed_duration = Duration::from_secs(30) * (*tries) * (*tries); + let mut min_elapsed_duration = Duration::from_secs(5 * 60) * (*tries) * (*tries); if min_elapsed_duration > Duration::from_secs(60 * 60 * 24) { min_elapsed_duration = Duration::from_secs(60 * 60 * 24); } @@ -391,7 +391,7 @@ pub(crate) async fn get_keys_helper<F: Fn(&UserId) -> bool>( ( server, tokio::time::timeout( - Duration::from_secs(25), + Duration::from_secs(50), services().sending.send_federation_request( server, federation::keys::get_keys::v1::Request { diff --git a/src/api/client_server/membership.rs b/src/api/client_server/membership.rs index f1513ca8e328f2f61949304af6949e742268f4c6..640d804880eaab843d5cb09c46b38feaffb732e1 100644 --- a/src/api/client_server/membership.rs +++ b/src/api/client_server/membership.rs @@ -1163,7 +1163,7 @@ fn validate_and_add_event_id( .get(&event_id) { // Exponential backoff - let mut min_elapsed_duration = Duration::from_secs(30) * (*tries) * (*tries); + let mut min_elapsed_duration = Duration::from_secs(5 * 60) * (*tries) * (*tries); if min_elapsed_duration > Duration::from_secs(60 * 60 * 24) { min_elapsed_duration = Duration::from_secs(60 * 60 * 24); } diff --git a/src/main.rs b/src/main.rs index 4ec3e48f542c171a77f583eaeda46821d590bf3b..84ab470e73282f9ac7a7bbb840242f9a2efebe23 100644 --- a/src/main.rs +++ b/src/main.rs @@ -545,7 +545,7 @@ async fn shutdown_signal(handle: ServerHandle, tx: Sender<()>) -> Result<()> { } warn!("Received {}, shutting down...", sig); - handle.graceful_shutdown(Some(Duration::from_secs(30))); + handle.graceful_shutdown(Some(Duration::from_secs(60))); services().globals.shutdown(); diff --git a/src/service/globals/mod.rs b/src/service/globals/mod.rs index 228424f571a387806aeb8089dc32ec166f54a1dc..090b35a428965826195fde2cc5fcc1ee2ab7ac73 100644 --- a/src/service/globals/mod.rs +++ b/src/service/globals/mod.rs @@ -537,8 +537,8 @@ pub fn shutdown(&self) { fn reqwest_client_builder(config: &Config) -> Result<reqwest::ClientBuilder> { let mut reqwest_client_builder = reqwest::Client::builder() .pool_max_idle_per_host(0) - .connect_timeout(Duration::from_secs(30)) - .timeout(Duration::from_secs(60 * 3)); + .connect_timeout(Duration::from_secs(60)) + .timeout(Duration::from_secs(60 * 4)); if let Some(proxy) = config.proxy.to_proxy()? { reqwest_client_builder = reqwest_client_builder.proxy(proxy); diff --git a/src/service/rooms/event_handler/mod.rs b/src/service/rooms/event_handler/mod.rs index 729a7a2b5c651d440540905b271d5ded5900734f..f11b59cbe4fda3d6a1cb6113aaed74d910462483 100644 --- a/src/service/rooms/event_handler/mod.rs +++ b/src/service/rooms/event_handler/mod.rs @@ -1461,7 +1461,7 @@ fn get_server_keys_from_cache( .get(event_id) { // Exponential backoff - let mut min_elapsed_duration = Duration::from_secs(30) * (*tries) * (*tries); + let mut min_elapsed_duration = Duration::from_secs(5 * 60) * (*tries) * (*tries); if min_elapsed_duration > Duration::from_secs(60 * 60 * 24) { min_elapsed_duration = Duration::from_secs(60 * 60 * 24); } @@ -1748,7 +1748,7 @@ pub async fn fetch_signing_keys_for_server( .get(&signature_ids) { // Exponential backoff - let mut min_elapsed_duration = Duration::from_secs(30) * (*tries) * (*tries); + let mut min_elapsed_duration = Duration::from_secs(5 * 60) * (*tries) * (*tries); if min_elapsed_duration > Duration::from_secs(60 * 60 * 24) { min_elapsed_duration = Duration::from_secs(60 * 60 * 24); } diff --git a/src/service/sending/mod.rs b/src/service/sending/mod.rs index 46bcc022be9c34913037d99c316bddd6677d150e..9a12f7b432fd61dcdf264d39a91c84cf8288ed98 100644 --- a/src/service/sending/mod.rs +++ b/src/service/sending/mod.rs @@ -219,7 +219,8 @@ fn select_events( } TransactionStatus::Failed(tries, time) => { // Fail if a request has failed recently (exponential backoff) - let mut min_elapsed_duration = Duration::from_secs(30) * (*tries) * (*tries); + let mut min_elapsed_duration = + Duration::from_secs(5 * 60) * (*tries) * (*tries); if min_elapsed_duration > Duration::from_secs(60 * 60 * 24) { min_elapsed_duration = Duration::from_secs(60 * 60 * 24); } @@ -719,13 +720,13 @@ pub async fn send_federation_request<T: OutgoingRequest>( let permit = self.maximum_requests.acquire().await; debug!("Got permit"); let response = tokio::time::timeout( - Duration::from_secs(2 * 60), + Duration::from_secs(5 * 60), server_server::send_request(destination, request), ) .await .map_err(|_| { - warn!("Timeout waiting for server response of {destination}"); - Error::BadServerResponse("Timeout waiting for server response") + warn!("Timeout after 300 seconds waiting for server response of {destination}"); + Error::BadServerResponse("Timeout after 300 seconds waiting for server response") })?; drop(permit);