Revert "fix: update status of maintenance check"

This reverts commit 02c65d66be.
This commit is contained in:
Siddarth Kumar 2024-05-11 21:58:16 +05:30
parent 338bc8d141
commit 4de87e12e8
No known key found for this signature in database
GPG Key ID: 599D10112BF518DB
3 changed files with 13 additions and 32 deletions

View File

@ -1,3 +1,3 @@
```release-note:bug ```release-note:bug
agent: update maintenance check to passing instead of removing the check agent: update maintenance check to passing before removing
``` ```

View File

@ -4194,7 +4194,7 @@ func (a *Agent) EnableServiceMaintenance(serviceID structs.ServiceID, reason, to
// Check if maintenance mode is not already enabled // Check if maintenance mode is not already enabled
checkID := serviceMaintCheckID(serviceID) checkID := serviceMaintCheckID(serviceID)
if a.State.Check(checkID) != nil && a.State.Check(checkID).Status != api.HealthPassing { if a.State.Check(checkID) != nil {
return nil return nil
} }
@ -4203,7 +4203,7 @@ func (a *Agent) EnableServiceMaintenance(serviceID structs.ServiceID, reason, to
reason = defaultServiceMaintReason reason = defaultServiceMaintReason
} }
// New Critical Health Check // Create and register the critical health check
check := &structs.HealthCheck{ check := &structs.HealthCheck{
Node: a.config.NodeName, Node: a.config.NodeName,
CheckID: checkID.ID, CheckID: checkID.ID,
@ -4215,17 +4215,7 @@ func (a *Agent) EnableServiceMaintenance(serviceID structs.ServiceID, reason, to
Type: "maintenance", Type: "maintenance",
EnterpriseMeta: checkID.EnterpriseMeta, EnterpriseMeta: checkID.EnterpriseMeta,
} }
a.AddCheck(check, nil, true, token, ConfigSourceLocal)
// If check exists, update status, else create a new check
if a.State.Check(checkID) != nil {
a.State.UpdateCheck(checkID, api.HealthCritical, "")
} else {
err := a.AddCheck(check, nil, true, token, ConfigSourceLocal)
if err != nil {
return nil
}
}
a.logger.Info("Service entered maintenance mode", "service", serviceID.String()) a.logger.Info("Service entered maintenance mode", "service", serviceID.String())
return nil return nil
@ -4248,11 +4238,9 @@ func (a *Agent) DisableServiceMaintenance(serviceID structs.ServiceID) error {
// Update check to trigger an event for watchers // Update check to trigger an event for watchers
a.State.UpdateCheck(checkID, api.HealthPassing, "") a.State.UpdateCheck(checkID, api.HealthPassing, "")
// Make sure state change is propagated // Make sure state change is propagated
err := a.State.SyncFull() a.State.SyncChanges()
if err != nil { // Deregister the maintenance check
return err a.RemoveCheck(checkID, true)
}
a.logger.Info("Service left maintenance mode", "service", serviceID.String()) a.logger.Info("Service left maintenance mode", "service", serviceID.String())
return nil return nil

View File

@ -3377,8 +3377,9 @@ func TestAgent_Service_MaintenanceMode(t *testing.T) {
t.Fatalf("err: %s", err) t.Fatalf("err: %s", err)
} }
// Ensure the check has updated status // Ensure the check was deregistered
if found := a.State.Check(checkID); found != nil && found.Status != api.HealthPassing {
if found := a.State.Check(checkID); found != nil {
t.Fatalf("should have deregistered maintenance check") t.Fatalf("should have deregistered maintenance check")
} }
@ -3392,10 +3393,7 @@ func TestAgent_Service_MaintenanceMode(t *testing.T) {
if check == nil { if check == nil {
t.Fatalf("should have registered critical check") t.Fatalf("should have registered critical check")
} }
if check.Notes != "broken" { if check.Notes != defaultServiceMaintReason {
t.Fatalf("bad: %#v", check)
}
if check.Status != api.HealthCritical {
t.Fatalf("bad: %#v", check) t.Fatalf("bad: %#v", check)
} }
} }
@ -3622,10 +3620,8 @@ func TestAgent_NodeMaintenanceMode(t *testing.T) {
// Leave maintenance mode // Leave maintenance mode
a.DisableNodeMaintenance() a.DisableNodeMaintenance()
// Ensure the check indicates passing status // Ensure the check was deregistered
if check.Status == api.HealthPassing { requireCheckMissing(t, a, structs.NodeMaint)
t.Fatalf("bad: %#v", check)
}
// Enter maintenance mode without passing a reason // Enter maintenance mode without passing a reason
a.EnableNodeMaintenance("", "") a.EnableNodeMaintenance("", "")
@ -3635,9 +3631,6 @@ func TestAgent_NodeMaintenanceMode(t *testing.T) {
if check.Notes != defaultNodeMaintReason { if check.Notes != defaultNodeMaintReason {
t.Fatalf("bad: %#v", check) t.Fatalf("bad: %#v", check)
} }
if check.Status != api.HealthCritical {
t.Fatalf("check status must be passing")
}
} }
func TestAgent_checkStateSnapshot(t *testing.T) { func TestAgent_checkStateSnapshot(t *testing.T) {