Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions pkg/cluster/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -1170,14 +1170,15 @@ func (c *Cluster) Update(oldSpec, newSpec *cpov1.Postgresql) error {
}()

// Ensure the cluster has a leader
leaderNotReady := false
if err := c.waitForLeader(60 * time.Second); err != nil {
c.logger.Infof("Postgres not yet ready for writes (Patroni leader election pending?). Skipping DB sync until next loop: %v", err)
updateFailed = true
return nil
leaderNotReady = true
}

// Roles and Databases
if !userInitFailed && !(c.databaseAccessDisabled() || c.getNumberOfInstances(&c.Spec) <= 0 || c.Spec.StandbyCluster != nil || c.restoreInProgress()) {
if !leaderNotReady && !userInitFailed && !(c.databaseAccessDisabled() || c.getNumberOfInstances(&c.Spec) <= 0 || c.Spec.StandbyCluster != nil || c.restoreInProgress()) {
c.logger.Debugf("syncing roles")
if err := c.syncRoles(); err != nil {
c.logger.Errorf("could not sync roles: %v", err)
Expand Down Expand Up @@ -1211,7 +1212,7 @@ func (c *Cluster) Update(oldSpec, newSpec *cpov1.Postgresql) error {
}

// Check if we need to call addMonitoringPermissions-func
if c.Spec.Monitoring != nil && newSpec.Spec.Monitoring != nil && oldSpec.Spec.Monitoring == nil {
if c.Spec.Monitoring != nil {
if err := c.addMonitoringPermissions(); err != nil {
c.logger.Errorf("could not add monitoring permissions: %v", err)
updateFailed = true
Expand Down
11 changes: 6 additions & 5 deletions pkg/cluster/sync.go
Original file line number Diff line number Diff line change
Expand Up @@ -263,12 +263,13 @@ func (c *Cluster) Sync(newSpec *cpov1.Postgresql) error {

// Check if Cluster has an Leader
needDBAccess := !(c.databaseAccessDisabled() || c.getNumberOfInstances(&newSpec.Spec) <= 0 || c.Spec.StandbyCluster != nil || c.restoreInProgress())
leaderNotReady := false
if err := c.waitForLeader(60 * time.Second); err != nil {
c.logger.Infof("Postgres not yet ready for writes (Patroni leader election pending?). Skipping DB sync until next loop: %v", err)
leaderNotReady = true
}
// create database objects unless we are running without pods or disabled that feature explicitly
if needDBAccess {
if err := c.waitForLeader(60 * time.Second); err != nil {
c.logger.Infof("Postgres not yet ready for writes (Patroni leader election pending?). Skipping DB sync until next loop: %v", err)
return nil
}
if needDBAccess && !leaderNotReady {

c.logger.Debug("syncing roles")
if err = c.syncRoles(); err != nil {
Expand Down
Loading