Skip to content

Commit 957fca5

Browse files
committed
agent: purge caches if disk is full before starting an experiment
1 parent 5435405 commit 957fca5

File tree

1 file changed

+16
-0
lines changed

1 file changed

+16
-0
lines changed

src/agent/mod.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ use crate::db::{Database, QueryUtils};
99
use crate::experiments::Experiment;
1010
use crate::prelude::*;
1111
use crate::utils;
12+
use crate::utils::disk_usage::DiskUsage;
1213
use failure::Error;
1314
use rustwide::Workspace;
1415
use std::collections::BTreeSet;
@@ -17,6 +18,9 @@ use std::ops;
1718
use std::thread;
1819
use std::time::Duration;
1920

21+
// Purge all the caches if the disk is more than 50% full.
22+
const PURGE_CACHES_THRESHOLD: f32 = 0.5;
23+
2024
#[derive(Default, Serialize, Deserialize)]
2125
pub struct Capabilities {
2226
#[serde(default)]
@@ -117,6 +121,18 @@ fn run_experiment(
117121
}
118122
*past_experiment = Some(ex.name.clone());
119123

124+
match DiskUsage::fetch() {
125+
Ok(usage) => {
126+
if usage.is_threshold_reached(PURGE_CACHES_THRESHOLD) {
127+
warn!("purging all caches");
128+
workspace.purge_all_caches().map_err(|err| (None, err))?;
129+
}
130+
}
131+
Err(err) => {
132+
warn!("failed to check the disk usage: {}", err);
133+
}
134+
}
135+
120136
crate::runner::run_ex(&ex, workspace, &crates, db, threads_count, &agent.config)
121137
.map_err(|err| (Some(ex), err))?;
122138
Ok(())

0 commit comments

Comments
 (0)