diff --git a/server/constants/env.go b/server/constants/env.go index 872a382..4656ec9 100644 --- a/server/constants/env.go +++ b/server/constants/env.go @@ -45,6 +45,9 @@ const ( EnvKeyDatabaseCACert = "DATABASE_CA_CERT" // EnvCouchbaseBucket key for env variable COUCHBASE_BUCKET EnvCouchbaseBucket = "COUCHBASE_BUCKET" + // EnvCouchbaseBucketRAMQuotaMB key for env variable COUCHBASE_BUCKET_RAM_QUOTA + // This value should be parsed as number + EnvCouchbaseBucketRAMQuotaMB = "COUCHBASE_BUCKET_RAM_QUOTA" // EnvCouchbaseBucket key for env variable COUCHBASE_SCOPE EnvCouchbaseScope = "COUCHBASE_SCOPE" // EnvKeySmtpHost key for env variable SMTP_HOST diff --git a/server/db/providers/couchbase/provider.go b/server/db/providers/couchbase/provider.go index 9764a2f..c4c2f00 100644 --- a/server/db/providers/couchbase/provider.go +++ b/server/db/providers/couchbase/provider.go @@ -5,6 +5,7 @@ import ( "errors" "fmt" "reflect" + "strconv" "strings" "time" @@ -90,15 +91,23 @@ func NewProvider() (*provider, error) { } func CreateBucketAndScope(cluster *gocb.Cluster, bucketName string, scopeName string) (*gocb.Bucket, error) { + bucketRAMQuotaMB := memorystore.RequiredEnvStoreObj.GetRequiredEnv().CouchbaseBucketRAMQuotaMB + if bucketRAMQuotaMB == "" { + bucketRAMQuotaMB = "1000" + } + bucketRAMQuota, err := strconv.ParseInt(bucketRAMQuotaMB, 10, 64) + if err != nil { + return nil, err + } settings := gocb.BucketSettings{ Name: bucketName, - RAMQuotaMB: 1000, + RAMQuotaMB: uint64(bucketRAMQuota), BucketType: gocb.CouchbaseBucketType, EvictionPolicy: gocb.EvictionPolicyTypeValueOnly, FlushEnabled: true, CompressionMode: gocb.CompressionModeActive, } - err := cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{ + err = cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{ BucketSettings: settings, ConflictResolutionType: gocb.ConflictResolutionTypeSequenceNumber, }, nil) diff --git a/server/env/env.go b/server/env/env.go index 943b2cb..b761650 100644 --- a/server/env/env.go +++ b/server/env/env.go @@ -83,6 +83,7 @@ func InitAllEnv() error { osAwsSecretKey := os.Getenv(constants.EnvAwsSecretAccessKey) osCouchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket) osCouchbaseScope := os.Getenv(constants.EnvCouchbaseScope) + osCouchbaseBucketRAMQuotaMB := os.Getenv(constants.EnvCouchbaseBucketRAMQuotaMB) // os bool vars osAppCookieSecure := os.Getenv(constants.EnvKeyAppCookieSecure) @@ -154,6 +155,13 @@ func InitAllEnv() error { envData[constants.EnvCouchbaseBucket] = osCouchbaseBucket } + if val, ok := envData[constants.EnvCouchbaseBucketRAMQuotaMB]; !ok || val == "" { + envData[constants.EnvCouchbaseBucketRAMQuotaMB] = osCouchbaseBucketRAMQuotaMB + } + if osCouchbaseBucketRAMQuotaMB != "" && envData[constants.EnvCouchbaseBucketRAMQuotaMB] != osCouchbaseBucketRAMQuotaMB { + envData[constants.EnvCouchbaseBucketRAMQuotaMB] = osCouchbaseBucketRAMQuotaMB + } + if val, ok := envData[constants.EnvCouchbaseScope]; !ok || val == "" { envData[constants.EnvCouchbaseScope] = osCouchbaseScope } diff --git a/server/memorystore/required_env_store.go b/server/memorystore/required_env_store.go index 0dfbd32..df60986 100644 --- a/server/memorystore/required_env_store.go +++ b/server/memorystore/required_env_store.go @@ -33,8 +33,9 @@ type RequiredEnv struct { AwsAccessKeyID string `json:"AWS_ACCESS_KEY_ID"` AwsSecretAccessKey string `json:"AWS_SECRET_ACCESS_KEY"` // Couchbase related envs - CouchbaseBucket string `json:"COUCHBASE_BUCKET"` - CouchbaseScope string `json:"COUCHBASE_SCOPE"` + CouchbaseBucket string `json:"COUCHBASE_BUCKET"` + CouchbaseScope string `json:"COUCHBASE_SCOPE"` + CouchbaseBucketRAMQuotaMB string `json:"COUCHBASE_BUCKET_RAM_QUOTA"` } // RequiredEnvObj is a simple in-memory store for sessions. @@ -98,6 +99,7 @@ func InitRequiredEnv() error { awsSecretAccessKey := os.Getenv(constants.EnvAwsSecretAccessKey) couchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket) couchbaseScope := os.Getenv(constants.EnvCouchbaseScope) + couchbaseBucketRAMQuotaMB := os.Getenv(constants.EnvCouchbaseBucketRAMQuotaMB) if strings.TrimSpace(redisURL) == "" { if cli.ARG_REDIS_URL != nil && *cli.ARG_REDIS_URL != "" { @@ -140,24 +142,25 @@ func InitRequiredEnv() error { } requiredEnv := RequiredEnv{ - EnvPath: envPath, - DatabaseURL: dbURL, - DatabaseType: dbType, - DatabaseName: dbName, - DatabaseHost: dbHost, - DatabasePort: dbPort, - DatabaseUsername: dbUsername, - DatabasePassword: dbPassword, - DatabaseCert: dbCert, - DatabaseCertKey: dbCertKey, - DatabaseCACert: dbCACert, - RedisURL: redisURL, - DisableRedisForEnv: disableRedisForEnv, - AwsRegion: awsRegion, - AwsAccessKeyID: awsAccessKeyID, - AwsSecretAccessKey: awsSecretAccessKey, - CouchbaseBucket: couchbaseBucket, - CouchbaseScope: couchbaseScope, + EnvPath: envPath, + DatabaseURL: dbURL, + DatabaseType: dbType, + DatabaseName: dbName, + DatabaseHost: dbHost, + DatabasePort: dbPort, + DatabaseUsername: dbUsername, + DatabasePassword: dbPassword, + DatabaseCert: dbCert, + DatabaseCertKey: dbCertKey, + DatabaseCACert: dbCACert, + RedisURL: redisURL, + DisableRedisForEnv: disableRedisForEnv, + AwsRegion: awsRegion, + AwsAccessKeyID: awsAccessKeyID, + AwsSecretAccessKey: awsSecretAccessKey, + CouchbaseBucket: couchbaseBucket, + CouchbaseScope: couchbaseScope, + CouchbaseBucketRAMQuotaMB: couchbaseBucketRAMQuotaMB, } RequiredEnvStoreObj = &RequiredEnvStore{