]>
git.proxmox.com Git - proxmox-backup.git/blob - src/server/gc_job.rs
11 /// Runs a garbage collection job.
12 pub fn do_garbage_collection_job(
14 datastore
: Arc
<DataStore
>,
16 schedule
: Option
<String
>,
18 ) -> Result
<String
, Error
> {
20 let store
= datastore
.name().to_string();
22 let (email
, notify
) = crate::server
::lookup_datastore_notify_settings(&store
);
24 let worker_type
= job
.jobtype().to_string();
25 let upid_str
= WorkerTask
::new_thread(
31 job
.start(&worker
.upid().to_string())?
;
33 worker
.log(format
!("starting garbage collection on store {}", store
));
34 if let Some(event_str
) = schedule
{
35 worker
.log(format
!("task triggered by schedule '{}'", event_str
));
38 let result
= datastore
.garbage_collection(&*worker
, worker
.upid());
40 let status
= worker
.create_state(&result
);
42 match job
.finish(status
) {
43 Err(err
) => eprintln
!(
44 "could not finish job state for {}: {}",
45 job
.jobtype().to_string(),
51 if let Some(email
) = email
{
52 let gc_status
= datastore
.last_gc_status();
53 if let Err(err
) = crate::server
::send_gc_status(&email
, notify
, &store
, &gc_status
, &result
) {
54 eprintln
!("send gc notification failed: {}", err
);