diff --git a/internals/overlord/checkstate/manager.go b/internals/overlord/checkstate/manager.go index efdcf71ac..45fcf54d3 100644 --- a/internals/overlord/checkstate/manager.go +++ b/internals/overlord/checkstate/manager.go @@ -122,7 +122,14 @@ func (m *CheckManager) PlanChanged(newPlan *plan.Plan) { } else { configKey = recoverConfigKey{change.ID()} } - oldConfig := m.state.Cached(configKey).(*plan.Check) // panic if key not present (always should be) + v := m.state.Cached(configKey) + if v == nil { + // Pebble restarted, and this change is a carryover. + change.Abort() + shouldEnsure = true + continue + } + oldConfig := v.(*plan.Check) existingChecks[oldConfig.Name] = true newConfig, inNew := newPlan.Checks[details.Name]