Skip to content

opendal backend: a retried listing can silently skip a directory, so check reports present packs as missing #612

Open

Description

@aur3l14no

What happened

rustic 0.11.4 (rustic_core 0.13.0, opendal 0.58.1), repository on a Hetzner Storage Box via opendal:webdav. A routine rustic check failed:

[WARN] will retry List (attempt 1) after 1.69s because: Unexpected (temporary) at list => send http request
   error sending request for url (https://<storage-box>/rustic/data/e0/): client error (SendRequest): connection closed before message completed
[ERROR] pack e01b9371 marked to-delete: false is referenced by the index with size 149234627 but not present! To repair: 'rustic repair index'.
... (10 such errors, every pack under data/e0/)
error: `rustic_core` experienced an error related to `the repository`.
check found errors!

A later rustic list packs returned all 2503 packs, including those 10.

Cause

apache/opendal#8376: with RetryLayer, a recursive listing that hits a temporary error on a child directory returns Ok without that directory's entries. The backend in crates/backend/src/opendal.rs lists with recursive: true under RetryLayer, on opendal 0.58.2 on main.

Why it matters

The error message recommends rustic repair index. After a listing that silently skipped a directory, following that advice would remove live packs from the index. prune lists packs the same way; I haven't checked how it reacts to a skipped directory.

Possible mitigations

Activity

  1. added
    S-triageStatus: Waiting for a maintainer to triage this issue/PR
    on Oct 25, 2026
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

    S-triageStatus: Waiting for a maintainer to triage this issue/PR

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions