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

View File

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