diff --git a/pageserver/src/bin/pageserver.rs b/pageserver/src/bin/pageserver.rs index 5210d7f3c0..04a48b214f 100644 --- a/pageserver/src/bin/pageserver.rs +++ b/pageserver/src/bin/pageserver.rs @@ -86,9 +86,6 @@ fn main() -> anyhow::Result<()> { } }; - storage_layer::LAYER_ACCESS_STATS_KILLSWITCH - .store(conf.layer_access_stats_disable, atomic::Ordering::SeqCst); - // initialize sentry if SENTRY_DSN is provided let _sentry_guard = init_sentry( Some(GIT_VERSION.into()), diff --git a/pageserver/src/broker_client.rs b/pageserver/src/broker_client.rs index 6c92967ca3..fdc91df934 100644 --- a/pageserver/src/broker_client.rs +++ b/pageserver/src/broker_client.rs @@ -13,7 +13,7 @@ static BROKER_CLIENT: OnceCell = OnceCell::new(); /// /// Initialize the broker client. This must be called once at page server startup. /// -pub async fn init_broker_client(conf: &'static PageServerConf) -> anyhow::Result<()> { +pub(crate) async fn init_broker_client(conf: &'static PageServerConf) -> anyhow::Result<()> { let broker_endpoint = conf.broker_endpoint.clone(); // Note: we do not attempt connecting here (but validate endpoints sanity). diff --git a/pageserver/src/config.rs b/pageserver/src/config.rs index c76c55bd3c..318c335979 100644 --- a/pageserver/src/config.rs +++ b/pageserver/src/config.rs @@ -106,7 +106,7 @@ pub mod defaults { } #[derive(Debug, Clone, PartialEq, Eq)] -pub struct PageServerConf { +pub(crate) struct PageServerConf { // Identifier of that particular pageserver so e g safekeepers // can safely distinguish different pageservers pub id: NodeId, diff --git a/pageserver/src/http/mod.rs b/pageserver/src/http/mod.rs index 1c083bd382..b5b1d90707 100644 --- a/pageserver/src/http/mod.rs +++ b/pageserver/src/http/mod.rs @@ -1,4 +1,4 @@ pub mod routes; -pub use routes::make_router; +pub(crate) use routes::make_router; pub use pageserver_api::models; diff --git a/pageserver/src/http/routes.rs b/pageserver/src/http/routes.rs index 935ce8cf36..55b8dcaadb 100644 --- a/pageserver/src/http/routes.rs +++ b/pageserver/src/http/routes.rs @@ -948,7 +948,7 @@ async fn handler_404(_: Request) -> Result, ApiError> { ) } -pub fn make_router( +pub(crate) fn make_router( conf: &'static PageServerConf, auth: Option>, remote_storage: Option, diff --git a/pageserver/src/page_service.rs b/pageserver/src/page_service.rs index 878928ae06..e323b45641 100644 --- a/pageserver/src/page_service.rs +++ b/pageserver/src/page_service.rs @@ -119,7 +119,7 @@ fn copyin_stream(pgb: &mut PostgresBackend) -> impl Stream>, listener: TcpListener, diff --git a/pageserver/src/tenant.rs b/pageserver/src/tenant.rs index d7ef8798c7..9d10b75bed 100644 --- a/pageserver/src/tenant.rs +++ b/pageserver/src/tenant.rs @@ -102,7 +102,7 @@ pub use timeline::{PageReconstructError, Timeline}; pub use crate::tenant::ephemeral_file::writeback as writeback_ephemeral_file; // re-export for use in storage_sync.rs -pub use crate::tenant::metadata::save_metadata; +pub(crate) use crate::tenant::metadata::save_metadata; // re-export for use in walreceiver pub use crate::tenant::timeline::WalReceiverInfo; @@ -117,7 +117,7 @@ pub const TENANT_ATTACHING_MARKER_FILENAME: &str = "attaching"; /// pub struct Tenant { // Global pageserver config parameters - pub conf: &'static PageServerConf, + pub(crate) conf: &'static PageServerConf, state: watch::Sender, @@ -571,7 +571,7 @@ impl Tenant { /// finishes. You can use wait_until_active() to wait for the task to /// complete. /// - pub fn spawn_attach( + pub(crate) fn spawn_attach( conf: &'static PageServerConf, tenant_id: TenantId, remote_storage: GenericRemoteStorage, @@ -811,7 +811,7 @@ impl Tenant { } /// Create a placeholder Tenant object for a broken tenant - pub fn create_broken_tenant(conf: &'static PageServerConf, tenant_id: TenantId) -> Arc { + pub(crate) fn create_broken_tenant(conf: &'static PageServerConf, tenant_id: TenantId) -> Arc { let wal_redo_manager = Arc::new(PostgresRedoManager::new(conf, tenant_id)); Arc::new(Tenant::new( TenantState::Broken, @@ -835,7 +835,7 @@ impl Tenant { /// state. /// #[instrument(skip(conf, remote_storage, ctx), fields(tenant_id=%tenant_id))] - pub fn spawn_load( + pub(crate) fn spawn_load( conf: &'static PageServerConf, tenant_id: TenantId, remote_storage: Option, diff --git a/pageserver/src/tenant/ephemeral_file.rs b/pageserver/src/tenant/ephemeral_file.rs index c433e65ad2..85a006714d 100644 --- a/pageserver/src/tenant/ephemeral_file.rs +++ b/pageserver/src/tenant/ephemeral_file.rs @@ -47,7 +47,7 @@ pub struct EphemeralFile { } impl EphemeralFile { - pub fn create( + pub(crate) fn create( conf: &PageServerConf, tenant_id: TenantId, timeline_id: TimelineId, diff --git a/pageserver/src/tenant/metadata.rs b/pageserver/src/tenant/metadata.rs index 297cccbe30..266c874324 100644 --- a/pageserver/src/tenant/metadata.rs +++ b/pageserver/src/tenant/metadata.rs @@ -229,7 +229,7 @@ impl TimelineMetadata { } /// Save timeline metadata to file -pub fn save_metadata( +pub(crate) fn save_metadata( conf: &'static PageServerConf, timeline_id: TimelineId, tenant_id: TenantId, @@ -264,7 +264,7 @@ pub fn save_metadata( Ok(()) } -pub fn load_metadata( +pub(crate) fn load_metadata( conf: &'static PageServerConf, timeline_id: TimelineId, tenant_id: TenantId, diff --git a/pageserver/src/tenant/mgr.rs b/pageserver/src/tenant/mgr.rs index a9edee3794..144f0a1018 100644 --- a/pageserver/src/tenant/mgr.rs +++ b/pageserver/src/tenant/mgr.rs @@ -59,7 +59,7 @@ static TENANTS: Lazy> = Lazy::new(|| RwLock::new(TenantsMap:: /// Timelines that are only partially available locally (remote storage has more data than this pageserver) /// are scheduled for download and added to the tenant once download is completed. #[instrument(skip(conf, remote_storage))] -pub async fn init_tenant_mgr( +pub(crate) async fn init_tenant_mgr( conf: &'static PageServerConf, remote_storage: Option, ) -> anyhow::Result<()> { @@ -147,7 +147,7 @@ pub async fn init_tenant_mgr( Ok(()) } -pub fn schedule_local_tenant_processing( +pub(crate) fn schedule_local_tenant_processing( conf: &'static PageServerConf, tenant_path: &Path, remote_storage: Option, @@ -261,7 +261,7 @@ pub async fn shutdown_all_tenants() { } } -pub async fn create_tenant( +pub(crate) async fn create_tenant( conf: &'static PageServerConf, tenant_conf: TenantConfOpt, tenant_id: TenantId, @@ -285,7 +285,7 @@ pub async fn create_tenant( }).await } -pub async fn update_tenant_config( +pub(crate) async fn update_tenant_config( conf: &'static PageServerConf, tenant_conf: TenantConfOpt, tenant_id: TenantId, @@ -331,7 +331,7 @@ pub async fn delete_timeline( Ok(()) } -pub async fn detach_tenant( +pub(crate) async fn detach_tenant( conf: &'static PageServerConf, tenant_id: TenantId, ) -> anyhow::Result<()> { @@ -347,7 +347,7 @@ pub async fn detach_tenant( .await } -pub async fn load_tenant( +pub(crate) async fn load_tenant( conf: &'static PageServerConf, tenant_id: TenantId, remote_storage: Option, @@ -371,7 +371,7 @@ pub async fn load_tenant( }).await } -pub async fn ignore_tenant( +pub(crate) async fn ignore_tenant( conf: &'static PageServerConf, tenant_id: TenantId, ) -> anyhow::Result<()> { @@ -414,7 +414,7 @@ pub async fn list_tenants() -> Result, TenantMapLis /// /// Downloading all the tenant data is performed in the background, this merely /// spawns the background task and returns quickly. -pub async fn attach_tenant( +pub(crate) async fn attach_tenant( conf: &'static PageServerConf, tenant_id: TenantId, remote_storage: GenericRemoteStorage, diff --git a/pageserver/src/tenant/remote_timeline_client.rs b/pageserver/src/tenant/remote_timeline_client.rs index 3f69017160..05526ec0fb 100644 --- a/pageserver/src/tenant/remote_timeline_client.rs +++ b/pageserver/src/tenant/remote_timeline_client.rs @@ -205,7 +205,7 @@ pub mod index; mod upload; // re-export these -pub use download::{is_temp_download_file, list_remote_timelines}; +pub(crate) use download::{is_temp_download_file, list_remote_timelines}; use std::sync::atomic::{AtomicU32, Ordering}; use std::sync::{Arc, Mutex}; @@ -293,7 +293,7 @@ impl RemoteTimelineClient { /// Note: the caller must initialize the upload queue before any uploads can be scheduled, /// by calling init_upload_queue. /// - pub fn new( + pub(crate) fn new( remote_storage: GenericRemoteStorage, conf: &'static PageServerConf, tenant_id: TenantId, diff --git a/pageserver/src/tenant/remote_timeline_client/download.rs b/pageserver/src/tenant/remote_timeline_client/download.rs index 2e79698087..c1a79feb95 100644 --- a/pageserver/src/tenant/remote_timeline_client/download.rs +++ b/pageserver/src/tenant/remote_timeline_client/download.rs @@ -31,7 +31,7 @@ async fn fsync_path(path: impl AsRef) -> Result<(), std::io::Er /// in the metadata. (In the future, we might do more cross-checks, like CRC validation) /// /// Returns the size of the downloaded file. -pub async fn download_layer_file<'a>( +pub(crate) async fn download_layer_file<'a>( conf: &'static PageServerConf, storage: &'a GenericRemoteStorage, tenant_id: TenantId, @@ -170,7 +170,7 @@ pub fn is_temp_download_file(path: &Path) -> bool { } /// List timelines of given tenant in remote storage -pub async fn list_remote_timelines<'a>( +pub(crate) async fn list_remote_timelines<'a>( storage: &'a GenericRemoteStorage, conf: &'static PageServerConf, tenant_id: TenantId, diff --git a/pageserver/src/tenant/storage_layer.rs b/pageserver/src/tenant/storage_layer.rs index 15bdc54fcd..82784e6524 100644 --- a/pageserver/src/tenant/storage_layer.rs +++ b/pageserver/src/tenant/storage_layer.rs @@ -18,7 +18,6 @@ use pageserver_api::models::LayerAccessKind; use pageserver_api::models::{HistoricLayerInfo, Key}; use std::ops::Range; use std::path::PathBuf; -use std::sync::atomic::{self, AtomicBool}; use std::sync::{Arc, Mutex}; use std::time::{SystemTime, UNIX_EPOCH}; @@ -28,7 +27,7 @@ use utils::{ }; pub use delta_layer::{DeltaLayer, DeltaLayerWriter}; -pub use filename::{DeltaFileName, ImageFileName, LayerFileName, PathOrConf}; +pub(crate) use filename::{DeltaFileName, ImageFileName, LayerFileName, PathOrConf}; pub use image_layer::{ImageLayer, ImageLayerWriter}; pub use inmemory_layer::InMemoryLayer; pub use remote_layer::RemoteLayer; @@ -195,8 +194,6 @@ impl LayerResidenceStatus { } } -pub static LAYER_ACCESS_STATS_KILLSWITCH: AtomicBool = AtomicBool::new(false); - impl LayerAccessStats { pub(crate) fn for_loading_layer(residence_status: LayerResidenceStatus) -> Self { let new = LayerAccessStats(Mutex::new(LayerAccessStatsInner::default())); @@ -226,17 +223,11 @@ impl LayerAccessStats { } fn record_residence_change(&self, new_status: LayerResidenceStatus) { - if LAYER_ACCESS_STATS_KILLSWITCH.load(atomic::Ordering::SeqCst) { - return; - } let mut inner = self.0.lock().unwrap(); inner.last_residence_changes.write(new_status); } fn record_access(&self, access_kind: LayerAccessKind, task_kind: TaskKind) { - if LAYER_ACCESS_STATS_KILLSWITCH.load(atomic::Ordering::SeqCst) { - return; - } let mut inner = self.0.lock().unwrap(); let this_access = LayerAccessStatFullDetails { when: SystemTime::now(), diff --git a/pageserver/src/tenant/storage_layer/delta_layer.rs b/pageserver/src/tenant/storage_layer/delta_layer.rs index 4876aa30e8..f1d1376f88 100644 --- a/pageserver/src/tenant/storage_layer/delta_layer.rs +++ b/pageserver/src/tenant/storage_layer/delta_layer.rs @@ -572,7 +572,7 @@ impl DeltaLayer { } /// Create a DeltaLayer struct representing an existing file on disk. - pub fn new( + pub(crate) fn new( conf: &'static PageServerConf, timeline_id: TimelineId, tenant_id: TenantId, @@ -850,7 +850,7 @@ impl DeltaLayerWriter { /// /// Start building a new delta layer. /// - pub fn new( + pub(crate) fn new( conf: &'static PageServerConf, timeline_id: TimelineId, tenant_id: TenantId, diff --git a/pageserver/src/tenant/storage_layer/filename.rs b/pageserver/src/tenant/storage_layer/filename.rs index ade2fc20ab..678a177b33 100644 --- a/pageserver/src/tenant/storage_layer/filename.rs +++ b/pageserver/src/tenant/storage_layer/filename.rs @@ -279,7 +279,7 @@ impl<'de> serde::de::Visitor<'de> for LayerFileNameVisitor { /// struct for a file on disk, without having a page server running, so that we have no /// config. In that case, we use the Path variant to hold the full path to the file on /// disk. -pub enum PathOrConf { +pub(crate) enum PathOrConf { Path(PathBuf), Conf(&'static PageServerConf), } diff --git a/pageserver/src/tenant/storage_layer/image_layer.rs b/pageserver/src/tenant/storage_layer/image_layer.rs index c94237e8fd..21750e35af 100644 --- a/pageserver/src/tenant/storage_layer/image_layer.rs +++ b/pageserver/src/tenant/storage_layer/image_layer.rs @@ -373,7 +373,7 @@ impl ImageLayer { } /// Create an ImageLayer struct representing an existing file on disk - pub fn new( + pub(crate) fn new( conf: &'static PageServerConf, timeline_id: TimelineId, tenant_id: TenantId, @@ -639,7 +639,7 @@ impl ImageLayerWriter { /// /// Start building a new image layer. /// - pub fn new( + pub(crate) fn new( conf: &'static PageServerConf, timeline_id: TimelineId, tenant_id: TenantId, diff --git a/pageserver/src/tenant/storage_layer/inmemory_layer.rs b/pageserver/src/tenant/storage_layer/inmemory_layer.rs index 47e3082e89..cd0e4a39f1 100644 --- a/pageserver/src/tenant/storage_layer/inmemory_layer.rs +++ b/pageserver/src/tenant/storage_layer/inmemory_layer.rs @@ -234,7 +234,7 @@ impl InMemoryLayer { /// /// Create a new, empty, in-memory layer /// - pub fn create( + pub(crate) fn create( conf: &'static PageServerConf, timeline_id: TimelineId, tenant_id: TenantId, diff --git a/pageserver/src/tenant/storage_layer/remote_layer.rs b/pageserver/src/tenant/storage_layer/remote_layer.rs index db3cba6f3d..4ea30491de 100644 --- a/pageserver/src/tenant/storage_layer/remote_layer.rs +++ b/pageserver/src/tenant/storage_layer/remote_layer.rs @@ -218,7 +218,7 @@ impl RemoteLayer { } /// Create a Layer struct representing this layer, after it has been downloaded. - pub fn create_downloaded_layer( + pub(crate) fn create_downloaded_layer( &self, conf: &'static PageServerConf, file_size: u64, diff --git a/pageserver/src/walredo.rs b/pageserver/src/walredo.rs index ccd3f45ab1..369208bc8b 100644 --- a/pageserver/src/walredo.rs +++ b/pageserver/src/walredo.rs @@ -222,7 +222,7 @@ impl PostgresRedoManager { /// /// Create a new PostgresRedoManager. /// - pub fn new(conf: &'static PageServerConf, tenant_id: TenantId) -> PostgresRedoManager { + pub(crate) fn new(conf: &'static PageServerConf, tenant_id: TenantId) -> PostgresRedoManager { // The actual process is launched lazily, on first request. PostgresRedoManager { tenant_id,