diff --git a/quickwit/quickwit-serve/src/cluster_api/rest_handler.rs b/quickwit/quickwit-serve/src/cluster_api/rest_handler.rs index ddd8f4ffa05..e4357faeebd 100644 --- a/quickwit/quickwit-serve/src/cluster_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/cluster_api/rest_handler.rs @@ -45,6 +45,7 @@ pub fn cluster_handler( .and(extract_format_from_qs()) .map(into_rest_api_response) .recover(recover_fn) + .boxed() } #[utoipa::path( diff --git a/quickwit/quickwit-serve/src/delete_task_api/handler.rs b/quickwit/quickwit-serve/src/delete_task_api/handler.rs index eae5d625160..c9eefb95a1c 100644 --- a/quickwit/quickwit-serve/src/delete_task_api/handler.rs +++ b/quickwit/quickwit-serve/src/delete_task_api/handler.rs @@ -65,6 +65,7 @@ pub fn delete_task_api_handlers( get_delete_tasks_handler(metastore.clone()) .or(post_delete_tasks_handler(metastore.clone())) .recover(recover_fn) + .boxed() } pub fn get_delete_tasks_handler( diff --git a/quickwit/quickwit-serve/src/developer_api/mod.rs b/quickwit/quickwit-serve/src/developer_api/mod.rs index 2438e93146e..537cbe76a08 100644 --- a/quickwit/quickwit-serve/src/developer_api/mod.rs +++ b/quickwit/quickwit-serve/src/developer_api/mod.rs @@ -46,7 +46,7 @@ pub(crate) fn developer_api_routes( warp::path!("api" / "developer" / ..) .and( debug_handler(cluster.clone()) - .or(log_level_handler(env_filter_reload_fn.clone())) + .or(log_level_handler(env_filter_reload_fn.clone()).boxed()) .or(pprof_handlers()), ) .recover(recover_fn) diff --git a/quickwit/quickwit-serve/src/elasticsearch_api/bulk.rs b/quickwit/quickwit-serve/src/elasticsearch_api/bulk.rs index 5bd5ab43829..c6723d8521e 100644 --- a/quickwit/quickwit-serve/src/elasticsearch_api/bulk.rs +++ b/quickwit/quickwit-serve/src/elasticsearch_api/bulk.rs @@ -76,6 +76,7 @@ pub fn es_compat_index_bulk_handler( .and(extract_format_from_qs()) .map(make_elastic_api_response) .recover(recover_fn) + .boxed() } async fn elastic_ingest_bulk( diff --git a/quickwit/quickwit-serve/src/elasticsearch_api/mod.rs b/quickwit/quickwit-serve/src/elasticsearch_api/mod.rs index a3b156dedee..479e48687f4 100644 --- a/quickwit/quickwit-serve/src/elasticsearch_api/mod.rs +++ b/quickwit/quickwit-serve/src/elasticsearch_api/mod.rs @@ -67,6 +67,7 @@ pub fn elastic_api_handlers( ingest_service.clone(), ingest_router.clone(), )) + .boxed() .or(es_compat_index_bulk_handler(ingest_service, ingest_router)) .or(es_compat_index_search_handler(search_service.clone())) .or(es_compat_index_count_handler(search_service.clone())) @@ -75,6 +76,7 @@ pub fn elastic_api_handlers( .or(es_compat_index_field_capabilities_handler( search_service.clone(), )) + .boxed() .or(es_compat_index_stats_handler(metastore.clone())) .or(es_compat_delete_index_handler(index_service)) .or(es_compat_stats_handler(metastore.clone())) @@ -82,6 +84,7 @@ pub fn elastic_api_handlers( .or(es_compat_cat_indices_handler(metastore.clone())) .or(es_compat_resolve_index_handler(metastore.clone())) .recover(recover_fn) + .boxed() // Register newly created handlers here. } diff --git a/quickwit/quickwit-serve/src/elasticsearch_api/rest_handler.rs b/quickwit/quickwit-serve/src/elasticsearch_api/rest_handler.rs index 4bca30add33..2c6fd23a40d 100644 --- a/quickwit/quickwit-serve/src/elasticsearch_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/elasticsearch_api/rest_handler.rs @@ -90,6 +90,7 @@ pub fn es_compat_cluster_info_handler( })) }, ) + .boxed() } /// GET or POST _elastic/_search @@ -135,6 +136,7 @@ pub fn es_compat_delete_index_handler( .and(with_arg(index_service)) .then(es_compat_delete_index) .map(|result| make_elastic_api_response(result, BodyFormat::default())) + .boxed() } /// GET _elastic/_stats @@ -146,6 +148,7 @@ pub fn es_compat_stats_handler( .then(es_compat_stats) .map(|result| make_elastic_api_response(result, BodyFormat::default())) .recover(recover_fn) + .boxed() } /// GET _elastic/{index}/_stats @@ -157,6 +160,7 @@ pub fn es_compat_index_stats_handler( .then(es_compat_index_stats) .map(|result| make_elastic_api_response(result, BodyFormat::default())) .recover(recover_fn) + .boxed() } /// GET _elastic/_cat/indices @@ -168,6 +172,7 @@ pub fn es_compat_cat_indices_handler( .then(es_compat_cat_indices) .map(|result| make_elastic_api_response(result, BodyFormat::default())) .recover(recover_fn) + .boxed() } /// GET _elastic/_cat/indices/{index} @@ -179,6 +184,7 @@ pub fn es_compat_index_cat_indices_handler( .then(es_compat_index_cat_indices) .map(|result| make_elastic_api_response(result, BodyFormat::default())) .recover(recover_fn) + .boxed() } /// GET _elastic/_resolve/index/{index} @@ -189,6 +195,7 @@ pub fn es_compat_resolve_index_handler( .and(with_arg(metastore_service)) .then(es_compat_resolve_index) .map(|result| make_elastic_api_response(result, BodyFormat::default())) + .boxed() } /// GET or POST _elastic/{index}/_search @@ -200,6 +207,7 @@ pub fn es_compat_index_search_handler( .then(es_compat_index_search) .map(|result| make_elastic_api_response(result, BodyFormat::default())) .recover(recover_fn) + .boxed() } /// GET or POST _elastic/{index}/_count @@ -211,6 +219,7 @@ pub fn es_compat_index_count_handler( .then(es_compat_index_count) .map(|result| make_elastic_api_response(result, BodyFormat::default())) .recover(recover_fn) + .boxed() } /// POST _elastic/_msearch @@ -228,6 +237,7 @@ pub fn es_compat_index_multi_search_handler( RestApiResponse::new(&result, status_code, BodyFormat::default()) }) .recover(recover_fn) + .boxed() } /// GET or POST _elastic/_search/scroll @@ -239,6 +249,7 @@ pub fn es_compat_scroll_handler( .then(es_scroll) .map(|result| make_elastic_api_response(result, BodyFormat::default())) .recover(recover_fn) + .boxed() } fn build_request_for_es_api( diff --git a/quickwit/quickwit-serve/src/index_api/rest_handler.rs b/quickwit/quickwit-serve/src/index_api/rest_handler.rs index 832df922983..a693eff3dba 100644 --- a/quickwit/quickwit-serve/src/index_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/index_api/rest_handler.rs @@ -90,27 +90,29 @@ pub fn index_management_handlers( ) -> impl Filter + Clone { // Indexes handlers. get_index_metadata_handler(index_service.metastore()) - .or(list_indexes_metadata_handler(index_service.metastore())) - .or(create_index_handler(index_service.clone(), node_config)) - .or(update_index_handler(index_service.metastore())) - .or(clear_index_handler(index_service.clone())) - .or(delete_index_handler(index_service.clone())) + .boxed() + .or(list_indexes_metadata_handler(index_service.metastore()).boxed()) + .or(create_index_handler(index_service.clone(), node_config).boxed()) + .or(update_index_handler(index_service.metastore()).boxed()) + .or(clear_index_handler(index_service.clone()).boxed()) + .or(delete_index_handler(index_service.clone()).boxed()) // Splits handlers - .or(list_splits_handler(index_service.metastore())) - .or(describe_index_handler(index_service.metastore())) - .or(mark_splits_for_deletion_handler(index_service.metastore())) + .or(list_splits_handler(index_service.metastore()).boxed()) + .or(describe_index_handler(index_service.metastore()).boxed()) + .or(mark_splits_for_deletion_handler(index_service.metastore()).boxed()) // Sources handlers. - .or(reset_source_checkpoint_handler(index_service.metastore())) - .or(toggle_source_handler(index_service.metastore())) - .or(create_source_handler(index_service.clone())) - .or(get_source_handler(index_service.metastore())) - .or(delete_source_handler(index_service.metastore())) - .or(get_source_shards_handler(index_service.metastore())) + .or(reset_source_checkpoint_handler(index_service.metastore()).boxed()) + .or(toggle_source_handler(index_service.metastore()).boxed()) + .or(create_source_handler(index_service.clone()).boxed()) + .or(get_source_handler(index_service.metastore()).boxed()) + .or(delete_source_handler(index_service.metastore()).boxed()) + .or(get_source_shards_handler(index_service.metastore()).boxed()) // Tokenizer handlers. - .or(analyze_request_handler()) + .or(analyze_request_handler().boxed()) // Parse query into query AST handler. - .or(parse_query_request_handler()) + .or(parse_query_request_handler().boxed()) .recover(recover_fn) + .boxed() } fn json_body( diff --git a/quickwit/quickwit-serve/src/indexing_api/rest_handler.rs b/quickwit/quickwit-serve/src/indexing_api/rest_handler.rs index 5f2bf9cf3a9..4efb0f9fe49 100644 --- a/quickwit/quickwit-serve/src/indexing_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/indexing_api/rest_handler.rs @@ -62,4 +62,5 @@ pub fn indexing_get_handler( .and(extract_format_from_qs()) .map(into_rest_api_response) .recover(recover_fn) + .boxed() } diff --git a/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs b/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs index 713b361bbeb..ececce8c9eb 100644 --- a/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/ingest_api/rest_handler.rs @@ -72,6 +72,7 @@ pub(crate) fn ingest_api_handlers( ingest_handler(ingest_service.clone(), config.clone()) .or(tail_handler(ingest_service)) .or(ingest_v2_handler(ingest_router, config)) + .boxed() } fn ingest_filter( @@ -96,6 +97,7 @@ fn ingest_handler( .and(with_arg(ingest_service)) .then(ingest) .map(|result| into_rest_api_response(result, BodyFormat::default())) + .boxed() } fn ingest_v2_filter( @@ -121,6 +123,7 @@ fn ingest_v2_handler( .then(ingest_v2) .and(with_arg(BodyFormat::default())) .map(into_rest_api_response) + .boxed() } async fn ingest_v2( @@ -223,6 +226,7 @@ pub fn tail_handler( .then(tail_endpoint) .and(extract_format_from_qs()) .map(into_rest_api_response) + .boxed() } fn tail_filter() -> impl Filter + Clone { diff --git a/quickwit/quickwit-serve/src/jaeger_api/rest_handler.rs b/quickwit/quickwit-serve/src/jaeger_api/rest_handler.rs index 544c30afda4..79f9b7fdc30 100644 --- a/quickwit/quickwit-serve/src/jaeger_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/jaeger_api/rest_handler.rs @@ -68,6 +68,7 @@ pub(crate) fn jaeger_api_handlers( .or(jaeger_traces_search_handler(jaeger_service_opt.clone())) .or(jaeger_traces_handler(jaeger_service_opt.clone())) .recover(recover_fn) + .boxed() } fn jaeger_api_path_filter() -> impl Filter,), Error = Rejection> + Clone { diff --git a/quickwit/quickwit-serve/src/node_info_handler.rs b/quickwit/quickwit-serve/src/node_info_handler.rs index b1791be9d6f..93a7e4f1ac4 100644 --- a/quickwit/quickwit-serve/src/node_info_handler.rs +++ b/quickwit/quickwit-serve/src/node_info_handler.rs @@ -38,6 +38,7 @@ pub fn node_info_handler( node_version_handler(build_info, runtime_info) .or(node_config_handler(config)) .recover(recover_fn) + .boxed() } #[utoipa::path(get, tag = "Node Info", path = "/version")] diff --git a/quickwit/quickwit-serve/src/otlp_api/rest_handler.rs b/quickwit/quickwit-serve/src/otlp_api/rest_handler.rs index c393c665507..f3ac77261b4 100644 --- a/quickwit/quickwit-serve/src/otlp_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/otlp_api/rest_handler.rs @@ -56,6 +56,7 @@ pub(crate) fn otlp_ingest_api_handlers( .or(otlp_default_traces_handler(otlp_traces_service.clone()).recover(recover_fn)) .or(otlp_logs_handler(otlp_logs_service).recover(recover_fn)) .or(otlp_ingest_traces_handler(otlp_traces_service).recover(recover_fn)) + .boxed() } /// Open Telemetry REST/Protobuf logs ingest endpoint. @@ -91,6 +92,7 @@ pub(crate) fn otlp_default_logs_handler( ) .and(with_arg(BodyFormat::default())) .map(into_rest_api_response) + .boxed() } /// Open Telemetry REST/Protobuf logs ingest endpoint. #[utoipa::path( @@ -116,6 +118,7 @@ pub(crate) fn otlp_logs_handler( .then(otlp_ingest_logs) .and(with_arg(BodyFormat::default())) .map(into_rest_api_response) + .boxed() } /// Open Telemetry REST/Protobuf traces ingest endpoint. @@ -151,6 +154,7 @@ pub(crate) fn otlp_default_traces_handler( ) .and(with_arg(BodyFormat::default())) .map(into_rest_api_response) + .boxed() } /// Open Telemetry REST/Protobuf traces ingest endpoint. #[utoipa::path( @@ -176,6 +180,7 @@ pub(crate) fn otlp_ingest_traces_handler( .then(otlp_ingest_traces) .and(with_arg(BodyFormat::default())) .map(into_rest_api_response) + .boxed() } #[derive(Debug, Clone, thiserror::Error, Serialize)] diff --git a/quickwit/quickwit-serve/src/rest.rs b/quickwit/quickwit-serve/src/rest.rs index 3c83c2d84f1..71601335874 100644 --- a/quickwit/quickwit-serve/src/rest.rs +++ b/quickwit/quickwit-serve/src/rest.rs @@ -145,33 +145,38 @@ pub(crate) async fn start_rest_server( let api_doc = warp::path("openapi.json") .and(warp::get()) .map(|| warp::reply::json(&crate::openapi::build_docs())) - .recover(recover_fn); + .recover(recover_fn) + .boxed(); // `/health/*` routes. let health_check_routes = health_check_handlers( quickwit_services.cluster.clone(), quickwit_services.indexing_service_opt.clone(), quickwit_services.janitor_service_opt.clone(), - ); + ) + .boxed(); // `/metrics` route. let metrics_routes = warp::path("metrics") .and(warp::get()) .map(metrics_handler) - .recover(recover_fn); + .recover(recover_fn) + .boxed(); // `/api/developer/*` route. let developer_routes = developer_api_routes( quickwit_services.cluster.clone(), quickwit_services.env_filter_reload_fn.clone(), - ); + ) + .boxed(); // `/api/v1/*` routes. let api_v1_root_route = api_v1_routes(quickwit_services.clone()); let redirect_root_to_ui_route = warp::path::end() .and(warp::get()) .map(|| redirect(http::Uri::from_static("/ui/search"))) - .recover(recover_fn); + .recover(recover_fn) + .boxed(); let extra_headers = warp::reply::with::headers( quickwit_services @@ -243,6 +248,7 @@ fn search_routes( .or(search_plan_post_handler(search_service.clone())) .or(search_stream_handler(search_service)) .recover(recover_fn) + .boxed() } fn api_v1_routes( @@ -259,37 +265,47 @@ fn api_v1_routes( quickwit_services.index_manager.clone(), ) .or(cluster_handler(quickwit_services.cluster.clone())) + .boxed() .or(node_info_handler( BuildInfo::get(), RuntimeInfo::get(), quickwit_services.node_config.clone(), )) + .boxed() .or(indexing_get_handler( quickwit_services.indexing_service_opt.clone(), )) + .boxed() .or(search_routes(quickwit_services.search_service.clone())) + .boxed() .or(ingest_api_handlers( quickwit_services.ingest_router_service.clone(), quickwit_services.ingest_service.clone(), quickwit_services.node_config.ingest_api_config.clone(), )) + .boxed() .or(otlp_ingest_api_handlers( quickwit_services.otlp_logs_service_opt.clone(), quickwit_services.otlp_traces_service_opt.clone(), )) + .boxed() .or(index_management_handlers( quickwit_services.index_manager.clone(), quickwit_services.node_config.clone(), )) + .boxed() .or(delete_task_api_handlers( quickwit_services.metastore_client.clone(), )) + .boxed() .or(jaeger_api_handlers( quickwit_services.jaeger_service_opt.clone(), )) + .boxed() .or(index_template_api_handlers( quickwit_services.metastore_client.clone(), - )), + )) + .boxed(), ) } diff --git a/quickwit/quickwit-serve/src/template_api/rest_handler.rs b/quickwit/quickwit-serve/src/template_api/rest_handler.rs index fca22b2b4a7..0b549bdf588 100644 --- a/quickwit/quickwit-serve/src/template_api/rest_handler.rs +++ b/quickwit/quickwit-serve/src/template_api/rest_handler.rs @@ -57,6 +57,7 @@ pub(crate) fn index_template_api_handlers( .or(delete_index_template_handler(metastore.clone())) .or(list_index_templates_handler(metastore.clone())) .recover(recover_fn) + .boxed() } fn create_index_template_handler( diff --git a/quickwit/quickwit-serve/src/ui_handler.rs b/quickwit/quickwit-serve/src/ui_handler.rs index 2c78712381c..ecd54b060aa 100644 --- a/quickwit/quickwit-serve/src/ui_handler.rs +++ b/quickwit/quickwit-serve/src/ui_handler.rs @@ -43,6 +43,7 @@ pub fn ui_handler() -> impl Filter Result { diff --git a/quickwit/rust-toolchain.toml b/quickwit/rust-toolchain.toml index 94de52665ce..5c077352cff 100644 --- a/quickwit/rust-toolchain.toml +++ b/quickwit/rust-toolchain.toml @@ -1,4 +1,4 @@ [toolchain] -channel = "1.78" +channel = "1.81" components = ["cargo", "clippy", "rustfmt", "rust-docs"]