Skip to content

Commit 82dfd52

Browse files
sfc-gh-jmckulkajmckulk
authored andcommitted
Update pgWAL autogrow events to warnings
WAL volumes growing could indicate an issue with backups that needs to be addressed. This event should be presented to users as a warning.
1 parent f9d9c42 commit 82dfd52

File tree

2 files changed

+24
-9
lines changed

2 files changed

+24
-9
lines changed

internal/controller/postgrescluster/autogrow.go

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,11 @@ func (r *Reconciler) storeDesiredRequest(
6363
}
6464

6565
if limitSet && current.Value() > previous.Value() {
66-
r.Recorder.Eventf(cluster, corev1.EventTypeNormal, "VolumeAutoGrow",
66+
eventType := corev1.EventTypeNormal
67+
if volumeType == "pgWAL" {
68+
eventType = corev1.EventTypeWarning
69+
}
70+
r.Recorder.Eventf(cluster, eventType, "VolumeAutoGrow",
6771
"%s volume expansion to %v requested for %s/%s.",
6872
volumeType, current.String(), cluster.Name, host)
6973
}
@@ -165,8 +169,11 @@ func (r *Reconciler) setVolumeSize(ctx context.Context, cluster *v1beta1.Postgre
165169
// If the user manually requests a lower limit that is smaller than the current
166170
// or requested volume size, it will be ignored in favor of the limit value.
167171
if volumeRequestSize.Value() >= volumeLimitFromSpec.Value() {
168-
169-
r.Recorder.Eventf(cluster, corev1.EventTypeNormal, "VolumeLimitReached",
172+
eventType := corev1.EventTypeNormal
173+
if volumeType == "pgWAL" {
174+
eventType = corev1.EventTypeWarning
175+
}
176+
r.Recorder.Eventf(cluster, eventType, "VolumeLimitReached",
170177
"%s volume(s) for %s/%s are at size limit (%v).", volumeType,
171178
cluster.Name, host, volumeLimitFromSpec)
172179

internal/controller/postgrescluster/autogrow_test.go

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ func TestStoreDesiredRequest(t *testing.T) {
101101
expectedLog string
102102
expectedNumEvents int
103103
expectedEvent string
104+
expectedEventType string
104105
}{{
105106
tcName: "PGData-BadRequestNoBackup",
106107
Voltype: "pgData", host: "red",
@@ -122,13 +123,13 @@ func TestStoreDesiredRequest(t *testing.T) {
122123
tcName: "PGData-BadBackupRequest",
123124
Voltype: "pgData", host: "red",
124125
desiredRequest: "2Gi", desiredRequestBackup: "bar", expectedValue: "2Gi",
125-
expectedNumEvents: 1, expectedEvent: "pgData volume expansion to 2Gi requested for rhino/red.",
126+
expectedNumEvents: 1, expectedEvent: "pgData volume expansion to 2Gi requested for rhino/red.", expectedEventType: corev1.EventTypeNormal,
126127
expectedNumLogs: 1, expectedLog: "Unable to parse pgData volume request from status backup (bar) for rhino/red",
127128
}, {
128129
tcName: "PGData-ValueUpdateWithEvent",
129130
Voltype: "pgData", host: "red",
130131
desiredRequest: "1Gi", desiredRequestBackup: "", expectedValue: "1Gi",
131-
expectedNumEvents: 1, expectedEvent: "pgData volume expansion to 1Gi requested for rhino/red.",
132+
expectedNumEvents: 1, expectedEvent: "pgData volume expansion to 1Gi requested for rhino/red.", expectedEventType: corev1.EventTypeNormal,
132133
expectedNumLogs: 0,
133134
}, {
134135
tcName: "PGWAL-BadRequestNoBackup",
@@ -156,13 +157,13 @@ func TestStoreDesiredRequest(t *testing.T) {
156157
tcName: "PGWAL-BadBackupRequest",
157158
Voltype: "pgWAL", host: "red",
158159
desiredRequest: "2Gi", desiredRequestBackup: "bar", expectedValue: "2Gi",
159-
expectedNumEvents: 1, expectedEvent: "pgWAL volume expansion to 2Gi requested for rhino/red.",
160+
expectedNumEvents: 1, expectedEvent: "pgWAL volume expansion to 2Gi requested for rhino/red.", expectedEventType: corev1.EventTypeWarning,
160161
expectedNumLogs: 1, expectedLog: "Unable to parse pgWAL volume request from status backup (bar) for rhino/red",
161162
}, {
162163
tcName: "PGWAL-ValueUpdateWithEvent",
163164
Voltype: "pgWAL", host: "red",
164165
desiredRequest: "1Gi", desiredRequestBackup: "", expectedValue: "1Gi",
165-
expectedNumEvents: 1, expectedEvent: "pgWAL volume expansion to 1Gi requested for rhino/red.",
166+
expectedNumEvents: 1, expectedEvent: "pgWAL volume expansion to 1Gi requested for rhino/red.", expectedEventType: corev1.EventTypeWarning,
166167
expectedNumLogs: 0,
167168
}, {
168169
tcName: "Repo-BadRequestNoBackup",
@@ -190,13 +191,13 @@ func TestStoreDesiredRequest(t *testing.T) {
190191
tcName: "Repo-BadBackupRequest",
191192
Voltype: "repo1", host: "repo-host",
192193
desiredRequest: "2Gi", desiredRequestBackup: "bar", expectedValue: "2Gi",
193-
expectedNumEvents: 1, expectedEvent: "repo1 volume expansion to 2Gi requested for rhino/repo-host.",
194+
expectedNumEvents: 1, expectedEvent: "repo1 volume expansion to 2Gi requested for rhino/repo-host.", expectedEventType: corev1.EventTypeNormal,
194195
expectedNumLogs: 1, expectedLog: "Unable to parse repo1 volume request from status backup (bar) for rhino/repo-host",
195196
}, {
196197
tcName: "Repo-ValueUpdateWithEvent",
197198
Voltype: "repo1", host: "repo-host",
198199
desiredRequest: "1Gi", desiredRequestBackup: "", expectedValue: "1Gi",
199-
expectedNumEvents: 1, expectedEvent: "repo1 volume expansion to 1Gi requested for rhino/repo-host.",
200+
expectedNumEvents: 1, expectedEvent: "repo1 volume expansion to 1Gi requested for rhino/repo-host.", expectedEventType: corev1.EventTypeNormal,
200201
expectedNumLogs: 0,
201202
}}
202203

@@ -220,6 +221,7 @@ func TestStoreDesiredRequest(t *testing.T) {
220221
assert.Equal(t, recorder.Events[0].Regarding.Name, cluster.Name)
221222
assert.Equal(t, recorder.Events[0].Reason, "VolumeAutoGrow")
222223
assert.Equal(t, recorder.Events[0].Note, tc.expectedEvent)
224+
assert.Equal(t, recorder.Events[0].Type, tc.expectedEventType)
223225
}
224226
assert.Equal(t, len(*logs), tc.expectedNumLogs)
225227
if tc.expectedNumLogs == 1 {
@@ -430,6 +432,7 @@ resources:
430432
assert.Equal(t, len(recorder.Events), 1)
431433
assert.Equal(t, recorder.Events[0].Regarding.Name, cluster.Name)
432434
assert.Equal(t, recorder.Events[0].Reason, "VolumeRequestOverLimit")
435+
assert.Equal(t, recorder.Events[0].Type, corev1.EventTypeWarning)
433436
assert.Equal(t, recorder.Events[0].Note, "pgData volume request (4Gi) for elephant/some-instance is greater than set limit (3Gi). Limit value will be used.")
434437
})
435438

@@ -599,6 +602,7 @@ resources:
599602
assert.Equal(t, len(recorder.Events), 1)
600603
assert.Equal(t, recorder.Events[0].Regarding.Name, cluster.Name)
601604
assert.Equal(t, recorder.Events[0].Reason, "VolumeLimitReached")
605+
assert.Equal(t, recorder.Events[0].Type, corev1.EventTypeNormal)
602606
assert.Equal(t, recorder.Events[0].Note, "pgData volume(s) for elephant/some-instance are at size limit (2Gi).")
603607
})
604608

@@ -629,11 +633,13 @@ resources:
629633
if event.Reason == "VolumeLimitReached" {
630634
found1 = true
631635
assert.Equal(t, event.Regarding.Name, cluster.Name)
636+
assert.Equal(t, event.Type, corev1.EventTypeNormal)
632637
assert.Equal(t, event.Note, "pgData volume(s) for elephant/some-instance are at size limit (5Gi).")
633638
}
634639
if event.Reason == "DesiredVolumeAboveLimit" {
635640
found2 = true
636641
assert.Equal(t, event.Regarding.Name, cluster.Name)
642+
assert.Equal(t, event.Type, corev1.EventTypeWarning)
637643
assert.Equal(t, event.Note,
638644
"The desired size (10Gi) for the elephant/some-instance pgData volume(s) is greater than the size limit (5Gi).")
639645
}
@@ -675,6 +681,7 @@ resources:
675681
assert.Equal(t, len(recorder.Events), 1)
676682
assert.Equal(t, recorder.Events[0].Regarding.Name, cluster.Name)
677683
assert.Equal(t, recorder.Events[0].Reason, "VolumeLimitReached")
684+
assert.Equal(t, recorder.Events[0].Type, corev1.EventTypeNormal)
678685
assert.Equal(t, recorder.Events[0].Note, "repo1 volume(s) for elephant/repo-host are at size limit (2Gi).")
679686
})
680687

@@ -707,6 +714,7 @@ resources:
707714
assert.Equal(t, len(recorder.Events), 1)
708715
assert.Equal(t, recorder.Events[0].Regarding.Name, cluster.Name)
709716
assert.Equal(t, recorder.Events[0].Reason, "VolumeLimitReached")
717+
assert.Equal(t, recorder.Events[0].Type, corev1.EventTypeWarning)
710718
assert.Equal(t, recorder.Events[0].Note, "pgWAL volume(s) for elephant/another-instance are at size limit (3Gi).")
711719
})
712720

0 commit comments

Comments
 (0)