[server] Add COUCHBASE_BUCKET_RAM_QUOTA

Resolves #317
This commit is contained in:
Lakhan Samani 2023-02-02 12:43:17 +05:30
parent b7357dde21
commit 642581eefd
4 changed files with 45 additions and 22 deletions

View File

@ -45,6 +45,9 @@ const (
EnvKeyDatabaseCACert = "DATABASE_CA_CERT" EnvKeyDatabaseCACert = "DATABASE_CA_CERT"
// EnvCouchbaseBucket key for env variable COUCHBASE_BUCKET // EnvCouchbaseBucket key for env variable COUCHBASE_BUCKET
EnvCouchbaseBucket = "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 // EnvCouchbaseBucket key for env variable COUCHBASE_SCOPE
EnvCouchbaseScope = "COUCHBASE_SCOPE" EnvCouchbaseScope = "COUCHBASE_SCOPE"
// EnvKeySmtpHost key for env variable SMTP_HOST // EnvKeySmtpHost key for env variable SMTP_HOST

View File

@ -5,6 +5,7 @@ import (
"errors" "errors"
"fmt" "fmt"
"reflect" "reflect"
"strconv"
"strings" "strings"
"time" "time"
@ -90,15 +91,23 @@ func NewProvider() (*provider, error) {
} }
func CreateBucketAndScope(cluster *gocb.Cluster, bucketName string, scopeName string) (*gocb.Bucket, 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{ settings := gocb.BucketSettings{
Name: bucketName, Name: bucketName,
RAMQuotaMB: 1000, RAMQuotaMB: uint64(bucketRAMQuota),
BucketType: gocb.CouchbaseBucketType, BucketType: gocb.CouchbaseBucketType,
EvictionPolicy: gocb.EvictionPolicyTypeValueOnly, EvictionPolicy: gocb.EvictionPolicyTypeValueOnly,
FlushEnabled: true, FlushEnabled: true,
CompressionMode: gocb.CompressionModeActive, CompressionMode: gocb.CompressionModeActive,
} }
err := cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{ err = cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{
BucketSettings: settings, BucketSettings: settings,
ConflictResolutionType: gocb.ConflictResolutionTypeSequenceNumber, ConflictResolutionType: gocb.ConflictResolutionTypeSequenceNumber,
}, nil) }, nil)

8
server/env/env.go vendored
View File

@ -83,6 +83,7 @@ func InitAllEnv() error {
osAwsSecretKey := os.Getenv(constants.EnvAwsSecretAccessKey) osAwsSecretKey := os.Getenv(constants.EnvAwsSecretAccessKey)
osCouchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket) osCouchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket)
osCouchbaseScope := os.Getenv(constants.EnvCouchbaseScope) osCouchbaseScope := os.Getenv(constants.EnvCouchbaseScope)
osCouchbaseBucketRAMQuotaMB := os.Getenv(constants.EnvCouchbaseBucketRAMQuotaMB)
// os bool vars // os bool vars
osAppCookieSecure := os.Getenv(constants.EnvKeyAppCookieSecure) osAppCookieSecure := os.Getenv(constants.EnvKeyAppCookieSecure)
@ -154,6 +155,13 @@ func InitAllEnv() error {
envData[constants.EnvCouchbaseBucket] = osCouchbaseBucket 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 == "" { if val, ok := envData[constants.EnvCouchbaseScope]; !ok || val == "" {
envData[constants.EnvCouchbaseScope] = osCouchbaseScope envData[constants.EnvCouchbaseScope] = osCouchbaseScope
} }

View File

@ -33,8 +33,9 @@ type RequiredEnv struct {
AwsAccessKeyID string `json:"AWS_ACCESS_KEY_ID"` AwsAccessKeyID string `json:"AWS_ACCESS_KEY_ID"`
AwsSecretAccessKey string `json:"AWS_SECRET_ACCESS_KEY"` AwsSecretAccessKey string `json:"AWS_SECRET_ACCESS_KEY"`
// Couchbase related envs // Couchbase related envs
CouchbaseBucket string `json:"COUCHBASE_BUCKET"` CouchbaseBucket string `json:"COUCHBASE_BUCKET"`
CouchbaseScope string `json:"COUCHBASE_SCOPE"` CouchbaseScope string `json:"COUCHBASE_SCOPE"`
CouchbaseBucketRAMQuotaMB string `json:"COUCHBASE_BUCKET_RAM_QUOTA"`
} }
// RequiredEnvObj is a simple in-memory store for sessions. // RequiredEnvObj is a simple in-memory store for sessions.
@ -98,6 +99,7 @@ func InitRequiredEnv() error {
awsSecretAccessKey := os.Getenv(constants.EnvAwsSecretAccessKey) awsSecretAccessKey := os.Getenv(constants.EnvAwsSecretAccessKey)
couchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket) couchbaseBucket := os.Getenv(constants.EnvCouchbaseBucket)
couchbaseScope := os.Getenv(constants.EnvCouchbaseScope) couchbaseScope := os.Getenv(constants.EnvCouchbaseScope)
couchbaseBucketRAMQuotaMB := os.Getenv(constants.EnvCouchbaseBucketRAMQuotaMB)
if strings.TrimSpace(redisURL) == "" { if strings.TrimSpace(redisURL) == "" {
if cli.ARG_REDIS_URL != nil && *cli.ARG_REDIS_URL != "" { if cli.ARG_REDIS_URL != nil && *cli.ARG_REDIS_URL != "" {
@ -140,24 +142,25 @@ func InitRequiredEnv() error {
} }
requiredEnv := RequiredEnv{ requiredEnv := RequiredEnv{
EnvPath: envPath, EnvPath: envPath,
DatabaseURL: dbURL, DatabaseURL: dbURL,
DatabaseType: dbType, DatabaseType: dbType,
DatabaseName: dbName, DatabaseName: dbName,
DatabaseHost: dbHost, DatabaseHost: dbHost,
DatabasePort: dbPort, DatabasePort: dbPort,
DatabaseUsername: dbUsername, DatabaseUsername: dbUsername,
DatabasePassword: dbPassword, DatabasePassword: dbPassword,
DatabaseCert: dbCert, DatabaseCert: dbCert,
DatabaseCertKey: dbCertKey, DatabaseCertKey: dbCertKey,
DatabaseCACert: dbCACert, DatabaseCACert: dbCACert,
RedisURL: redisURL, RedisURL: redisURL,
DisableRedisForEnv: disableRedisForEnv, DisableRedisForEnv: disableRedisForEnv,
AwsRegion: awsRegion, AwsRegion: awsRegion,
AwsAccessKeyID: awsAccessKeyID, AwsAccessKeyID: awsAccessKeyID,
AwsSecretAccessKey: awsSecretAccessKey, AwsSecretAccessKey: awsSecretAccessKey,
CouchbaseBucket: couchbaseBucket, CouchbaseBucket: couchbaseBucket,
CouchbaseScope: couchbaseScope, CouchbaseScope: couchbaseScope,
CouchbaseBucketRAMQuotaMB: couchbaseBucketRAMQuotaMB,
} }
RequiredEnvStoreObj = &RequiredEnvStore{ RequiredEnvStoreObj = &RequiredEnvStore{