diff --git a/pageserver/src/http/routes.rs b/pageserver/src/http/routes.rs
index be2d785c53..e0f09134ff 100644
--- a/pageserver/src/http/routes.rs
+++ b/pageserver/src/http/routes.rs
@@ -1203,7 +1203,7 @@ async fn handle_tenant_break(r: Request
) -> Result, ApiErro
async fn disk_usage_eviction_run(mut r: Request) -> Result, ApiError> {
check_permission(&r, None)?;
- #[derive(serde::Deserialize)]
+ #[derive(Debug, Clone, Copy, serde::Serialize, serde::Deserialize)]
struct Config {
/// How many bytes to evict before reporting that pressure is relieved.
evict_bytes: u64,
@@ -1211,13 +1211,15 @@ async fn disk_usage_eviction_run(mut r: Request) -> Result,
#[derive(Debug, Clone, Copy, serde::Serialize)]
struct Usage {
- evict_bytes: u64,
+ // remains unchanged after instantiation of the struct
+ config: Config,
+ // updated by `add_available_bytes`
freed_bytes: u64,
}
impl crate::disk_usage_eviction_task::Usage for Usage {
fn has_pressure(&self) -> bool {
- self.evict_bytes > self.freed_bytes
+ self.config.evict_bytes > self.freed_bytes
}
fn add_available_bytes(&mut self, bytes: u64) {
@@ -1230,7 +1232,7 @@ async fn disk_usage_eviction_run(mut r: Request) -> Result,
.map_err(|_| ApiError::BadRequest(anyhow::anyhow!("invalid JSON body")))?;
let usage = Usage {
- evict_bytes: config.evict_bytes,
+ config,
freed_bytes: 0,
};