]>
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
>,
17 ) -> Result
<String
, Error
> {
19 let email
= crate::server
::lookup_user_email(auth_id
.user());
21 let store
= datastore
.name().to_string();
23 let worker_type
= job
.jobtype().to_string();
24 let upid_str
= WorkerTask
::new_thread(
30 job
.start(&worker
.upid().to_string())?
;
32 worker
.log(format
!("starting garbage collection on store {}", store
));
33 if let Some(event_str
) = schedule
{
34 worker
.log(format
!("task triggered by schedule '{}'", event_str
));
37 let result
= datastore
.garbage_collection(&*worker
, worker
.upid());
39 let status
= worker
.create_state(&result
);
41 match job
.finish(status
) {
42 Err(err
) => eprintln
!(
43 "could not finish job state for {}: {}",
44 job
.jobtype().to_string(),
50 if let Some(email
) = email
{
51 let gc_status
= datastore
.last_gc_status();
52 if let Err(err
) = crate::server
::send_gc_status(&email
, &store
, &gc_status
, &result
) {
53 eprintln
!("send gc notification failed: {}", err
);