Skip to content

Commit 8e914d3

Browse files
committed
Enable Foyer cache in CI with small disk sizes
Instead of disabling Foyer entirely, use small cache sizes (50MB disk) similar to the test_config. This ensures integration tests exercise the cache while avoiding the slow disk pre-allocation. Added _DISK_MB env vars for fine-grained control over cache sizes.
1 parent 9b44f80 commit 8e914d3

File tree

3 files changed

+23
-9
lines changed

3 files changed

+23
-9
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,12 @@ jobs:
6363
MAX_PG_CONNECTIONS: "100"
6464
AWS_S3_LOCKING_PROVIDER: ""
6565
WALRUS_DATA_DIR: /tmp/walrus-wal
66-
TIMEFUSION_FOYER_DISABLED: "true"
66+
# Use small cache sizes for CI tests (similar to test_config in object_store_cache.rs)
67+
TIMEFUSION_FOYER_MEMORY_MB: "10"
68+
TIMEFUSION_FOYER_DISK_MB: "50"
69+
TIMEFUSION_FOYER_METADATA_MEMORY_MB: "10"
70+
TIMEFUSION_FOYER_METADATA_DISK_MB: "50"
71+
TIMEFUSION_FOYER_SHARDS: "2"
6772
services:
6873
minio:
6974
image: public.ecr.aws/bitnami/minio:latest

src/database.rs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -297,12 +297,6 @@ impl Database {
297297
}
298298

299299
async fn initialize_cache_with_retry() -> Option<Arc<SharedFoyerCache>> {
300-
// Allow disabling cache for testing
301-
if env::var("TIMEFUSION_FOYER_DISABLED").is_ok() {
302-
info!("Foyer cache disabled via TIMEFUSION_FOYER_DISABLED environment variable");
303-
return None;
304-
}
305-
306300
let config = FoyerCacheConfig::from_env();
307301
info!(
308302
"Initializing shared Foyer hybrid cache (memory: {}MB, disk: {}GB, TTL: {}s)",

src/object_store_cache.rs

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,17 +135,32 @@ impl FoyerCacheConfig {
135135
std::env::var(key).ok().and_then(|v| v.parse().ok()).unwrap_or(default)
136136
}
137137

138+
// Support both MB and GB for disk sizes (MB takes precedence for smaller test configs)
139+
let disk_size_bytes =
140+
if let Ok(mb) = std::env::var("TIMEFUSION_FOYER_DISK_MB").and_then(|v| v.parse::<usize>().map_err(|_| std::env::VarError::NotPresent)) {
141+
mb * 1024 * 1024
142+
} else {
143+
parse_env::<usize>("TIMEFUSION_FOYER_DISK_GB", 100) * 1024 * 1024 * 1024
144+
};
145+
146+
let metadata_disk_size_bytes =
147+
if let Ok(mb) = std::env::var("TIMEFUSION_FOYER_METADATA_DISK_MB").and_then(|v| v.parse::<usize>().map_err(|_| std::env::VarError::NotPresent)) {
148+
mb * 1024 * 1024
149+
} else {
150+
parse_env::<usize>("TIMEFUSION_FOYER_METADATA_DISK_GB", 5) * 1024 * 1024 * 1024
151+
};
152+
138153
Self {
139154
memory_size_bytes: parse_env::<usize>("TIMEFUSION_FOYER_MEMORY_MB", 512) * 1024 * 1024,
140-
disk_size_bytes: parse_env::<usize>("TIMEFUSION_FOYER_DISK_GB", 100) * 1024 * 1024 * 1024,
155+
disk_size_bytes,
141156
ttl: Duration::from_secs(parse_env("TIMEFUSION_FOYER_TTL_SECONDS", 604800)),
142157
cache_dir: PathBuf::from(parse_env("TIMEFUSION_FOYER_CACHE_DIR", "/tmp/timefusion_cache".to_string())),
143158
shards: parse_env("TIMEFUSION_FOYER_SHARDS", 8),
144159
file_size_bytes: parse_env::<usize>("TIMEFUSION_FOYER_FILE_SIZE_MB", 32) * 1024 * 1024,
145160
enable_stats: parse_env("TIMEFUSION_FOYER_STATS", "true".to_string()).to_lowercase() == "true",
146161
parquet_metadata_size_hint: parse_env("TIMEFUSION_PARQUET_METADATA_SIZE_HINT", 1_048_576),
147162
metadata_memory_size_bytes: parse_env::<usize>("TIMEFUSION_FOYER_METADATA_MEMORY_MB", 512) * 1024 * 1024,
148-
metadata_disk_size_bytes: parse_env::<usize>("TIMEFUSION_FOYER_METADATA_DISK_GB", 5) * 1024 * 1024 * 1024,
163+
metadata_disk_size_bytes,
149164
metadata_shards: parse_env("TIMEFUSION_FOYER_METADATA_SHARDS", 4),
150165
}
151166
}

0 commit comments

Comments
 (0)