Address feedback
Small typo-like fixes and proper installing of a lookup function in all the databases.
This commit is contained in:
parent
4d61adf6b7
commit
cf6541b8cf
|
|
@ -1262,7 +1262,7 @@ func syncResources(a, b *v1.ResourceRequirements) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// Check if we need to synchronize connection pool deploymend due to new
|
||||
// Check if we need to synchronize connection pool deployment due to new
|
||||
// defaults, that are different from what we see in the DeploymentSpec
|
||||
func (c *Cluster) needSyncConnPoolDefaults(
|
||||
spec *acidv1.ConnectionPool,
|
||||
|
|
@ -1283,7 +1283,7 @@ func (c *Cluster) needSyncConnPoolDefaults(
|
|||
*deployment.Spec.Replicas != *config.NumberOfInstances {
|
||||
|
||||
sync = true
|
||||
msg := fmt.Sprintf("NumberOfInstances is different (%d vs %d)",
|
||||
msg := fmt.Sprintf("NumberOfInstances is different (having %d, required %d)",
|
||||
*deployment.Spec.Replicas, *config.NumberOfInstances)
|
||||
reasons = append(reasons, msg)
|
||||
}
|
||||
|
|
@ -1292,7 +1292,7 @@ func (c *Cluster) needSyncConnPoolDefaults(
|
|||
poolContainer.Image != config.Image {
|
||||
|
||||
sync = true
|
||||
msg := fmt.Sprintf("DockerImage is different (%s vs %s)",
|
||||
msg := fmt.Sprintf("DockerImage is different (having %s, required %s)",
|
||||
poolContainer.Image, config.Image)
|
||||
reasons = append(reasons, msg)
|
||||
}
|
||||
|
|
@ -1306,7 +1306,7 @@ func (c *Cluster) needSyncConnPoolDefaults(
|
|||
// updates for new resource values).
|
||||
if err == nil && syncResources(&poolContainer.Resources, expectedResources) {
|
||||
sync = true
|
||||
msg := fmt.Sprintf("Resources are different (%+v vs %+v)",
|
||||
msg := fmt.Sprintf("Resources are different (having %+v, required %+v)",
|
||||
poolContainer.Resources, expectedResources)
|
||||
reasons = append(reasons, msg)
|
||||
}
|
||||
|
|
@ -1321,7 +1321,7 @@ func (c *Cluster) needSyncConnPoolDefaults(
|
|||
|
||||
if ref.Name != c.credentialSecretName(config.User) {
|
||||
sync = true
|
||||
msg := fmt.Sprintf("Pool user is different (%s vs %s)",
|
||||
msg := fmt.Sprintf("Pool user is different (having %s, required %s)",
|
||||
ref.Name, config.User)
|
||||
reasons = append(reasons, msg)
|
||||
}
|
||||
|
|
@ -1329,7 +1329,7 @@ func (c *Cluster) needSyncConnPoolDefaults(
|
|||
|
||||
if env.Name == "PGSCHEMA" && env.Value != config.Schema {
|
||||
sync = true
|
||||
msg := fmt.Sprintf("Pool schema is different (%s vs %s)",
|
||||
msg := fmt.Sprintf("Pool schema is different (having %s, required %s)",
|
||||
env.Value, config.Schema)
|
||||
reasons = append(reasons, msg)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,11 +51,16 @@ const (
|
|||
`
|
||||
)
|
||||
|
||||
func (c *Cluster) pgConnectionString() string {
|
||||
func (c *Cluster) pgConnectionString(dbname string) string {
|
||||
password := c.systemUsers[constants.SuperuserKeyName].Password
|
||||
|
||||
return fmt.Sprintf("host='%s' dbname=postgres sslmode=require user='%s' password='%s' connect_timeout='%d'",
|
||||
if dbname == "" {
|
||||
dbname = "postgres"
|
||||
}
|
||||
|
||||
return fmt.Sprintf("host='%s' dbname='%s' sslmode=require user='%s' password='%s' connect_timeout='%d'",
|
||||
fmt.Sprintf("%s.%s.svc.%s", c.Name, c.Namespace, c.OpConfig.ClusterDomain),
|
||||
dbname,
|
||||
c.systemUsers[constants.SuperuserKeyName].Name,
|
||||
strings.Replace(password, "$", "\\$", -1),
|
||||
constants.PostgresConnectTimeout/time.Second)
|
||||
|
|
@ -70,13 +75,17 @@ func (c *Cluster) databaseAccessDisabled() bool {
|
|||
}
|
||||
|
||||
func (c *Cluster) initDbConn() error {
|
||||
return c.initDbConnWithName("")
|
||||
}
|
||||
|
||||
func (c *Cluster) initDbConnWithName(dbname string) error {
|
||||
c.setProcessName("initializing db connection")
|
||||
if c.pgDb != nil {
|
||||
return nil
|
||||
}
|
||||
|
||||
var conn *sql.DB
|
||||
connstring := c.pgConnectionString()
|
||||
connstring := c.pgConnectionString(dbname)
|
||||
|
||||
finalerr := retryutil.Retry(constants.PostgresConnectTimeout, constants.PostgresConnectRetryTimeout,
|
||||
func() (bool, error) {
|
||||
|
|
@ -275,6 +284,8 @@ func (c *Cluster) installLookupFunction(poolSchema, poolUser string) error {
|
|||
return fmt.Errorf("could not init database connection")
|
||||
}
|
||||
defer func() {
|
||||
// in case if everything went fine this can generate a warning about
|
||||
// trying to close an empty connection.
|
||||
if err := c.closeDbConn(); err != nil {
|
||||
c.logger.Errorf("could not close database connection: %v", err)
|
||||
}
|
||||
|
|
@ -289,6 +300,10 @@ func (c *Cluster) installLookupFunction(poolSchema, poolUser string) error {
|
|||
templater := template.Must(template.New("sql").Parse(connectionPoolLookup))
|
||||
|
||||
for dbname, _ := range currentDatabases {
|
||||
if err := c.initDbConnWithName(dbname); err != nil {
|
||||
return fmt.Errorf("could not init database connection")
|
||||
}
|
||||
|
||||
c.logger.Infof("Install pool lookup function into %s", dbname)
|
||||
|
||||
params := TemplateParams{
|
||||
|
|
@ -325,6 +340,9 @@ func (c *Cluster) installLookupFunction(poolSchema, poolUser string) error {
|
|||
}
|
||||
|
||||
c.logger.Infof("Pool lookup function installed into %s", dbname)
|
||||
if err := c.closeDbConn(); err != nil {
|
||||
c.logger.Errorf("could not close database connection: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
c.ConnectionPool.LookupFunction = true
|
||||
|
|
|
|||
Loading…
Reference in New Issue