Skip to content

Commit 474c423

Browse files
committed
properly call .shutdown() in backup download handlers
1 parent ff2aff2 commit 474c423

File tree

4 files changed

+75
-46
lines changed

4 files changed

+75
-46
lines changed

application/src/server/backup/adapters/btrfs.rs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -255,28 +255,32 @@ impl BackupExt for BtrfsBackup {
255255

256256
match archive_format {
257257
StreamableArchiveFormat::Zip => {
258-
if let Err(err) =
259-
crate::server::filesystem::archive::create::create_zip_streaming(
260-
filesystem,
261-
writer,
262-
Path::new(""),
263-
names,
264-
None,
265-
ignore.into(),
266-
crate::server::filesystem::archive::create::CreateZipOptions {
267-
compression_level: config.system.backups.compression_level,
268-
},
269-
)
270-
.await
258+
match crate::server::filesystem::archive::create::create_zip_streaming(
259+
filesystem,
260+
writer,
261+
Path::new(""),
262+
names,
263+
None,
264+
ignore.into(),
265+
crate::server::filesystem::archive::create::CreateZipOptions {
266+
compression_level: config.system.backups.compression_level,
267+
},
268+
)
269+
.await
271270
{
272-
tracing::error!(
273-
"failed to create zip archive for btrfs backup: {}",
274-
err
275-
);
271+
Ok(inner) => {
272+
inner.into_inner().shutdown().await.ok();
273+
}
274+
Err(err) => {
275+
tracing::error!(
276+
"failed to create zip archive for btrfs backup: {}",
277+
err
278+
);
279+
}
276280
}
277281
}
278282
_ => {
279-
if let Err(err) = crate::server::filesystem::archive::create::create_tar(
283+
match crate::server::filesystem::archive::create::create_tar(
280284
filesystem,
281285
writer,
282286
Path::new(""),
@@ -291,10 +295,15 @@ impl BackupExt for BtrfsBackup {
291295
)
292296
.await
293297
{
294-
tracing::error!(
295-
"failed to create tar archive for btrfs backup: {}",
296-
err
297-
);
298+
Ok(inner) => {
299+
inner.into_inner().shutdown().await.ok();
300+
}
301+
Err(err) => {
302+
tracing::error!(
303+
"failed to create tar archive for btrfs backup: {}",
304+
err
305+
);
306+
}
298307
}
299308
}
300309
}

application/src/server/backup/adapters/ddup_bak.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -419,7 +419,9 @@ impl BackupExt for DdupBakBackup {
419419
)?;
420420
}
421421

422-
zip.finish()?;
422+
let mut inner = zip.finish()?.into_inner();
423+
inner.flush()?;
424+
inner.shutdown()?;
423425

424426
Ok(())
425427
});
@@ -446,6 +448,9 @@ impl BackupExt for DdupBakBackup {
446448
}
447449

448450
tar.finish()?;
451+
let mut inner = tar.into_inner()?.finish()?;
452+
inner.flush()?;
453+
inner.shutdown()?;
449454

450455
Ok(())
451456
});

application/src/server/backup/adapters/restic.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -662,6 +662,10 @@ impl BackupExt for ResticBackup {
662662
}
663663
}
664664

665+
let mut inner = archive.finish()?.into_inner();
666+
inner.flush()?;
667+
inner.shutdown()?;
668+
665669
Ok(())
666670
});
667671
}
@@ -698,7 +702,9 @@ impl BackupExt for ResticBackup {
698702
);
699703
}
700704

701-
writer.finish()?;
705+
let mut inner = writer.finish()?;
706+
inner.flush()?;
707+
inner.shutdown()?;
702708

703709
Ok(())
704710
});

application/src/server/backup/adapters/zfs.rs

Lines changed: 31 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -242,28 +242,32 @@ impl BackupExt for ZfsBackup {
242242

243243
match archive_format {
244244
StreamableArchiveFormat::Zip => {
245-
if let Err(err) =
246-
crate::server::filesystem::archive::create::create_zip_streaming(
247-
filesystem,
248-
writer,
249-
Path::new(""),
250-
names,
251-
None,
252-
ignore.into(),
253-
crate::server::filesystem::archive::create::CreateZipOptions {
254-
compression_level: config.system.backups.compression_level,
255-
},
256-
)
257-
.await
245+
match crate::server::filesystem::archive::create::create_zip_streaming(
246+
filesystem,
247+
writer,
248+
Path::new(""),
249+
names,
250+
None,
251+
ignore.into(),
252+
crate::server::filesystem::archive::create::CreateZipOptions {
253+
compression_level: config.system.backups.compression_level,
254+
},
255+
)
256+
.await
258257
{
259-
tracing::error!(
260-
"failed to create zip archive for btrfs backup: {}",
261-
err
262-
);
258+
Ok(inner) => {
259+
inner.into_inner().shutdown().await.ok();
260+
}
261+
Err(err) => {
262+
tracing::error!(
263+
"failed to create zip archive for zfs backup: {}",
264+
err
265+
);
266+
}
263267
}
264268
}
265269
_ => {
266-
if let Err(err) = crate::server::filesystem::archive::create::create_tar(
270+
match crate::server::filesystem::archive::create::create_tar(
267271
filesystem,
268272
writer,
269273
Path::new(""),
@@ -278,10 +282,15 @@ impl BackupExt for ZfsBackup {
278282
)
279283
.await
280284
{
281-
tracing::error!(
282-
"failed to create tar archive for btrfs backup: {}",
283-
err
284-
);
285+
Ok(inner) => {
286+
inner.into_inner().shutdown().await.ok();
287+
}
288+
Err(err) => {
289+
tracing::error!(
290+
"failed to create tar archive for zfs backup: {}",
291+
err
292+
);
293+
}
285294
}
286295
}
287296
}

0 commit comments

Comments
 (0)