Skip to content

Commit ac81a03

Browse files
Merge pull request #3093 from wgahnagl/OCPBUGS-57399
OCPBUGS-57399: Prevent upgrade log spam
2 parents d167f8a + 6887168 commit ac81a03

File tree

4 files changed

+33
-4
lines changed

4 files changed

+33
-4
lines changed

controllers/configmap_controller.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package controllers
1919
import (
2020
"context"
2121
"encoding/json"
22+
"errors"
2223
"fmt"
2324
"net"
2425
"os"
@@ -183,7 +184,13 @@ func (r *ConfigMapReconciler) Reconcile(ctx context.Context,
183184
case servicescm.Name:
184185
return ctrl.Result{}, r.reconcileServices(ctx, configMap)
185186
case wiparser.InstanceConfigMap:
186-
return ctrl.Result{}, r.reconcileNodes(ctx, configMap)
187+
err := r.reconcileNodes(ctx, configMap)
188+
var upgradeErr *UpgradeLimitExceededError
189+
if !errors.As(err, &upgradeErr) {
190+
return ctrl.Result{}, err
191+
}
192+
r.log.Info(upgradeErr.Error())
193+
return ctrl.Result{Requeue: true}, nil
187194
case certificates.ProxyCertsConfigMap:
188195
return ctrl.Result{}, r.reconcileProxyCerts(ctx, configMap)
189196
default:

controllers/controllers.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,10 @@ func markNodeAsUpgrading(ctx context.Context, c client.Client, currentNode *core
281281
}
282282
}
283283
if len(upgradingNodes.Items) >= MaxParallelUpgrades {
284-
return fmt.Errorf("cannot mark node %s as upgrading, maximum number of parallel upgrading nodes reached (%d)",
285-
currentNode.Name, MaxParallelUpgrades)
284+
return &UpgradeLimitExceededError{
285+
NodeName: currentNode.Name,
286+
Count: len(upgradingNodes.Items),
287+
}
286288
}
287289
return metadata.ApplyUpgradingLabel(ctx, c, currentNode)
288290
}

controllers/errors.go

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package controllers
2+
3+
import (
4+
"fmt"
5+
)
6+
7+
type UpgradeLimitExceededError struct {
8+
NodeName string
9+
Count int
10+
Max int
11+
}
12+
13+
func (e *UpgradeLimitExceededError) Error() string {
14+
return fmt.Sprintf("Cannot mark node %s as upgrading. Current number of upgrading nodes is (%d). Max number of upgrading nodes is (%d)", e.NodeName, e.Count, e.Max)
15+
}

controllers/windowsmachine_controller.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,12 @@ func (r *WindowsMachineReconciler) Reconcile(ctx context.Context,
211211

212212
// Prevent WMCO upgrades while Machine nodes are being processed
213213
if err := condition.MarkAsBusy(ctx, r.client, r.watchNamespace, r.recorder, WindowsMachineController); err != nil {
214-
return ctrl.Result{}, err
214+
var upgradeErr *UpgradeLimitExceededError
215+
if !errors.As(err, &upgradeErr) {
216+
return ctrl.Result{}, err
217+
}
218+
r.log.Info(upgradeErr.Error())
219+
return ctrl.Result{Requeue: true}, nil
215220
}
216221
defer func() {
217222
reconcileErr = markAsFreeOnSuccess(ctx, r.client, r.watchNamespace, r.recorder, WindowsMachineController,

0 commit comments

Comments
 (0)