[pdm-devel] [PATCH proxmox-datacenter-manager 1/2] server: remote task archive: handle missing journal file gracefully
Lukas Wagner
l.wagner at proxmox.com
Wed Sep 3 16:48:51 CEST 2025
This file is only created after the first update round. This fixes a
'could not create task archive iterator' error when requesting the task
list directly after server startup, in case the journal was deleted or
has not existed before.
Signed-off-by: Lukas Wagner <l.wagner at proxmox.com>
---
server/src/remote_tasks/task_cache.rs | 27 ++++++++++++++++++++-------
1 file changed, 20 insertions(+), 7 deletions(-)
diff --git a/server/src/remote_tasks/task_cache.rs b/server/src/remote_tasks/task_cache.rs
index e9e708e4..57047c8c 100644
--- a/server/src/remote_tasks/task_cache.rs
+++ b/server/src/remote_tasks/task_cache.rs
@@ -952,14 +952,27 @@ impl<'a> TaskArchiveIterator<'a> {
.peekable();
if let Some(journal) = journal {
- let journal_reader = Box::new(BufReader::new(File::open(journal)?));
- let journal_task_iterator = JournalIterator::new(journal_reader).peekable();
- let merge_task_iter = MergeTaskIterator::new(journal_task_iterator, inner);
+ let file = File::open(journal);
- Ok(Self {
- inner: Box::new(merge_task_iter),
- _lock: lock,
- })
+ match file {
+ Ok(file) => {
+ let journal_reader = Box::new(BufReader::new(file));
+ let journal_task_iterator = JournalIterator::new(journal_reader).peekable();
+ let merge_task_iter = MergeTaskIterator::new(journal_task_iterator, inner);
+
+ Ok(Self {
+ inner: Box::new(merge_task_iter),
+ _lock: lock,
+ })
+ }
+ Err(err) if err.kind() == ErrorKind::NotFound => Ok(Self {
+ inner: Box::new(inner),
+ _lock: lock,
+ }),
+ Err(err) => {
+ return Err(err.into());
+ }
+ }
} else {
Ok(Self {
inner: Box::new(inner),
--
2.47.2
More information about the pdm-devel
mailing list