From 9f9c6c9fe47ca8fd5e8fcdab6c18fbbc1aa342d0 Mon Sep 17 00:00:00 2001 From: Garet Halliday <me@garet.holiday> Date: Wed, 17 Apr 2024 19:31:59 -0500 Subject: [PATCH] min and max connections in caddyfile --- lib/gat/gatcaddyfile/handler.go | 21 +++++++++++++++++++++ lib/gat/handlers/discovery/config.go | 3 +++ lib/gat/handlers/discovery/module.go | 16 ++++++++++++---- 3 files changed, 36 insertions(+), 4 deletions(-) diff --git a/lib/gat/gatcaddyfile/handler.go b/lib/gat/gatcaddyfile/handler.go index 00c8aaa1..49a2cbcd 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 056fa5a5..bf61b4d3 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 dfd4033f..edbe3d39 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 { -- GitLab