v0.3.2-pre.004-fix.001

This commit is contained in:
2026-08-29 19:04:47 +02:00
parent 6d2b1401aa
commit 0a4cddafc4
17 changed files with 509 additions and 99 deletions

View File

@@ -1,5 +1,5 @@
// file: crates/ksp-store-lib/src/settings.rs
// version: 1
// version: 2
const DEFAULT_CONNECT_TIMEOUT_MS: u64 = 10_000;
const DEFAULT_MAX_CONNECTIONS: u32 = 8;
@@ -117,7 +117,12 @@ impl PostgresPoolSettings {
.with_context("maximum", MAX_CONNECTIONS.to_string()),
);
}
let connect_validation = validate_duration("postgres.pool.connect_timeout", self.connect_timeout, MIN_CONNECT_TIMEOUT_MS, MAX_CONNECT_TIMEOUT_MS);
let connect_validation = validate_duration(
"postgres.pool.connect_timeout",
self.connect_timeout,
MIN_CONNECT_TIMEOUT_MS,
MAX_CONNECT_TIMEOUT_MS,
);
if let std::result::Result::Err(error) = connect_validation {
return std::result::Result::Err(error);
}
@@ -125,12 +130,21 @@ impl PostgresPoolSettings {
if let std::result::Result::Err(error) = wait_validation {
return std::result::Result::Err(error);
}
let create_validation = validate_duration("postgres.pool.create_timeout", self.create_timeout, MIN_POOL_CREATE_TIMEOUT_MS, MAX_POOL_CREATE_TIMEOUT_MS);
let create_validation = validate_duration(
"postgres.pool.create_timeout",
self.create_timeout,
MIN_POOL_CREATE_TIMEOUT_MS,
MAX_POOL_CREATE_TIMEOUT_MS,
);
if let std::result::Result::Err(error) = create_validation {
return std::result::Result::Err(error);
}
let recycle_validation =
validate_duration("postgres.pool.recycle_timeout", self.recycle_timeout, MIN_POOL_RECYCLE_TIMEOUT_MS, MAX_POOL_RECYCLE_TIMEOUT_MS);
let recycle_validation = validate_duration(
"postgres.pool.recycle_timeout",
self.recycle_timeout,
MIN_POOL_RECYCLE_TIMEOUT_MS,
MAX_POOL_RECYCLE_TIMEOUT_MS,
);
if let std::result::Result::Err(error) = recycle_validation {
return std::result::Result::Err(error);
}
@@ -185,8 +199,12 @@ impl PostgresBootstrapSettings {
/// Validates bootstrap and migration deadlines without contacting PostgreSQL.
pub fn validate(&self) -> ksp_store_api::Result<()> {
let migration_validation =
validate_duration("postgres.bootstrap.migration_timeout", self.migration_timeout, MIN_MIGRATION_TIMEOUT_MS, MAX_MIGRATION_TIMEOUT_MS);
let migration_validation = validate_duration(
"postgres.bootstrap.migration_timeout",
self.migration_timeout,
MIN_MIGRATION_TIMEOUT_MS,
MAX_MIGRATION_TIMEOUT_MS,
);
if let std::result::Result::Err(error) = migration_validation {
return std::result::Result::Err(error);
}
@@ -312,14 +330,15 @@ impl StoreBackendSettings {
#[derive(Debug)]
pub struct StoreSettings {
backend: StoreBackendSettings,
network: ksp_store_api::RawNetworkId,
shutdown_timeout: std::time::Duration,
}
impl StoreSettings {
/// Creates complete Store runtime settings from one explicit backend and shutdown bound.
/// Creates complete Store runtime settings for one explicit logical network, backend and shutdown bound.
#[must_use]
pub const fn new(backend: StoreBackendSettings, shutdown_timeout: std::time::Duration) -> Self {
return Self { backend, shutdown_timeout };
pub fn new(network: ksp_store_api::RawNetworkId, backend: StoreBackendSettings, shutdown_timeout: std::time::Duration) -> Self {
return Self { backend, network, shutdown_timeout };
}
/// Returns the selected backend settings.
@@ -334,6 +353,12 @@ impl StoreSettings {
return self.backend.kind();
}
/// Returns the single logical network bound to this Store instance.
#[must_use]
pub const fn network(&self) -> &ksp_store_api::RawNetworkId {
return &self.network;
}
/// Returns the maximum duration allowed for explicit Store shutdown.
#[must_use]
pub const fn shutdown_timeout(&self) -> std::time::Duration {
@@ -355,10 +380,10 @@ impl StoreSettings {
}
impl StoreSettings {
/// Creates settings using the common default shutdown bound while keeping backend construction explicit.
/// Creates settings using the common default shutdown bound while keeping network and backend construction explicit.
#[must_use]
pub fn with_default_shutdown(backend: StoreBackendSettings) -> Self {
return Self::new(backend, std::time::Duration::from_millis(DEFAULT_SHUTDOWN_TIMEOUT_MS));
pub fn with_default_shutdown(network: ksp_store_api::RawNetworkId, backend: StoreBackendSettings) -> Self {
return Self::new(network, backend, std::time::Duration::from_millis(DEFAULT_SHUTDOWN_TIMEOUT_MS));
}
}