Use permanent job IDs, explicit settings and compatible SSH with fewer idle writes (#486, #495, #496, #497) - #494
Draft
borg-codex-bot wants to merge 18 commits into
Draft
Use permanent job IDs, explicit settings and compatible SSH with fewer idle writes (#486, #495, #496, #497)#494borg-codex-bot wants to merge 18 commits into
borg-codex-bot wants to merge 18 commits into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Jobs currently use mutable type/location values for ownership. This PR assigns each job a permanent UUID so renaming the job or its full archive prefix keeps schedules, history and restore results attached to that job. It also stores explicit job settings and rejects unsupported old configuration exports (#495). Background notification checks and routine navigation stop causing the unnecessary writes documented in #497. The shared SSH command also accepts older OpenSSH clients while retaining warning suppression on newer ones, allowing the minimum Unraid version to return to 6.12.5 (#496).
The maintainer explicitly requested #495, #496 and #497 on the existing #486 branch and PR. These fixes retain their own issue-linked commits and release-note fragments. #498 is not implemented in this candidate.
Behavior
job_idand the existingjob_keyfield. Use it throughout the existing Dashboard, Jobs, History, Reports, Restore and scheduler workflows; sort jobs by name within the existing groups.job_ids_v1andjob_settings_v1. Snapshot affected data, preserve explicit settings and unknown fields, save effective compression/retention and automatic appearance, and resume interrupted writes with audit details and startup-log progress. Preserve cache/check references. The final job schema is 5.-backupending. Preserve previous prefixes for Browse & Restore and reject overlaps between jobs in the same repository. Preserve Main's native current-prefix Borg prune and its verbose output.Dashboard layout, support-bundle content and restore-test scheduling remain within their existing workflows. Issue #447 stays frozen; scheduler work remains in #493. This PR contains no stable manifest, stable package or release-only application version bump.
Reduce unnecessary boot USB writes during idle operation and UI navigation #497: Leave missing, empty and unchanged notification queues untouched during background checks, including retries not yet due. Keep actual queue claims, deliveries, retries and new events persisted under the existing locks.
Reduce unnecessary boot USB writes during idle operation and UI navigation #497: Avoid redundant chmod on correctly protected inventory locks. Keep permission correction and thread/process serialization.
Reduce unnecessary boot USB writes during idle operation and UI navigation #497: Inspect data directories and mounts without creating directories or write-test files during setup-status and restore-browsing GETs (archive/file lists, repository statistics, target-directory browsing and restore state). Preserve write probes for setup and actual backup, restore, check and download actions.
Reduce unnecessary boot USB writes during idle operation and UI navigation #497: Keep service Python bytecode in the private RAM directory
/run/borg-backup-ui/pycache, inherited by child processes and reused across service restarts. Current cron requests start jobs through the API and share this cache. Unraid clears it at reboot; there is no fixed RAM allocation. If cache preparation fails, continue without bytecode writes and without falling back to USB. Authentication, configuration/secret stores and Borg caches are unchanged.Handle optional SSH warnings compatibly and lower minimum Unraid to 6.12.5 #496: Place
IgnoreUnknown=WarnWeakCryptobeforeWarnWeakCrypto=noin the shared SSH transport used by backup, repository operations, restore and restore tests. Extend an existing command-line ignore list in place and normalize repeated calls without duplicate managed options. Keep identity selection, keepalives, ciphers and other transport settings unchanged. Lower Community Apps metadata and German/English requirements to Unraid 6.12.5; Python 3.10 or newer remains required.Validation
ef52219c74eb72b702aef0d4e5b07fb3579c234a: 928 tests passed, none skipped (36.83 seconds), plus Python syntax checks. Real Borg 1.4.5, Node and OpenSSH 9.6p1 were available. The full suite ran once for this final pushed commit.ssh -Gchecks made no network connection. Newer clients still receiveWarnWeakCrypto=no; actual SSH-profile backups on older/current Unraid, with recorded Unraid/OpenSSH versions, remain pending.Test candidate
ef52219c74eb72b702aef0d4e5b07fb3579c234aoncodex/issue-486-job-ids; dedicated commitSupport older SSH clients and Unraid 6.12.5 (#496).3f4058ca4d8a9b947c46467706e4bbd0d4c31de5, stable2026.09.07.0935.2026.09.09.1010.ebd2b6c804f55cc33cd5f4a68b289462c51b50ee; exactly one manifest and one package.fab8bbbc86a0a7588d372ddf1e0e607b), package permissions, source provenance, Handle optional SSH warnings compatibly and lower minimum Unraid to 6.12.5 #496/Reduce unnecessary boot USB writes during idle operation and UI navigation #497 release notes and exact SSH/previous Reduce unnecessary boot USB writes during idle operation and UI navigation #497 source files. Commit-pinned Community Apps metadata specifies Unraid 6.12.5.Already migrated #486 installations can update directly. Main installations run the existing job migrations; old job/profile exports remain unsupported and must be recreated after successful migration.
The maintainer's follow-up captures on
2026.09.09.0916(2026-09-09, 09:23-09:28 idle and 09:30-09:40 UI, CEST) recorded zero queue replacements, inventory chmod events, restore probes or USB Python bytecode writes. UI navigation produced only reads and writable lock-handle closes. Idle contained one repository-info scheduler state save, consistent with startup planning; file events alone do not prove its payload changes. Both captures monitored 180 directories with no reported gaps. The maintainer measured approximately 13 MiB for the RAM cache.The detailed report records counts, evidence hashes and limitations. The unchanged diagnostic script attachment and its idle/UI/optional-RAM commands make the procedure reproducible. Documentation commit
98210d69f2294dcafe75d001a94f0c2d76836911changed no deployable source files and matched the previous2026.09.09.0916package. The current candidate adds the independently tracked #496 fix. Service-restart reuse, cache reconstruction after an Unraid reboot and real notification delivery remain separate manual checks.Keep this draft PR unmerged until accepted. Stable promotion requires separate explicit approval and a separate release PR. The German/English #495 publication notice remains in
docs/maintainer/issue-495-publication-notice.md.Closes #486
Closes #495
Closes #496
Closes #497