Skip to content

Commit 63a5f1b

Browse files
committed
add patroni leader check to update() and catch error for addMonitoringPermissions
1 parent 5c809a3 commit 63a5f1b

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

pkg/cluster/cluster.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1169,6 +1169,13 @@ func (c *Cluster) Update(oldSpec, newSpec *cpov1.Postgresql) error {
11691169

11701170
}()
11711171

1172+
// Ensure the cluster has a leader
1173+
if err := c.waitForLeader(60 * time.Second); err != nil {
1174+
c.logger.Infof("Postgres not yet ready for writes (Patroni leader election pending?). Skipping DB sync until next loop: %v", err)
1175+
updateFailed = true
1176+
return nil
1177+
}
1178+
11721179
// Roles and Databases
11731180
if !userInitFailed && !(c.databaseAccessDisabled() || c.getNumberOfInstances(&c.Spec) <= 0 || c.Spec.StandbyCluster != nil || c.restoreInProgress()) {
11741181
c.logger.Debugf("syncing roles")
@@ -1205,12 +1212,16 @@ func (c *Cluster) Update(oldSpec, newSpec *cpov1.Postgresql) error {
12051212

12061213
// Check if we need to call addMonitoringPermissions-func
12071214
if c.Spec.Monitoring != nil && newSpec.Spec.Monitoring != nil && oldSpec.Spec.Monitoring == nil {
1208-
c.addMonitoringPermissions()
1215+
if err := c.addMonitoringPermissions(); err != nil {
1216+
c.logger.Errorf("could not add monitoring permissions: %v", err)
1217+
updateFailed = true
1218+
}
12091219
}
12101220
// Check if Monitoring-Secret needs to be removed
12111221
if newSpec.Spec.Monitoring == nil && oldSpec.Spec.Monitoring != nil {
12121222
if err := c.deleteMonitoringSecret(); err != nil {
1213-
return fmt.Errorf("could not remove the Monitoring secret: %v", err)
1223+
c.logger.Errorf("could not remove the Monitoring secret: %v", err)
1224+
updateFailed = true
12141225
}
12151226
}
12161227

0 commit comments

Comments
 (0)