From 4b26e1ce85df87e59397e334730be2784e337fc9 Mon Sep 17 00:00:00 2001 From: Lakhan Samani Date: Sun, 5 Feb 2023 11:01:20 +0530 Subject: [PATCH] [server] fix bucket creation for couchbase Run create bucket query only if bucket is not found. Required while running couchbase cloud version --- server/db/providers/couchbase/provider.go | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/server/db/providers/couchbase/provider.go b/server/db/providers/couchbase/provider.go index c4c2f00..f5b697f 100644 --- a/server/db/providers/couchbase/provider.go +++ b/server/db/providers/couchbase/provider.go @@ -107,14 +107,23 @@ func CreateBucketAndScope(cluster *gocb.Cluster, bucketName string, scopeName st FlushEnabled: true, CompressionMode: gocb.CompressionModeActive, } - err = cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{ - BucketSettings: settings, - ConflictResolutionType: gocb.ConflictResolutionTypeSequenceNumber, - }, nil) - bucket := cluster.Bucket(bucketName) - if err != nil && !errors.Is(err, gocb.ErrBucketExists) { - return bucket, err + shouldCreateBucket := false + // check if bucket exists + _, err = cluster.Buckets().GetBucket(bucketName, nil) + if err != nil { + // bucket not found + shouldCreateBucket = true } + if shouldCreateBucket { + err = cluster.Buckets().CreateBucket(gocb.CreateBucketSettings{ + BucketSettings: settings, + ConflictResolutionType: gocb.ConflictResolutionTypeSequenceNumber, + }, nil) + if err != nil && !errors.Is(err, gocb.ErrBucketExists) { + return nil, err + } + } + bucket := cluster.Bucket(bucketName) if scopeName != defaultScope { err = bucket.Collections().CreateScope(scopeName, nil) if err != nil && !errors.Is(err, gocb.ErrScopeExists) {