{"record":{"id":"f17aa001e30a3490","repo":"kopia/kopia","slug":"unable-to-get-current-maintenance-parameters","errorCode":null,"errorMessage":"unable to get current maintenance parameters","messagePattern":"unable to get current maintenance parameters","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/command_repository_set_parameters.go","lineNumber":227,"sourceCode":"\tsetDurationParameter(ctx, c.epochMinDuration, \"minimum epoch duration\", &mp.EpochParameters.MinEpochDuration, &anyChange)\n\tsetDurationParameter(ctx, c.epochRefreshFrequency, \"epoch refresh frequency\", &mp.EpochParameters.EpochRefreshFrequency, &anyChange)\n\tsetDurationParameter(ctx, c.epochCleanupSafetyMargin, \"epoch cleanup safety margin\", &mp.EpochParameters.CleanupSafetyMargin, &anyChange)\n\tsetIntParameter(ctx, c.epochAdvanceOnCount, \"epoch advance on count\", &mp.EpochParameters.EpochAdvanceOnCountThreshold, &anyChange)\n\tsetSizeMBParameter(ctx, c.epochAdvanceOnSizeMB, \"epoch advance on total size\", &mp.EpochParameters.EpochAdvanceOnTotalSizeBytesThreshold, &anyChange)\n\tsetIntParameter(ctx, c.epochDeleteParallelism, \"epoch delete parallelism\", &mp.EpochParameters.DeleteParallelism, &anyChange)\n\tsetIntParameter(ctx, c.epochCheckpointFrequency, \"epoch range-compaction period\", &mp.EpochParameters.FullCheckpointFrequency, &anyChange)\n\n\trequiredFeatures = c.addRemoveUpdateRequiredFeatures(requiredFeatures, &anyChange)\n\n\tif !anyChange {\n\t\tlog(ctx).Info(\"no changes\")\n\t\treturn nil\n\t}\n\n\tif blobcfg.IsRetentionEnabled() {\n\t\tp, err := maintenance.GetParams(ctx, rep)\n\t\tif err != nil {\n\t\t\treturn errors.Wrap(err, \"unable to get current maintenance parameters\")\n\t\t}\n\n\t\tif err := maintenance.CheckExtendRetention(ctx, blobcfg, p); err != nil {\n\t\t\treturn errors.Wrap(err, \"unable to apply maintenance changes\")\n\t\t}\n\t}\n\n\tif err := updateRepositoryParameters(ctx, upgradeToEpochManager, mp, rep, blobcfg, requiredFeatures); err != nil {\n\t\treturn errors.Wrap(err, \"error updating repository parameters\")\n\t}\n\n\tlog(ctx).Info(\"NOTE: Repository parameters updated, you must disconnect and re-connect all other Kopia clients.\")\n\n\treturn nil\n}\n\nfunc (c *commandRepositorySetParameters) addRemoveUpdateRequiredFeatures(orig []feature.Required, anyChange *bool) []feature.Required {\n\tvar result []feature.Required","sourceCodeStart":209,"sourceCodeEnd":245,"githubUrl":"https://github.com/kopia/kopia/blob/82495e54b584c1ef6073c9e1be048f57f8aef078/cli/command_repository_set_parameters.go#L209-L245","documentation":"Wraps a failure of maintenance.GetParams(ctx, rep) while applying retention changes during `repository set-parameters`. When the new blobcfg enables retention, Kopia fetches current maintenance parameters to validate that retention can be extended safely; failure to read those parameters produces this error.","triggerScenarios":"`kopia repository set-parameters --retention-*` (or any change enabling retention) where maintenance.GetParams cannot read the maintenance schedule/parameters from the repository — storage failure, missing maintenance config blob, or unparseable parameters.","commonSituations":"Retention being enabled on a repository that never had maintenance configured/quick-maintenance run; object storage temporarily unavailable; maintenance config written by an incompatible Kopia version.","solutions":["Run `kopia maintenance info` to confirm maintenance parameters exist and are readable, then retry set-parameters","Initialize/repair maintenance config: kopia maintenance set --interval ... / run kopia maintenance run","Fix storage connectivity or credential issues and retry","Verify version compatibility between CLI and repository format"],"exampleFix":"// before\np, err := maintenance.GetParams(ctx, rep)\nif err != nil { return errors.Wrap(err, \"unable to get current maintenance parameters\") }\n// after\np, err := maintenance.GetParams(ctx, rep)\nif err != nil {\n    log(ctx).Errorf(\"maintenance.GetParams: %v\", err)\n    return errors.Wrap(err, \"unable to get current maintenance parameters\")\n}","handlingStrategy":"validation","validationCode":"// ensure maintenance is configured before enabling retention\np, err := maintenance.GetParams(ctx, rep)\nif err != nil {\n    return fmt.Errorf(\"maintenance must be configured before enabling retention: %w\", err)\n}","typeGuard":null,"tryCatchPattern":"p, err := maintenance.GetParams(ctx, rep)\nif err != nil {\n    return errors.Wrap(err, \"unable to get current maintenance parameters\")\n}","preventionTips":["Run `kopia maintenance info` first to confirm maintenance params exist","Initialize maintenance settings on new repositories before enabling retention","Check storage connectivity before retention changes"],"tags":["cli","repository","maintenance","retention"],"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"}