{"record":{"id":"02d19ddcb085036a","repo":"kopia/kopia","slug":"unable-to-open-manifests","errorCode":null,"errorMessage":"unable to open manifests","messagePattern":"unable to open manifests","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"critical","filePath":"repo/open.go","lineNumber":362,"sourceCode":"\n\tscm, ferr := content.NewSharedManager(ctx, st, fmgr, cacheOpts, cmOpts, logManager, mr)\n\tif ferr != nil {\n\t\treturn nil, errors.Wrap(ferr, \"unable to create shared content manager\")\n\t}\n\n\tcm := content.NewWriteManager(ctx, scm, content.SessionOptions{\n\t\tSessionUser: cliOpts.Username,\n\t\tSessionHost: cliOpts.Hostname,\n\t}, \"\")\n\n\tom, ferr := object.NewObjectManager(ctx, cm, fmgr.ObjectFormat(), mr)\n\tif ferr != nil {\n\t\treturn nil, errors.Wrap(ferr, \"unable to open object manager\")\n\t}\n\n\tmanifests, ferr := manifest.NewManager(ctx, cm, manifest.ManagerOptions{TimeNow: cmOpts.TimeNow}, mr)\n\tif ferr != nil {\n\t\treturn nil, errors.Wrap(ferr, \"unable to open manifests\")\n\t}\n\n\tcloser := newRefCountedCloser(\n\t\tscm.CloseShared,\n\t\tdw.Wait,\n\t\tmr.Close,\n\t\tst.Close,\n\t)\n\n\tdr := &directRepository{\n\t\tcmgr:  cm,\n\t\tomgr:  om,\n\t\tblobs: st,\n\t\tmmgr:  manifests,\n\t\tsm:    scm,\n\t\timmutableDirectRepositoryParameters: immutableDirectRepositoryParameters{\n\t\t\tcachingOptions:   *cacheOpts,\n\t\t\tfmgr:             fmgr,","sourceCodeStart":344,"sourceCodeEnd":380,"githubUrl":"https://github.com/kopia/kopia/blob/82495e54b584c1ef6073c9e1be048f57f8aef078/repo/open.go#L344-L380","documentation":"This error wraps any failure that occurs while constructing the manifest manager (manifest.NewManager) during repository open (openWithConfig). The manifest manager is the layer that reads/writes manifest blobs (metadata about snapshots, policies, etc.), so if it cannot be initialized, the repository cannot be opened at all and openDirect fails. The underlying cause is preserved in the wrapped error chain.","triggerScenarios":"Calling repo.Open/openDirect on a repository whose underlying blob storage is unreachable, corrupted, or returns errors while the manifest manager initializes (e.g. manifest blob reads/encryption setup fail). Any error returned by manifest.NewManager is wrapped with this message.","commonSituations":"Network interruption to blob storage backend (S3, B2, SFTP) at connect time; corrupted repository blobs; wrong repository password preventing manifest decryption setup; storage credentials revoked; repository partially upgraded by a newer Kopia version.","solutions":["Inspect the wrapped cause (errors.Wrap chain) printed with the error to find the real failure (storage access vs decryption).","Verify connectivity and credentials for the configured blob storage backend (kopia repository status, test access with the provider CLI).","Confirm you are using the correct repository password/config file (kopia repository connect again if needed).","Check that the Kopia client version is compatible with the repository format version (repository upgraded by a newer client).","Restore from backup or run repository repair tools if repository blobs are corrupted."],"exampleFix":"// before: opening with unreachable/unauthenticated storage\nrep, err := openWithConfig(ctx, st, \"repo-password\")\n// after: pre-check storage availability and retry transient failures\nif err := st.ConnectionInfo(); err != nil { return nil, err }\nrep, err := openWithConfig(ctx, backoffRetry(st), \"repo-password\")","handlingStrategy":"try-catch","validationCode":"// Go: verify storage connectivity before opening\nif err := blobStorage.ConnectionInfo().TestAccess(ctx); err != nil {\n    return fmt.Errorf(\"storage unreachable: %w\", err)\n}","typeGuard":"func isOpenError(err error) bool {\n    return err != nil && strings.Contains(err.Error(), \"unable to open manifests\")\n}","tryCatchPattern":"rep, err := repo.Open(ctx, cfg, pass, opts)\nif err != nil {\n    if strings.Contains(err.Error(), \"unable to open manifests\") {\n        // check storage connectivity / credentials, then retry with backoff\n    }\n    return err\n}","preventionTips":["Test blob-storage access and credentials before calling repo.Open.","Retry open with exponential backoff for transient network failures.","Pin Kopia client versions across all machines touching the repository.","Monitor storage provider health/quotas for the backend in use."],"tags":["kopia","repository-open","manifest-manager","storage"],"backgroundTag":"file-open-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"}