server/worker_task: write older tasks into archive file
instead of removing tasks beyond the 1000 that are in the index write them into an archive file by appending them at the end this way we can later still read them Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
parent
784fa1c2e3
commit
5ade6c25f3
@ -1,6 +1,6 @@
|
||||
use std::collections::HashMap;
|
||||
use std::fs::File;
|
||||
use std::io::{Read, BufRead, BufReader};
|
||||
use std::io::{Read, Write, BufRead, BufReader};
|
||||
use std::panic::UnwindSafe;
|
||||
use std::sync::atomic::{AtomicBool, Ordering};
|
||||
use std::sync::{Arc, Mutex};
|
||||
@ -32,6 +32,7 @@ pub const PROXMOX_BACKUP_TASK_DIR: &str = PROXMOX_BACKUP_TASK_DIR_M!();
|
||||
pub const PROXMOX_BACKUP_TASK_LOCK_FN: &str = concat!(PROXMOX_BACKUP_TASK_DIR_M!(), "/.active.lock");
|
||||
pub const PROXMOX_BACKUP_ACTIVE_TASK_FN: &str = concat!(PROXMOX_BACKUP_TASK_DIR_M!(), "/active");
|
||||
pub const PROXMOX_BACKUP_INDEX_TASK_FN: &str = concat!(PROXMOX_BACKUP_TASK_DIR_M!(), "/index");
|
||||
pub const PROXMOX_BACKUP_ARCHIVE_TASK_FN: &str = concat!(PROXMOX_BACKUP_TASK_DIR_M!(), "/archive");
|
||||
|
||||
const MAX_INDEX_TASKS: usize = 1000;
|
||||
|
||||
@ -407,6 +408,19 @@ fn update_active_workers(new_upid: Option<&UPID>) -> Result<Vec<TaskListInfo>, E
|
||||
.group(backup_user.gid),
|
||||
)?;
|
||||
|
||||
if !finish_list.is_empty() && start > 0 {
|
||||
match std::fs::OpenOptions::new().append(true).create(true).open(PROXMOX_BACKUP_ARCHIVE_TASK_FN) {
|
||||
Ok(mut writer) => {
|
||||
for info in &finish_list[0..start] {
|
||||
writer.write_all(render_task_line(&info).as_bytes())?;
|
||||
}
|
||||
},
|
||||
Err(err) => bail!("could not write task archive - {}", err),
|
||||
}
|
||||
|
||||
nix::unistd::chown(PROXMOX_BACKUP_ARCHIVE_TASK_FN, Some(backup_user.uid), Some(backup_user.gid))?;
|
||||
}
|
||||
|
||||
drop(lock);
|
||||
|
||||
finish_list.append(&mut active_list);
|
||||
|
Loading…
Reference in New Issue
Block a user