{"record":{"id":"ffbbffa1c3ee8e26","repo":"kopia/kopia","slug":"blob-configuration","errorCode":null,"errorMessage":"blob configuration","messagePattern":"blob configuration","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/command_maintenance_set.go","lineNumber":198,"sourceCode":"\t\tchangedSchedule = true\n\n\t\tlog(ctx).Infof(\"Quick maintenance paused until %v\", formatTimestamp(s.NextQuickMaintenanceTime))\n\t}\n\n\tif pauseDuration := c.maintenanceSetPauseFull; pauseDuration != -1 {\n\t\ts.NextFullMaintenanceTime = rep.Time().Add(pauseDuration)\n\t\tchangedSchedule = true\n\n\t\tlog(ctx).Infof(\"Full maintenance paused until %v\", formatTimestamp(s.NextFullMaintenanceTime))\n\t}\n\n\tif !changedParams && !changedSchedule {\n\t\treturn errors.New(\"no changes specified\")\n\t}\n\n\tblobCfg, err := rep.FormatManager().BlobCfgBlob(ctx)\n\tif err != nil {\n\t\treturn errors.Wrap(err, \"blob configuration\")\n\t}\n\n\tif err = maintenance.CheckExtendRetention(ctx, blobCfg, p); err != nil {\n\t\treturn errors.Wrap(err, \"unable to apply maintenance changes\")\n\t}\n\n\tif changedSchedule {\n\t\tif err := maintenance.SetSchedule(ctx, rep, s); err != nil {\n\t\t\treturn errors.Wrap(err, \"unable to set schedule\")\n\t\t}\n\t}\n\n\tif changedParams {\n\t\tif err := maintenance.SetParams(ctx, rep, p); err != nil {\n\t\t\treturn errors.Wrap(err, \"unable to set params\")\n\t\t}\n\t}\n","sourceCodeStart":180,"sourceCodeEnd":216,"githubUrl":"https://github.com/kopia/kopia/blob/82495e54b584c1ef6073c9e1be048f57f8aef078/cli/command_maintenance_set.go#L180-L216","documentation":"The `kopia maintenance set` command wraps errors from `rep.FormatManager().BlobCfgBlob(ctx)` with 'blob configuration'. This call reads the repository's blob-configuration blob (retention/epoch settings). Failure means the format manager could not load the blob configuration, so the command cannot validate whether the requested maintenance changes would extend retention.","triggerScenarios":"Calling `kopia maintenance set` when the format blob containing blob configuration cannot be read or parsed: corrupted format blob, storage read failure, or repository connected with incompatible/insufficient access.","commonSituations":"Repositories migrated between storage backends where the format blob was not carried over, permission problems on the object store preventing reads of format metadata, or version skew where the blob config was written by a newer Kopia release.","solutions":["Confirm the repository opens correctly (`kopia repository status`) to rule out connection/credential issues.","Check that the format blob exists and is readable in the storage backend.","Upgrade or downgrade the CLI to the version that created the repository to avoid format incompatibility.","Inspect the wrapped cause via debug logging to pinpoint whether it is I/O, permissions, or parsing."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"blobCfg, err := rep.FormatManager().BlobCfgBlob(ctx)\nif err != nil {\n    return fmt.Errorf(\"cannot validate retention, blob config unreadable: %w\", err)\n}","typeGuard":null,"tryCatchPattern":"if err := maintenance.CheckExtendRetention(ctx, blobCfg, p); err != nil {\n    return errors.Wrap(err, \"proposed maintenance params rejected by retention policy\")\n}","preventionTips":["Review the repository's retention policy before changing maintenance parameters.","Apply parameter changes incrementally to isolate which flag triggers failures.","Back up the repository format blob before maintenance surgery."],"tags":["kopia","cli","maintenance","configuration"],"backgroundTag":"missing-config-value","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"}