{"record":{"id":"c32edace5dc5b2bf","repo":"kopia/kopia","slug":"error-creating-manifest-manager","errorCode":null,"errorMessage":"error creating manifest manager","messagePattern":"error creating manifest manager","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"repo/repository.go","lineNumber":313,"sourceCode":"func (r *directRepository) NewWriter(ctx context.Context, opt WriteSessionOptions) (context.Context, RepositoryWriter, error) {\n\treturn r.NewDirectWriter(ctx, opt)\n}\n\n// NewDirectWriter returns new DirectRepositoryWriter session for repository.\nfunc (r *directRepository) NewDirectWriter(ctx context.Context, opt WriteSessionOptions) (context.Context, DirectRepositoryWriter, error) {\n\twriteManagerID := fmt.Sprintf(\"writer-%v:%v\", r.nextWriterID.Add(1), opt.Purpose)\n\n\tcmgr := content.NewWriteManager(ctx, r.sm, content.SessionOptions{\n\t\tSessionUser: r.cliOpts.Username,\n\t\tSessionHost: r.cliOpts.Hostname,\n\t\tOnUpload:    opt.OnUpload,\n\t}, writeManagerID)\n\n\tmmgr, err := manifest.NewManager(ctx, cmgr, manifest.ManagerOptions{\n\t\tTimeNow: r.timeNow,\n\t}, r.metricsRegistry)\n\tif err != nil {\n\t\treturn nil, nil, errors.Wrap(err, \"error creating manifest manager\")\n\t}\n\n\tomgr, err := object.NewObjectManager(ctx, cmgr, r.omgr.Format, r.metricsRegistry)\n\tif err != nil {\n\t\treturn nil, nil, errors.Wrap(err, \"error creating object manager\")\n\t}\n\n\tw := &directRepository{\n\t\timmutableDirectRepositoryParameters: r.immutableDirectRepositoryParameters,\n\t\tblobs:                               r.blobs,\n\t\tcmgr:                                cmgr,\n\t\tomgr:                                omgr,\n\t\tmmgr:                                mmgr,\n\t\tsm:                                  r.sm,\n\t}\n\n\tw.addRef()\n","sourceCodeStart":295,"sourceCodeEnd":331,"githubUrl":"https://github.com/kopia/kopia/blob/82495e54b584c1ef6073c9e1be048f57f8aef078/repo/repository.go#L295-L331","documentation":"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.","triggerScenarios":"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.","commonSituations":"Underlying storage errors while initializing manifest state; repository contents encrypted with a wrong password (decryption setup fails); concurrent compaction contention; repository format issues.","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."],"exampleFix":"// before: opening a write session with wrong password\nw, err := rep.NewWriter(ctx, repo.WriteSessionOptions{})\n// after: validate credentials first\nif err := rep.Refresh(ctx); err != nil { return err } // surfaces auth/format problems early\nw, err := rep.NewWriter(ctx, repo.WriteSessionOptions{})","handlingStrategy":"try-catch","validationCode":"// Go: confirm repository is open and healthy before write sessions\nif _, err := rep.Status(ctx); err != nil {\n    return fmt.Errorf(\"repository not healthy for write session: %w\", err)\n}","typeGuard":null,"tryCatchPattern":"w, err := rep.NewWriter(ctx, repo.WriteSessionOptions{})\nif err != nil && strings.Contains(err.Error(), \"error creating manifest manager\") {\n    return fmt.Errorf(\"manifest init failed (check password/storage): %w\", err)\n}","preventionTips":["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."],"tags":["kopia","manifest-manager","write-session","repository"],"backgroundTag":"module-init-failed","analyzedSha":"82495e54b584c1ef6073c9e1be048f57f8aef078","analyzedAt":"2026-09-07T20:35:21.689Z","contentChangedAt":"2026-09-07T20:35:21.689Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}