kopia/kopia · error

error looking for maintenance manifest

Error message

error looking for maintenance manifest

What it means

manifestIDs lists all maintenance manifests by calling rep.FindManifests with the maintenance label set. This error wraps failure of that search, so callers cannot determine whether maintenance parameters exist. It is thrown whenever the manifest lookup query itself fails (as opposed to returning an empty result).

Solutions

  1. Check network connectivity and credentials for the storage backend and retry
  2. Look for provider-side throttling/rate-limit errors in errors.Cause output and apply backoff
  3. Run repository consistency checks if listing persists in failing
  4. Ensure the repository connection is healthy (kopia repository status) before calling HasParams/GetParams
Defensive patterns

Strategy: retry

Validate before calling

if err := rep.Refresh(ctx); err != nil {
	return fmt.Errorf("storage not reachable: %w", err)
}

Try / catch

has, err := maintenance.HasParams(ctx, rep)
if err != nil {
	// backoff and retry listing; listing errors are usually transient
	time.Sleep(time.Second)
	has, err = maintenance.HasParams(ctx, rep)
}

Prevention

When it happens

Trigger: Calling manifestIDs via HasParams or GetParams when rep.FindManifests fails: storage backend unreachable, listing operation rejected by the provider, or authentication failure while enumerating manifests.

Common situations: Network outages against object storage during manifest listing; expired cloud session; storage provider errors on list operations (rate limits, throttling); repository metadata corruption.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


AI-assisted analysis of kopia/kopia@82495e54b5 (2026-09-07). Data as JSON: /api/errors/37f58d0010c65509. Report an issue: GitHub.

Appendix: source

Thrown at repo/maintenance/maintenance_params.go:122

		return nil, errors.Wrap(err, "error loading manifest")
	}

	return p, nil
}

// SetParams sets the maintenance parameters.
func SetParams(ctx context.Context, rep repo.RepositoryWriter, par *Params) error {
	if _, err := rep.ReplaceManifests(ctx, manifestLabels, par); err != nil {
		return errors.Wrap(err, "put manifest")
	}

	return nil
}

func manifestIDs(ctx context.Context, rep repo.Repository) ([]*manifest.EntryMetadata, error) {
	md, err := rep.FindManifests(ctx, manifestLabels)
	if err != nil {
		return nil, errors.Wrap(err, "error looking for maintenance manifest")
	}

	return md, nil
}

View on GitHub (pinned to 82495e54b5)