WIP: make PageServerConf crate-private

This commit is contained in:
Christian Schwarz
2023-02-02 14:42:59 +01:00
parent 00dfb2702a
commit f63410b0d1
19 changed files with 34 additions and 46 deletions
-3
View File
@@ -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()),
+1 -1
View File
@@ -13,7 +13,7 @@ static BROKER_CLIENT: OnceCell<BrokerClientChannel> = 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).
+1 -1
View File
@@ -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,
+1 -1
View File
@@ -1,4 +1,4 @@
pub mod routes;
pub use routes::make_router;
pub(crate) use routes::make_router;
pub use pageserver_api::models;
+1 -1
View File
@@ -948,7 +948,7 @@ async fn handler_404(_: Request<Body>) -> Result<Response<Body>, ApiError> {
)
}
pub fn make_router(
pub(crate) fn make_router(
conf: &'static PageServerConf,
auth: Option<Arc<JwtAuth>>,
remote_storage: Option<GenericRemoteStorage>,
+1 -1
View File
@@ -119,7 +119,7 @@ fn copyin_stream(pgb: &mut PostgresBackend) -> impl Stream<Item = io::Result<Byt
///
/// Listens for connections, and launches a new handler task for each.
///
pub async fn libpq_listener_main(
pub(crate) async fn libpq_listener_main(
conf: &'static PageServerConf,
auth: Option<Arc<JwtAuth>>,
listener: TcpListener,
+5 -5
View File
@@ -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<TenantState>,
@@ -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<Tenant> {
pub(crate) fn create_broken_tenant(conf: &'static PageServerConf, tenant_id: TenantId) -> Arc<Tenant> {
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<GenericRemoteStorage>,
+1 -1
View File
@@ -47,7 +47,7 @@ pub struct EphemeralFile {
}
impl EphemeralFile {
pub fn create(
pub(crate) fn create(
conf: &PageServerConf,
tenant_id: TenantId,
timeline_id: TimelineId,
+2 -2
View File
@@ -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,
+8 -8
View File
@@ -59,7 +59,7 @@ static TENANTS: Lazy<RwLock<TenantsMap>> = 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<GenericRemoteStorage>,
) -> 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<GenericRemoteStorage>,
@@ -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<GenericRemoteStorage>,
@@ -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<Vec<(TenantId, TenantState)>, 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,
@@ -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,
@@ -31,7 +31,7 @@ async fn fsync_path(path: impl AsRef<std::path::Path>) -> 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,
+1 -10
View File
@@ -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(),
@@ -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,
@@ -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),
}
@@ -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,
@@ -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,
@@ -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,
+1 -1
View File
@@ -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,