From: Lukas Wagner <l.wagner@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [PATCH datacenter-manager/proxmox 00/15] task cache improvements (archive corruption handling, error handling)
Date: Thu, 2 Jul 2026 11:22:43 +0200 [thread overview]
Message-ID: <20260702092258.174740-1-l.wagner@proxmox.com> (raw)
This series bundles a couple of improvements and some refactoring efforts for
the task cache implementation in PDM.
Highlights:
- Fix an issue that led to PBS task fetch cutoffs not being recorded in the
state file, leading to always the full task history being requested
- Fail more gracefully if any of the zstd-archive files were corrupted (before,
you would end up in an endless loop when reading tasks due to the iterator not
making any progress)
- When creating a new zstd-compressed file, make sure create the file
atomically. This avoids creating a .zst file without a proper zst file header
if the process crashes at the wrong moment.
- Detect archive corruption during read/write access (when applying journal and when
compressing archive files). Attempt basic recovery in the next task fetching
cycle by resetting cutoff timestamps to the lower boundary of the corrupted
file.
- Improve logging, trying to include path to the affected archive file if there
is an error
- Statically compute static paths and only instantiate TaskCache once
The series also contains a patch for proxmox-sys, which is technically not
needed for this series, but the improvement opportunity popped up when working
on this series.
proxmox:
Lukas Wagner (1):
sys: fs: don't replace file extension make_tmp_file
proxmox-sys/src/fs/file.rs | 34 +++++++++++++++++++++++++++++++++-
1 file changed, 33 insertions(+), 1 deletion(-)
proxmox-datacenter-manager:
Lukas Wagner (14):
task cache: fix missing cutoff state for PBS remotes
task cache: refresh task: don't apply journal if the archive was
rotated
task cache: rotate: align timestamp for new files to UTC midnight
task cache: add test case for task cache rotation
task cache: pre-compute static paths during initialization
task cache: only initialize `TaskCache` struct once
task cache: archive iterator: don't yield more items if reading from
file failed
task cache: include archive file path in error log messages
task cache: introduce ArchiveFileWriter
task cache: use ArchiveFileWriter when creating new archive files
task cache: trigger repair of corruption when applying journal
task cache: trigger repair of corruption when compressing archive
files
task cache: trigger repair of corruption after read-accesses
task cache: handle potentially duplicated archive files after
'compress_archive_file'
server/src/remote_tasks/mod.rs | 53 +-
server/src/remote_tasks/refresh_task.rs | 51 +-
server/src/remote_tasks/task_cache.rs | 1055 ++++++++++++++++++-----
3 files changed, 922 insertions(+), 237 deletions(-)
Summary over all repositories:
4 files changed, 955 insertions(+), 238 deletions(-)
--
Generated by murpp 0.12.0
next reply other threads:[~2026-07-02 9:23 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-07-02 9:22 Lukas Wagner [this message]
2026-07-02 9:22 ` [PATCH proxmox 01/15] sys: fs: don't replace file extension make_tmp_file Lukas Wagner
2026-07-02 9:29 ` Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 02/15] task cache: fix missing cutoff state for PBS remotes Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 03/15] task cache: refresh task: don't apply journal if the archive was rotated Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 04/15] task cache: rotate: align timestamp for new files to UTC midnight Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 05/15] task cache: add test case for task cache rotation Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 06/15] task cache: pre-compute static paths during initialization Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 07/15] task cache: only initialize `TaskCache` struct once Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 08/15] task cache: archive iterator: don't yield more items if reading from file failed Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 09/15] task cache: include archive file path in error log messages Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 10/15] task cache: introduce ArchiveFileWriter Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 11/15] task cache: use ArchiveFileWriter when creating new archive files Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 12/15] task cache: trigger repair of corruption when applying journal Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 13/15] task cache: trigger repair of corruption when compressing archive files Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 14/15] task cache: trigger repair of corruption after read-accesses Lukas Wagner
2026-07-02 9:22 ` [PATCH datacenter-manager 15/15] task cache: handle potentially duplicated archive files after 'compress_archive_file' Lukas Wagner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260702092258.174740-1-l.wagner@proxmox.com \
--to=l.wagner@proxmox.com \
--cc=pdm-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.