diff --git a/lib/gat/gatcaddyfile/handler.go b/lib/gat/gatcaddyfile/handler.go index 00c8aaa154d18da7210181d31b3248a136701ec1..49a2cbcd294828bfb7148d11361f3bb085058dc7 100644 --- a/lib/gat/gatcaddyfile/handler.go +++ b/lib/gat/gatcaddyfile/handler.go @@ -162,6 +162,7 @@ func init() { "provider", warnings, ), + ServerMaxConnections: 20, }, } @@ -200,6 +201,26 @@ func init() { return nil, d.WrapErr(err) } module.ReconcilePeriod = caddy.Duration(val) + case "max_connections": + if !d.NextArg() { + return nil, d.ArgErr() + } + + val, err := strconv.Atoi(d.Val()) + if err != nil { + return nil, d.WrapErr(err) + } + module.ServerMaxConnections = val + case "min_connections": + if !d.NextArg() { + return nil, d.ArgErr() + } + + val, err := strconv.Atoi(d.Val()) + if err != nil { + return nil, d.WrapErr(err) + } + module.ServerMinConnections = val case "discoverer": if !d.NextArg() { return nil, d.ArgErr() diff --git a/lib/gat/handlers/discovery/config.go b/lib/gat/handlers/discovery/config.go index 056fa5a5c697bb953ac567aab093818a6b5b8c65..bf61b4d33deff52e76cff966ad260ee77f442d1a 100644 --- a/lib/gat/handlers/discovery/config.go +++ b/lib/gat/handlers/discovery/config.go @@ -19,5 +19,8 @@ type Config struct { ServerSSLMode bouncer.SSLMode `json:"server_ssl_mode,omitempty"` ServerSSL json.RawMessage `json:"server_ssl,omitempty" caddy:"namespace=pggat.ssl.clients inline_key=provider"` + ServerMinConnections int `json:"server_min_connections,omitempty"` + ServerMaxConnections int `json:"server_max_connections,omitempty"` + ServerStartupParameters map[string]string `json:"server_startup_parameters,omitempty"` } diff --git a/lib/gat/handlers/discovery/module.go b/lib/gat/handlers/discovery/module.go index dfd4033f5aecbee923184e9f71c364d11535ec3d..edbe3d392b0f28448d84b7c12733b0c061321a42 100644 --- a/lib/gat/handlers/discovery/module.go +++ b/lib/gat/handlers/discovery/module.go @@ -228,7 +228,9 @@ func (T *Module) addPrimaryNode(user User, database string, primary Node) { SSLConfig: T.sslConfig, Parameters: T.serverStartupParameters, }, - Priority: primary.Priority, + Priority: primary.Priority, + MinConnections: T.ServerMinConnections, + MaxConnections: T.ServerMaxConnections, } p.pool.AddRecipe("primary", &d) } @@ -252,7 +254,9 @@ func (T *Module) addReplicaNodes(user User, database string, replicas map[string SSLConfig: T.sslConfig, Parameters: T.serverStartupParameters, }, - Priority: replica.Priority, + Priority: replica.Priority, + MinConnections: T.ServerMinConnections, + MaxConnections: T.ServerMaxConnections, } rp.AddReplicaRecipe(id, &d) } @@ -271,7 +275,9 @@ func (T *Module) addReplicaNodes(user User, database string, replicas map[string SSLConfig: T.sslConfig, Parameters: T.serverStartupParameters, }, - Priority: replica.Priority, + Priority: replica.Priority, + MinConnections: T.ServerMinConnections, + MaxConnections: T.ServerMaxConnections, } rp.pool.AddRecipe(id, &d) } @@ -308,7 +314,9 @@ func (T *Module) addReplicaNode(user User, database string, id string, replica N SSLConfig: T.sslConfig, Parameters: T.serverStartupParameters, }, - Priority: replica.Priority, + Priority: replica.Priority, + MinConnections: T.ServerMinConnections, + MaxConnections: T.ServerMaxConnections, } if rp, ok := p.pool.(pool.ReplicaPool); ok {