only add option to set if it differs from effective config
This commit is contained in:
parent
fa98d6748f
commit
e9b46fd06f
|
|
@ -403,7 +403,7 @@ func (c *Cluster) syncStatefulSet() error {
|
||||||
return fmt.Errorf("could not get config for pod %s: %v", podName, err)
|
return fmt.Errorf("could not get config for pod %s: %v", podName, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
instanceRestartRequired, err = c.checkAndSetGlobalPostgreSQLConfiguration(&pod)
|
instanceRestartRequired, err = c.checkAndSetGlobalPostgreSQLConfiguration(&pod, config)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return fmt.Errorf("could not set cluster-wide PostgreSQL configuration options: %v", err)
|
return fmt.Errorf("could not set cluster-wide PostgreSQL configuration options: %v", err)
|
||||||
}
|
}
|
||||||
|
|
@ -487,7 +487,7 @@ func (c *Cluster) AnnotationsToPropagate(annotations map[string]string) map[stri
|
||||||
|
|
||||||
// checkAndSetGlobalPostgreSQLConfiguration checks whether cluster-wide API parameters
|
// checkAndSetGlobalPostgreSQLConfiguration checks whether cluster-wide API parameters
|
||||||
// (like max_connections) have changed and if necessary sets it via the Patroni API
|
// (like max_connections) have changed and if necessary sets it via the Patroni API
|
||||||
func (c *Cluster) checkAndSetGlobalPostgreSQLConfiguration(pod *v1.Pod) (bool, error) {
|
func (c *Cluster) checkAndSetGlobalPostgreSQLConfiguration(pod *v1.Pod, patroniConfig map[string]interface{}) (bool, error) {
|
||||||
var (
|
var (
|
||||||
err error
|
err error
|
||||||
pods []v1.Pod
|
pods []v1.Pod
|
||||||
|
|
@ -496,11 +496,14 @@ func (c *Cluster) checkAndSetGlobalPostgreSQLConfiguration(pod *v1.Pod) (bool, e
|
||||||
|
|
||||||
// we need to extract those options from the cluster manifest.
|
// we need to extract those options from the cluster manifest.
|
||||||
optionsToSet := make(map[string]string)
|
optionsToSet := make(map[string]string)
|
||||||
pgOptions := c.Spec.Parameters
|
desiredConfig := c.Spec.Parameters
|
||||||
|
effectiveConfig := patroniConfig["postgresql"].(map[string]interface{})
|
||||||
|
effectiveParameters := effectiveConfig["parameters"].(map[string]string)
|
||||||
|
|
||||||
for k, v := range pgOptions {
|
for desiredOption, desiredValue := range desiredConfig {
|
||||||
if isBootstrapOnlyParameter(k) {
|
effectiveValue, exists := effectiveParameters[desiredOption]
|
||||||
optionsToSet[k] = v
|
if isBootstrapOnlyParameter(desiredOption) && (effectiveValue != desiredValue || !exists) {
|
||||||
|
optionsToSet[desiredOption] = desiredValue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue