Skip to content

Backblaze B2 transient REST 500 leaves stale restic locks and breaks subsequent backups #8164

Description

@eroeinformatico

Steps to reproduce

  • Configure scheduled NS8 application backups with a Backblaze B2 destination.
  • Configure a retention policy (forget --prune --keep-last=7).
  • Run the scheduled backup.
  • The issue is intermittent and cannot currently be reproduced on demand.

During a scheduled run, the following sanitized sequence was recorded:

2026-07-16T00:05:16+02:00 Remove(<lock/c4fc23a454>) failed:
<lock/c4fc23a454> does not exist

2026-07-16T00:05:22+02:00 Load(<lock/c4fc23a454>, 0, 0)
returned error: unexpected HTTP response (500): 500 Internal Server Error

2026-07-16T00:05:25+02:00 retention policy failed:
restic forget --prune --keep-last=7 returned exit status 11

2026-07-16T00:05:30+02:00 Load(<key/afd159cbff>, 0, 0)
returned error: unexpected HTTP response (500): 500 Internal Server Error

The error affected different application repositories in the same time window, so it was not specific to Traefik application data.

Expected behavior

A transient backend error should not leave the repository permanently unusable. A later scheduled run should either safely remove a stale lock when no Restic process is active, or report a clear recovery action.

Repository access failures should not cause the agent to attempt restic init on an already initialized repository.

Actual behavior

The lock created during the failed operation remained in the B2 repository. Retention failed on every subsequent run with exit code 11:

repository is already locked by PID 1 on ns1 by root
lock was created at 2026-07-15 22:05:08

The same lock was still reported about 216 hours later and again about 240 hours later. Eventually scheduled backups failed until a manual restic unlock was performed.

A later run also tried to initialize the repository after access failed because of the lock, producing the misleading secondary error:

Fatal: create repository failed: config file already exists

Before unlocking, no Restic or backup process was running. After the manual unlock:

  • restic check succeeded on the affected repositories;
  • snapshots were readable;
  • a complete scheduled backup finished successfully.

Components

  • NS8 single-node installation
  • Backup destination: Backblaze B2
  • Image at first occurrence: ghcr.io/nethserver/restic:3.20.0
  • Current image: ghcr.io/nethserver/restic:3.21.1
  • Affected repositories included Traefik and Loki
  • The simultaneous WebTop key-load failure indicates a shared destination/gateway failure rather than an application-specific issue

No credentials, bucket names, customer identifiers or repository UUIDs are included in this report.

See also


Reported from a customer installation; all logs have been sanitized.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions