Add possibility to set max db connections

Since it's an important part of a connection pool configuration, allow
to configure max db connections, that pool will open to a target db.
From this numbers several others (like default pool size, min pool size,
reserve) will be deduced, taking into account desired number of instances.
This commit is contained in:
Dmitrii Dolgov
2020-03-03 15:58:33 +01:00
parent 037d7120ef
commit 918df1461b
9 changed files with 122 additions and 24 deletions
+1
View File
@@ -94,6 +94,7 @@ type ConnectionPool struct {
ConnPoolDefaultMemoryRequest string `name:"connection_pool_default_memory_request" default:"100Mi"`
ConnPoolDefaultCPULimit string `name:"connection_pool_default_cpu_limit" default:"3"`
ConnPoolDefaultMemoryLimit string `name:"connection_pool_default_memory_limit" default:"1Gi"`
MaxDBConnections *int32 `name:"connection_pool_max_db_connections" default:"60"`
}
// Config describes operator config
+3 -1
View File
@@ -11,5 +11,7 @@ const (
ConnectionPoolDefaultMemoryRequest = "100Mi"
ConnectionPoolDefaultMemoryLimit = "100Mi"
ConnPoolContainer = 0
ConnPoolContainer = 0
ConnPoolMaxDBConnections = 60
ConnPoolMaxClientConnections = 10000
)
+3 -3
View File
@@ -28,7 +28,7 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
func int32ToPointer(value int32) *int32 {
func Int32ToPointer(value int32) *int32 {
return &value
}
@@ -301,7 +301,7 @@ func (mock *mockDeployment) Get(name string, opts metav1.GetOptions) (*apiappsv1
Name: "test-deployment",
},
Spec: apiappsv1.DeploymentSpec{
Replicas: int32ToPointer(1),
Replicas: Int32ToPointer(1),
Template: v1.PodTemplateSpec{
Spec: v1.PodSpec{
Containers: []v1.Container{
@@ -318,7 +318,7 @@ func (mock *mockDeployment) Get(name string, opts metav1.GetOptions) (*apiappsv1
func (mock *mockDeployment) Patch(name string, t types.PatchType, data []byte, subres ...string) (*apiappsv1.Deployment, error) {
return &apiappsv1.Deployment{
Spec: apiappsv1.DeploymentSpec{
Replicas: int32ToPointer(2),
Replicas: Int32ToPointer(2),
},
ObjectMeta: metav1.ObjectMeta{
Name: "test-deployment",
+16
View File
@@ -141,6 +141,22 @@ func Coalesce(val, defaultVal string) string {
return val
}
// Yeah, golang
func CoalesceInt32(val, defaultVal *int32) *int32 {
if val == nil {
return defaultVal
}
return val
}
func MaxInt32(a, b *int32) *int32 {
if *a > *b {
return a
}
return b
}
// IsSmallerQuantity : checks if first resource is of a smaller quantity than the second
func IsSmallerQuantity(requestStr, limitStr string) (bool, error) {