Skip to content

Commit 642581e

Browse files
committed
[server] Add COUCHBASE_BUCKET_RAM_QUOTA
Resolves #317
1 parent b7357dd commit 642581e

File tree

4 files changed

+45
-22
lines changed

4 files changed

+45
-22
lines changed

server/constants/env.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@ const (
4545
EnvKeyDatabaseCACert = "DATABASE_CA_CERT"
4646
// EnvCouchbaseBucket key for env variable COUCHBASE_BUCKET
4747
EnvCouchbaseBucket = "COUCHBASE_BUCKET"
48+
// EnvCouchbaseBucketRAMQuotaMB key for env variable COUCHBASE_BUCKET_RAM_QUOTA
49+
// This value should be parsed as number
50+
EnvCouchbaseBucketRAMQuotaMB = "COUCHBASE_BUCKET_RAM_QUOTA"
4851
// EnvCouchbaseBucket key for env variable COUCHBASE_SCOPE
4952
EnvCouchbaseScope = "COUCHBASE_SCOPE"
5053
// EnvKeySmtpHost key for env variable SMTP_HOST

server/db/providers/couchbase/provider.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"errors"
66
"fmt"
77
"reflect"
8+
"strconv"
89
"strings"
910
"time"
1011

@@ -90,15 +91,23 @@ func NewProvider() (*provider, error) {
9091
}
9192

9293
func CreateBucketAndScope(cluster *gocb.Cluster, bucketName string, scopeName string) (*gocb.Bucket, error) {
94+
bucketRAMQuotaMB := memorystore.RequiredEnvStoreObj.GetRequiredEnv().CouchbaseBucketRAMQuotaMB
95+
if bucketRAMQuotaMB == "" {
96+
bucketRAMQuotaMB = "1000"
97+
}
98+
bucketRAMQuota, err := strconv.ParseInt(bucketRAMQuotaMB, 10, 64)
99+
if err != nil {
100+
return nil, err
101+
}
93102
settings := gocb.BucketSettings{
94103
Name: bucketName,
95-
RAMQuotaMB: 1000,
104+
RAMQuotaMB: uint64(bucketRAMQuota),
96105
BucketType: gocb.CouchbaseBucketType,
97106
EvictionPolicy: gocb.EvictionPolicyTypeValueOnly,
98107
FlushEnabled: true,
99108
CompressionMode: gocb.CompressionModeActive,
100109
}
101-
err := cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{
110+
err = cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{
102111
BucketSettings: settings,
103112
ConflictResolutionType: gocb.ConflictResolutionTypeSequenceNumber,
104113
}, nil)

server/env/env.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ func InitAllEnv() error {
8383
osAwsSecretKey := os.Getenv(constants.EnvAwsSecretAccessKey)
8484
osCouchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket)
8585
osCouchbaseScope := os.Getenv(constants.EnvCouchbaseScope)
86+
osCouchbaseBucketRAMQuotaMB := os.Getenv(constants.EnvCouchbaseBucketRAMQuotaMB)
8687

8788
// os bool vars
8889
osAppCookieSecure := os.Getenv(constants.EnvKeyAppCookieSecure)
@@ -154,6 +155,13 @@ func InitAllEnv() error {
154155
envData[constants.EnvCouchbaseBucket] = osCouchbaseBucket
155156
}
156157

158+
if val, ok := envData[constants.EnvCouchbaseBucketRAMQuotaMB]; !ok || val == "" {
159+
envData[constants.EnvCouchbaseBucketRAMQuotaMB] = osCouchbaseBucketRAMQuotaMB
160+
}
161+
if osCouchbaseBucketRAMQuotaMB != "" && envData[constants.EnvCouchbaseBucketRAMQuotaMB] != osCouchbaseBucketRAMQuotaMB {
162+
envData[constants.EnvCouchbaseBucketRAMQuotaMB] = osCouchbaseBucketRAMQuotaMB
163+
}
164+
157165
if val, ok := envData[constants.EnvCouchbaseScope]; !ok || val == "" {
158166
envData[constants.EnvCouchbaseScope] = osCouchbaseScope
159167
}

server/memorystore/required_env_store.go

Lines changed: 23 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,9 @@ type RequiredEnv struct {
3333
AwsAccessKeyID string `json:"AWS_ACCESS_KEY_ID"`
3434
AwsSecretAccessKey string `json:"AWS_SECRET_ACCESS_KEY"`
3535
// Couchbase related envs
36-
CouchbaseBucket string `json:"COUCHBASE_BUCKET"`
37-
CouchbaseScope string `json:"COUCHBASE_SCOPE"`
36+
CouchbaseBucket string `json:"COUCHBASE_BUCKET"`
37+
CouchbaseScope string `json:"COUCHBASE_SCOPE"`
38+
CouchbaseBucketRAMQuotaMB string `json:"COUCHBASE_BUCKET_RAM_QUOTA"`
3839
}
3940

4041
// RequiredEnvObj is a simple in-memory store for sessions.
@@ -98,6 +99,7 @@ func InitRequiredEnv() error {
9899
awsSecretAccessKey := os.Getenv(constants.EnvAwsSecretAccessKey)
99100
couchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket)
100101
couchbaseScope := os.Getenv(constants.EnvCouchbaseScope)
102+
couchbaseBucketRAMQuotaMB := os.Getenv(constants.EnvCouchbaseBucketRAMQuotaMB)
101103

102104
if strings.TrimSpace(redisURL) == "" {
103105
if cli.ARG_REDIS_URL != nil && *cli.ARG_REDIS_URL != "" {
@@ -140,24 +142,25 @@ func InitRequiredEnv() error {
140142
}
141143

142144
requiredEnv := RequiredEnv{
143-
EnvPath: envPath,
144-
DatabaseURL: dbURL,
145-
DatabaseType: dbType,
146-
DatabaseName: dbName,
147-
DatabaseHost: dbHost,
148-
DatabasePort: dbPort,
149-
DatabaseUsername: dbUsername,
150-
DatabasePassword: dbPassword,
151-
DatabaseCert: dbCert,
152-
DatabaseCertKey: dbCertKey,
153-
DatabaseCACert: dbCACert,
154-
RedisURL: redisURL,
155-
DisableRedisForEnv: disableRedisForEnv,
156-
AwsRegion: awsRegion,
157-
AwsAccessKeyID: awsAccessKeyID,
158-
AwsSecretAccessKey: awsSecretAccessKey,
159-
CouchbaseBucket: couchbaseBucket,
160-
CouchbaseScope: couchbaseScope,
145+
EnvPath: envPath,
146+
DatabaseURL: dbURL,
147+
DatabaseType: dbType,
148+
DatabaseName: dbName,
149+
DatabaseHost: dbHost,
150+
DatabasePort: dbPort,
151+
DatabaseUsername: dbUsername,
152+
DatabasePassword: dbPassword,
153+
DatabaseCert: dbCert,
154+
DatabaseCertKey: dbCertKey,
155+
DatabaseCACert: dbCACert,
156+
RedisURL: redisURL,
157+
DisableRedisForEnv: disableRedisForEnv,
158+
AwsRegion: awsRegion,
159+
AwsAccessKeyID: awsAccessKeyID,
160+
AwsSecretAccessKey: awsSecretAccessKey,
161+
CouchbaseBucket: couchbaseBucket,
162+
CouchbaseScope: couchbaseScope,
163+
CouchbaseBucketRAMQuotaMB: couchbaseBucketRAMQuotaMB,
161164
}
162165

163166
RequiredEnvStoreObj = &RequiredEnvStore{

0 commit comments

Comments
 (0)