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
- Read the wrapped cause to identify whether it's storage, decryption, or setup related.
- Confirm the repository password is correct (manifest contents must decrypt).
- Verify storage backend availability and retry the write session.
- 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
- Verify the repository password before initiating write sessions.
- Ensure storage backend availability and retry transient failures.
- Limit concurrent writers to reduce manifest compaction contention.
- Keep clients on compatible Kopia versions.
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
- error creating object manager
- can't retrieve sources
- epoch manager
- error computing repository token
- error connecting
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)