kopia/kopia · critical

error creating manifest manager

Error message

error creating manifest manager

What it means

NewDirectWriter (used by repo.NewWriter) wraps any error from manifest.NewManager as 'error creating manifest manager'. The writer session cannot be created because the manifest layer (which tracks manifest blobs, compaction, etc.) failed to initialize on top of the content manager.

Solutions

  1. Read the wrapped cause to identify whether it's storage, decryption, or setup related.
  2. Confirm the repository password is correct (manifest contents must decrypt).
  3. Verify storage backend availability and retry the write session.
  4. Check for concurrent writers and repository lock contention; retry after the other session finishes.

Example fix

// before: opening a write session with wrong password
w, err := rep.NewWriter(ctx, repo.WriteSessionOptions{})
// after: validate credentials first
if err := rep.Refresh(ctx); err != nil { return err } // surfaces auth/format problems early
w, err := rep.NewWriter(ctx, repo.WriteSessionOptions{})
Defensive patterns

Strategy: try-catch

Validate before calling

// Go: confirm repository is open and healthy before write sessions
if _, err := rep.Status(ctx); err != nil {
    return fmt.Errorf("repository not healthy for write session: %w", err)
}

Try / catch

w, err := rep.NewWriter(ctx, repo.WriteSessionOptions{})
if err != nil && strings.Contains(err.Error(), "error creating manifest manager") {
    return fmt.Errorf("manifest init failed (check password/storage): %w", err)
}

Prevention

When it happens

Trigger: Calling repo.OpenAPI/Repository.WriteSession/NewWriter on a direct repository where manifest.NewManager fails — e.g. content manager cannot read the manifest-bearing contents, time source invalid, or metrics registry problems.

Common situations: Underlying storage errors while initializing manifest state; repository contents encrypted with a wrong password (decryption setup fails); concurrent compaction contention; repository format issues.

Related errors


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

Appendix: source

Thrown at repo/repository.go:313

func (r *directRepository) NewWriter(ctx context.Context, opt WriteSessionOptions) (context.Context, RepositoryWriter, error) {
	return r.NewDirectWriter(ctx, opt)
}

// NewDirectWriter returns new DirectRepositoryWriter session for repository.
func (r *directRepository) NewDirectWriter(ctx context.Context, opt WriteSessionOptions) (context.Context, DirectRepositoryWriter, error) {
	writeManagerID := fmt.Sprintf("writer-%v:%v", r.nextWriterID.Add(1), opt.Purpose)

	cmgr := content.NewWriteManager(ctx, r.sm, content.SessionOptions{
		SessionUser: r.cliOpts.Username,
		SessionHost: r.cliOpts.Hostname,
		OnUpload:    opt.OnUpload,
	}, writeManagerID)

	mmgr, err := manifest.NewManager(ctx, cmgr, manifest.ManagerOptions{
		TimeNow: r.timeNow,
	}, r.metricsRegistry)
	if err != nil {
		return nil, nil, errors.Wrap(err, "error creating manifest manager")
	}

	omgr, err := object.NewObjectManager(ctx, cmgr, r.omgr.Format, r.metricsRegistry)
	if err != nil {
		return nil, nil, errors.Wrap(err, "error creating object manager")
	}

	w := &directRepository{
		immutableDirectRepositoryParameters: r.immutableDirectRepositoryParameters,
		blobs:                               r.blobs,
		cmgr:                                cmgr,
		omgr:                                omgr,
		mmgr:                                mmgr,
		sm:                                  r.sm,
	}

	w.addRef()

View on GitHub (pinned to 82495e54b5)