Skip to content

Commit 1845eeb

Browse files
committed
allow disabling optimization
1 parent bc544f9 commit 1845eeb

1 file changed

Lines changed: 43 additions & 33 deletions

File tree

src/database.rs

Lines changed: 43 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -405,49 +405,59 @@ impl Database {
405405

406406
// Optimize job - configurable schedule (default: every 30mins)
407407
let optimize_schedule = env::var("TIMEFUSION_OPTIMIZE_SCHEDULE").unwrap_or_else(|_| "0 */30 * * * *".to_string());
408-
info!("Optimize job scheduled with cron expression: {}", optimize_schedule);
408+
409+
if !optimize_schedule.is_empty() {
410+
info!("Optimize job scheduled with cron expression: {}", optimize_schedule);
409411

410-
let optimize_job = Job::new_async(&optimize_schedule, {
411-
let db = db.clone();
412-
move |_, _| {
412+
let optimize_job = Job::new_async(&optimize_schedule, {
413413
let db = db.clone();
414-
Box::pin(async move {
415-
info!("Running scheduled optimize on all tables");
416-
for ((project_id, table_name), table) in db.project_configs.read().await.iter() {
417-
if let Err(e) = db.optimize_table(table, None).await {
418-
error!("Optimize failed for project '{}' table '{}': {}", project_id, table_name, e);
414+
move |_, _| {
415+
let db = db.clone();
416+
Box::pin(async move {
417+
info!("Running scheduled optimize on all tables");
418+
for ((project_id, table_name), table) in db.project_configs.read().await.iter() {
419+
if let Err(e) = db.optimize_table(table, None).await {
420+
error!("Optimize failed for project '{}' table '{}': {}", project_id, table_name, e);
421+
}
419422
}
420-
}
421-
})
422-
}
423-
})?;
423+
})
424+
}
425+
})?;
424426

425-
scheduler.add(optimize_job).await?;
427+
scheduler.add(optimize_job).await?;
428+
} else {
429+
info!("Optimize job scheduling skipped - empty schedule");
430+
}
426431

427432
// Vacuum job - configurable schedule (default: daily at 2AM)
428433
let vacuum_schedule = env::var("TIMEFUSION_VACUUM_SCHEDULE").unwrap_or_else(|_| "0 0 2 * * *".to_string());
429-
info!("Vacuum job scheduled with cron expression: {}", vacuum_schedule);
434+
435+
if !vacuum_schedule.is_empty() {
436+
info!("Vacuum job scheduled with cron expression: {}", vacuum_schedule);
430437

431-
let vacuum_job = Job::new_async(&vacuum_schedule, {
432-
let db = db.clone();
433-
move |_, _| {
438+
let vacuum_job = Job::new_async(&vacuum_schedule, {
434439
let db = db.clone();
435-
Box::pin(async move {
436-
info!("Running scheduled vacuum on all tables");
437-
let retention_hours = env::var("TIMEFUSION_VACUUM_RETENTION_HOURS")
438-
.unwrap_or_else(|_| DEFAULT_VACUUM_RETENTION_HOURS.to_string())
439-
.parse::<u64>()
440-
.unwrap_or(DEFAULT_VACUUM_RETENTION_HOURS);
441-
442-
for ((project_id, table_name), table) in db.project_configs.read().await.iter() {
443-
info!("Vacuuming project '{}' table '{}' (retention: {}h)", project_id, table_name, retention_hours);
444-
db.vacuum_table(table, retention_hours).await;
445-
}
446-
})
447-
}
448-
})?;
440+
move |_, _| {
441+
let db = db.clone();
442+
Box::pin(async move {
443+
info!("Running scheduled vacuum on all tables");
444+
let retention_hours = env::var("TIMEFUSION_VACUUM_RETENTION_HOURS")
445+
.unwrap_or_else(|_| DEFAULT_VACUUM_RETENTION_HOURS.to_string())
446+
.parse::<u64>()
447+
.unwrap_or(DEFAULT_VACUUM_RETENTION_HOURS);
448+
449+
for ((project_id, table_name), table) in db.project_configs.read().await.iter() {
450+
info!("Vacuuming project '{}' table '{}' (retention: {}h)", project_id, table_name, retention_hours);
451+
db.vacuum_table(table, retention_hours).await;
452+
}
453+
})
454+
}
455+
})?;
449456

450-
scheduler.add(vacuum_job).await?;
457+
scheduler.add(vacuum_job).await?;
458+
} else {
459+
info!("Vacuum job scheduling skipped - empty schedule");
460+
}
451461

452462
// Cache stats job - every 5 minutes
453463
let cache_stats_job = Job::new_async("0 */5 * * * *", {

0 commit comments

Comments
 (0)