Split utils::http to separate crate (#10753)

Avoids compiling the crate and its dependencies into binaries that don't
need them. Shrinks the compute_ctl binary from about 31MB to 28MB in the
release-line-debug-size-lto profile.
This commit is contained in:
Heikki Linnakangas
2025-02-12 00:06:53 +02:00
committed by GitHub
parent 9491154eae
commit 635b67508b
42 changed files with 238 additions and 162 deletions

View File

@@ -8,6 +8,14 @@ use crate::reconciler::ReconcileError;
use crate::service::{LeadershipStatus, Service, RECONCILE_TIMEOUT, STARTUP_RECONCILE_TIMEOUT};
use anyhow::Context;
use futures::Future;
use http_utils::{
endpoint::{self, auth_middleware, check_permission_with, request_span},
error::ApiError,
failpoints::failpoints_handler,
json::{json_request, json_response},
request::{must_get_query_param, parse_query_param, parse_request_param},
RequestExt, RouterBuilder,
};
use hyper::header::CONTENT_TYPE;
use hyper::{Body, Request, Response};
use hyper::{StatusCode, Uri};
@@ -29,20 +37,7 @@ use std::sync::Arc;
use std::time::{Duration, Instant};
use tokio_util::sync::CancellationToken;
use utils::auth::{Scope, SwappableJwtAuth};
use utils::failpoint_support::failpoints_handler;
use utils::http::endpoint::{auth_middleware, check_permission_with, request_span};
use utils::http::request::{must_get_query_param, parse_query_param, parse_request_param};
use utils::id::{TenantId, TimelineId};
use utils::{
http::{
endpoint::{self},
error::ApiError,
json::{json_request, json_response},
RequestExt, RouterBuilder,
},
id::NodeId,
};
use utils::id::{NodeId, TenantId, TimelineId};
use pageserver_api::controller_api::{
NodeAvailability, NodeConfigureRequest, NodeRegisterRequest, TenantPolicyRequest,

View File

@@ -320,7 +320,7 @@ async fn async_main() -> anyhow::Result<()> {
let router = make_router(service.clone(), auth, build_info)
.build()
.map_err(|err| anyhow!(err))?;
let router_service = utils::http::RouterService::new(router).unwrap();
let router_service = http_utils::RouterService::new(router).unwrap();
// Start HTTP server
let server_shutdown = CancellationToken::new();

View File

@@ -6,9 +6,10 @@ use std::error::Error as _;
use std::time::Duration;
use tokio_util::sync::CancellationToken;
use http_utils::error::HttpErrorBody;
use hyper::Uri;
use reqwest::{StatusCode, Url};
use utils::{backoff, http::error::HttpErrorBody};
use utils::backoff;
#[derive(Debug, Clone)]
pub(crate) struct PeerClient {

View File

@@ -1,9 +1,10 @@
use crate::{metrics::NodeLabelGroup, node::Node, tenant_shard::TenantShard};
use http_utils::error::ApiError;
use itertools::Itertools;
use pageserver_api::{controller_api::AvailabilityZone, models::PageserverUtilization};
use serde::Serialize;
use std::{collections::HashMap, fmt::Debug};
use utils::{http::error::ApiError, id::NodeId};
use utils::id::NodeId;
/// Scenarios in which we cannot find a suitable location for a tenant shard
#[derive(thiserror::Error, Debug)]

View File

@@ -61,6 +61,7 @@ use reqwest::StatusCode;
use tracing::{instrument, Instrument};
use crate::pageserver_client::PageserverClient;
use http_utils::error::ApiError;
use pageserver_api::{
models::{
self, LocationConfig, LocationConfigListResponse, LocationConfigMode,
@@ -81,7 +82,6 @@ use utils::{
completion::Barrier,
failpoint_support,
generation::Generation,
http::error::ApiError,
id::{NodeId, TenantId, TimelineId},
pausable_failpoint,
sync::gate::Gate,